Milsymbol Mapping: Difference between revisions

From Maria GDK Wiki
Jump to navigation Jump to search
()
No edit summary
 
(10 intermediate revisions by the same user not shown)
Line 7: Line 7:
=== Get Mapped SIDC from SIDC ===
=== Get Mapped SIDC from SIDC ===
<source lang="c#">
<source lang="c#">
var factory = new DrawObjectCommonFactory();
var resources= new DrawObjectCommonResources(...);


// Get APP6D sidc from MIL-STD-2525C SIDC
// Get APP6D sidc from 15 character MIL-STD-2525C sidc
var id_d = factory.MilSymMapper.GetMilSymSIDCFromMilSymSIDC("TACGRP.C2GM.DEF.ARS.BTLPSN", Mapping.MilSymType.APP6D);
var id_d = resources.MilSymMapper.MapAPP6CToAPP6D("SUGPUSTA--A----");


// Get MIL-STD-2525C sidc from APP6D sidc
// Get APP6D sidc from APP6C hierarchy code.
var id_c = factory.MilSymMapper.GetMilSymSIDCFromMilSymSIDC("30002500001512000000", Mapping.MilSymType.MILSTD2525C);
var id_d = MapAPP6CHierarchyCodeToAPP6D("TACGRP.CSS.PNT.SPT.GNL");
</source>
 
=== Get Mapped TypeId from SIDC ===
<source lang="c#">
var factory = new DrawObjectCommonFactory();


// Get APP6D TypeId from MIL-STD-2525C sidc
// Get 15 character MIL-STD-2525C sidc from APP6D sidc  
var typeId_d = factory.MilSymMapper.GetDrawObjectTypeId("TACGRP.C2GM.DEF.ARS.BTLPSN", Mapping.MilSymType.APP6D);
var id_c = resources.MilSymMapper.MapAPP6DToAPP6C("100301000011010400000000000000");


// Get MIL-STD-2525C TypeId from APP6D sidc
// Get APP6C hierarchy code from APP6D sid.
var typeId_c = factory.MilSymMapper.GetDrawObjectTypeId("30002500001512000000", Mapping.MilSymType.MILSTD2525C);
var id_c = MapAPP6DToAPP6CHierarchyCode("100025000032050000000000000000");
</source>


=== Get Mapped SIDC from TypeId ===
The MilSymMapper can alsp be created without using the DrawObjectCommonResources:
<source lang="c#">
var factory = new DrawObjectCommonFactory();


// Get APP6D sidc from TypeId
var milsymMapper = new MilSymMapper();
var id_d = factory.MilSymMapper.GetMilSymSIDCFromTypeId(new Guid("88784e27-c8d4-46d8-a72f-4fc433c759ee"), Mapping.MilSymType.APP6D);


// Get MIL-STD-2525C sidc from TypeId
var id_c = factory.MilSymMapper.GetMilSymSIDCFromTypeId(new Guid("88784e27-c8d4-46d8-a72f-4fc433c759ee"), Mapping.MilSymType.MILSTD2525C);
</source>
</source>


=== How to Create MilSymMapper Without Factory ===
=== Handling Mismatches Between APP6D and MIL-STD2525C ===
<source lang="c#">
var mappingDrawObjectTypeXmlParser = new MappingDrawObjectTypeXmlParser();
var mappingDrawObjectTypeLoader = new MappingDrawObjectTypeLoader(mappingDrawObjectTypeXmlParser);
var activesymbolset = "APP6D";
var milSymMapper = new MilSymMapper(mappingDrawObjectTypeLoader, activesymbolset);
</source>


=== Handling Mismatches Between APP6D and MIL-STD2525C ===
There are two files handeling mapping between APP6C and APP6D.....


Some objects cannot be mapped directly between APP6D and MIL-STD2525C. Either because the primitive representation of the objects are not compatible or because the objects are not present in both versions.
Some objects cannot be mapped directly between APP6D and MIL-STD2525C. Either because the primitive representation of the objects are not compatible or because the objects are not present in both versions.
To handle this, the configuration file MilSymVersionMappings.json (located in the Data folder of the application output), sets up how these objects (SIDCs) should be mapped.
To handle this, the configuration file MilSymVersionMappings.json (located in the Data folder of the application output), sets up how these objects (SIDCs) should be mapped.  


Entries in the configuration file looks like this:
The file is divided into two sections:


<source lang="json">
*HierarchyCodeMappings, for mapping a 20 digit APP6D SIDC to a MARIA GDK 4 draw object (MIL-STD2525C) hierarchy code, and vice versa
{
*SymbolCodeMappings, for mapping a 20 digit APP6D SIDC to a 15 character MIL-STD2525C SIDC, and vice versa
      "SourceVersion": "APP6D",
      "TargetVersion": "MILSTD2525C",
      "Name": "Minimum Safe Distance Zones",
      "Source": "30002500002721000000",
      "Target": "GENERIC.ELLIPSE",
      "ObjectType": "MultiFanArea"
}
</source>


The values in an entry are:
Entries in each section of the configuration file looks like this:


{| class="wikitable"
! Name
! Description
|-
| '''SourceVersion'''
| Version to map from.
|-
| '''TargetVersion'''
| Version to map to.
|-
| '''Name'''
| Name of object (for readability only, does not affect mapping).
|-
| '''Source'''
| SIDC to map from.
|-
| '''Target'''
| SIDC to map to.
|-
| '''ObjectType'''
| Primitive type of object (for readability only, does not affect mapping).
|}


The entries in the configuration file can be edited to whatever is the best match for the client application, as long as the primitive representation of the objects are compatible.


[[Category:GDK5]]
[[Category:GDK5]]

Latest revision as of 09:02, 20 October 2025

Milsymbol Mapping

The "MilSymMapper" class provides methods for mapping draw object SIDC and TypeId between the milsymbol versions: APP6D, MIL-STD-2525D, and MIL-STD-2525C.

Examples of Usage

These examples maps the Battle Position type.

Get Mapped SIDC from SIDC

var resources= new DrawObjectCommonResources(...);

// Get APP6D sidc from 15 character MIL-STD-2525C sidc
var id_d = resources.MilSymMapper.MapAPP6CToAPP6D("SUGPUSTA--A----");

// Get APP6D sidc from APP6C hierarchy code.
var id_d = MapAPP6CHierarchyCodeToAPP6D("TACGRP.CSS.PNT.SPT.GNL");

// Get 15 character MIL-STD-2525C sidc from APP6D sidc 
var id_c = resources.MilSymMapper.MapAPP6DToAPP6C("100301000011010400000000000000");

// Get APP6C hierarchy code from APP6D sid.
var id_c = MapAPP6DToAPP6CHierarchyCode("100025000032050000000000000000");

The MilSymMapper can alsp be created without using the DrawObjectCommonResources:

var milsymMapper = new MilSymMapper();

Handling Mismatches Between APP6D and MIL-STD2525C

There are two files handeling mapping between APP6C and APP6D.....

Some objects cannot be mapped directly between APP6D and MIL-STD2525C. Either because the primitive representation of the objects are not compatible or because the objects are not present in both versions. To handle this, the configuration file MilSymVersionMappings.json (located in the Data folder of the application output), sets up how these objects (SIDCs) should be mapped.

The file is divided into two sections:

  • HierarchyCodeMappings, for mapping a 20 digit APP6D SIDC to a MARIA GDK 4 draw object (MIL-STD2525C) hierarchy code, and vice versa
  • SymbolCodeMappings, for mapping a 20 digit APP6D SIDC to a 15 character MIL-STD2525C SIDC, and vice versa

Entries in each section of the configuration file looks like this: