Available with Aviation Charting license.
The following information describes advanced concepts for those who want to understand more about how AIXM features are imported based on the configuration files supplied with the ArcGIS Aviation Charting extension. You may never need to edit these files, but you can modify them to better support your AIXM 5.1 data or to accommodate a customized aeronautical information system (AIS) geodatabase.
Caution:
It is recommended that you create backup copies of the outlined configuration files before editing them to avoid data loss.
You can use the Import AIXM 5.1 Message tool to customize how AIXM features are imported to an AIS schema geodatabase. The ArcGIS Aviation Charting extension for ArcGIS Pro contains resource files that you can use to configure the Aviation Charting extension. There are two configuration files that are necessary for importing AIXM data to a default AIS geodatabase: AIXM51SpecConfig.json and AIXM51WriterConfig.json. Understanding how to edit these configuration files is important, since you may need to extend the AIS implementation to accommodate additional information in the AIXM data.
Both of these configuration files are located in <ArcGIS Pro installation location>\Resources\Aviation.
Note:
The default installation directory for ArcGIS Pro is C:\Program Files\ArcGIS\Pro.
Note:
Only the AIXM51WriterConfig.json and AIXM51SpecConfig.json files are used in the Import AIXM 5.1 Message tool.
AIXM51SpecConfig.json
The AIXM51SpecConfig.json file determines the AIXM features that are imported to an AIS geodatabase and how those features relate to one another.
The file is organized by AIXM feature names, each followed by a feature configuration object. Data in this configuration file is written in key-value pairs. A feature configuration object can contain the key values outlined in the following tables: Basic configuration keys, Relationships configuration keys, and Advanced configuration keys.
Note:
All of the contents of the AIXM51SpecConfig.json file must be lowercase with no exceptions.
Basic configuration keys
The following table describes the keys that can be configured for most features:
Key | Description |
---|---|
source_id_field | The unique identifier that associates the target AIXM feature with an AIS geodatabase feature. The value can be a descendent element of the target feature or an attribute on the target feature. It must be configured for every feature. |
geometry | The element name that contains the geometry. This value should only be configured for features that write to an AIS feature class. The geometry value can be an AIXM or GLM element and can contain descendent point, line, or polygon geometry elements. The geometry data automatically writes to the associated feature class. Review AIXM51WriterConfig.json for more information. |
Relationships configuration keys
The Relationships object is defined on a target feature where values are inherited from the ancestor or descendent elements to the target feature. The extracted field values become associated with the target feature and become accessible in the AIXM51WriterConfig.json file as if they were local target feature field values. Review the sections below for more information about how field data is written to the AIS tables:
The following table describes the relationship keys:
Key | Description |
---|---|
relationships | An object that defines the parent, child, and reference relationships associated with the AIXM feature. |
parent | A subobject that defines key-value pairs. This key propagates values from ancestor AIXM features to the target feature level. Each key references an ancestor name. Each key’s value references a descendant under that ancestor. The descendant’s value is captured as a field value. When the AIXM51WriterConfig file processes the target feature, the captured field values can be written to the AIS dataset by referencing the key. The parent key references the most root ancestor using the “/” notation. Do not configure this key value for high-level AIXM features with no ancestors, such as adhp and routesegment. |
child | A subobject that defines key-value pairs. This key inherits values from descendent AIXM features to the target feature level. Each key references a descendent name. Each key’s value references a child descendant under that key descendant. The child descendant’s value is captured as a field value. When the AIXM51WriterConfig file processes the target feature, the captured field values can be written to the AIS table by referencing the key. The child key captures an .href attribute value. |
reference | A subobject that defines key-value pairs. The only key supported is “../” and it enables the target AIXM feature to store the referenced feature. The key’s value must always be blank. The reference feature is the first ancestor that is recognized as an AIXM feature in the AIXM51SpecConfig.json file. The reference feature is automatically determined by the importer. In most cases, the reference feature is the immediate parent, an ancestor, or the most root ancestor. In some cases, the reference feature can be the descendent of a common ancestor. Review the referenced_by_elements key in the following table for more information. |
Advanced configuration keys
The following table describes the advanced keys:
Key | Description |
---|---|
ancestor_fields | Propagates values from a descendant element of a common ancestor to the target feature level. Each entry has two parts separated by a forward slash:
When the AIXM51WriterConfig file processes the target feature, the captured field values can be written to the AIS dataset by referencing one of the ancestor_fields entries. Caution:The use of ancestor_fields may slow the performance of the AIXM importer under certain conditions. This may occur when it is configured on target features that can occur repeatedly in a main feature. For example, ancestor_fields configured on Notes, which can occur repeatedly in an Airspace or other main feature, may slow the import if there were an excessive number of Notes. |
element_names | Defines a list of element names related to the target ancestor that can be stored as AIS attribute values. Element names that exist as an ancestor or descendent relative to the target AIXM feature are stored in the AIS target dataset as an attribute value in an attribute field of the same name. |
referenced_by_elements | Defines a list of paths that modify the reference relationship of the target AIXM feature specified in each path. The target AIXM features in the list reference this target feature instead of their immediate parent, ancestor, or most root ancestor. The Relationships reference key must be defined in the listed target AIXM feature for referenced_by_elements to have an effect. |
AIXM51SpecConfig.json format for basic, relationships, and advanced keys
The following is an example format of the basic, relationships, and advanced keys for the AIXM51SpecConfig.json file:{
"targetaixmfeature_1": {
"geometry": "descendent of aixmfeature_1 having the geometry",
"relationships": {
"parent": {
"/": "the element, under the most root parent, having the identifier",
"ancestor1_of_targetaixmfeature_1": "an .attribute at ancestor1_of_targetaixmfeature_1",
"ancestor2_of_targetaixmfeature_1": "a descendent element under ancestor2_of_targetaixmfeature_1"
}
},
"source_id_field": "a descendent element of targetaixmfeature_1 having the identifier"
},
"targetaixmfeature_2": {
"geometry": "descendent of aixmfeature_2 having the geometry",
"relationships": {
"child": {
"descendent_1_of_targetaixmfeature_2": "an .attribute at descendent_1_of_targetaixmfeature_2",
"descendent_2_of_targetaixmfeature_2": "a descendent element under descendent_2_of_targetaixmfeature_2"
}
},
"source_id_field": "an .attribute at targetaixmfeature_2 having the identifier"
},
"targetaixmfeature_3": {
"relationships": {
"parent": {
"/": "the element, under the most root parent, having the identifier"
},
"reference": {
"../": "leave this blank"
}
},
"source_id_field": "a descendent element.attribute of targetaixmfeature_3 having the identifier"
},
"targetaixmfeature_4": {
"relationships": {
"parent": {
"/": "the element, under the most root parent, having the identifier"
}
},
"referenced_by_elements": [
"ancestor/targetaixmfeature_3"
],
"source_id_field": " a descendent element of targetaixmfeature_4 having the identifier "
}
}
AIXM51SpecConfig.json shorthand table
The AIXM51SpecConfig.json file uses shorthand notation to simplify the values in JSON. The following table describes the shorthand notation used in this file:
Shorthand notation | Description |
---|---|
/ | The most root parent object of the AIXM feature. The value refers to the element name that is under the most root parent that has its identifier. Review the parent relationship key above for more information. It is configured in the parent relationship object only and used to link AIXM subfeatures to AIXM root features. Do not use this notation for AIXM root features with no ancestors, such as airportheliport. |
../ | An alias that captures the reference AIXM feature. This key has no value because the reference feature is automatically determined by the importer. It is an advanced configuration used on target subfeatures, such as notes, that can be linked to a reference feature. A reference feature is the first ancestor in the AIXM51SpecConfig.json file that is an AIXM feature. The reference feature can be the immediate parent, an ancestor, or the most root parent. Review the relationship keys and referenced_by_elements key above for more information. |
. | Notation used to access an attribute in an element. |
@ | Keys prepended with the @ character load before all other features in the AIXM message. The data is associated with the identifier specified in source_id_field and is available as additional data when the feature with that identifier is referenced. This allows data to become available across AIXM features when an AIS geodatabase requires data to be populated from two separate AIXM features. |
Code sample
The following code sample shows the association between features in the AIXM51SpecConfig.json file:"airspacevolumedependency": { // The target AIXM feature.
"relationships": { // All ancestor/child relationships for the target AIXM feature.
"parent": { // All relationships with an ancestor.
"/": "identifier",
"geometrycomponent": "operation",
"airspacegeometrycomponent": "operationsequence"
}
},
"source_id_field": ".id" // The attribute representing the unique identifier linking the AIS feature back to the source AIXM data.
}
The code sample above can be visualized in the following diagram:
In this case, the target AIXM feature is airspacevolumedependency. The relationships/parents key defines three ancestor features in the AIXM hierarchy that are included in the AIS geodatabase. Each of these ancestor features is referenced by a unique value in the AIXM feature: identifier for the most root primary object, operation for the geometrycomponent feature, and operationsequence for the airspacegeometrycomponent feature.
Note:
Several ancestor AIXM features do not have a specific association with the target AIXM feature. You can create an association between an ancestor AIXM feature and the target AIXM feature with an unused ancestor field by adding a line in the parent key in the AIXM51SpecConfig.json file.
The .id attribute of the target AIXM feature is assigned to the source_id_field key, meaning that the .id attribute is used as the unique identifier linking that AIS feature back to the source AIXM 5.1 message. Typically, this value is used to populate the clientkey_id field in the destination AIS association table.
AIXM51WriterConfig.json
The AIXM51WriterConfig.json file determines how AIXM features are mapped to features in an AIS schema geodatabase. Values in this file are written in key-value pairs. A feature configuration object can contain the key values outlined in the following tables: Basic configuration keys and Advanced configuration keys.
Domain key-value entries should be expressed in their original case from their respective source. Domain keys should be expressed in the original case from the AIXM specification, and domain values should be expressed in the original case from the AIS schema. Aside from domain entries, all the contents of the AIXM51WriterConfig.json file should be lowercase.
Basic configuration keys
The following table describes the keys that can be configured for most features:
Key | Description |
---|---|
fields | The AIXM attributes that are mapped to fields in the AIS geodatabase feature class. |
field_name | The name of the attribute in the AIS geodatabase where the target AIXM attribute is written. |
domain | An optional key-defining coded value domain for the field in the AIS geodatabase. |
table_name | The name of the table or feature class in the AIS geodatabase where the target AIXM feature is written. |
The AIXM51WriterConfig.json file uses shorthand notation to simplify the values in JSON. The following table describes the shorthand notation used in the file:
Shorthand notation | Description |
---|---|
/ | The most root parent object of the AIXM feature. |
/_ | The AIS dataset name of the most root parent object of the AIXM feature. This is typically used to populate the referenceclass_txt attribute in an AIS dataset. |
../ | The reference feature of the AIXM feature. This populates the reference_id attribute in an AIS dataset for features that are configured in the AIXM51SpecConfig file to capture the reference feature. Review the Relationships reference key for more information. |
../_ | The AIS dataset name of the reference feature. This populates the referenceclass_txt attribute in an AIS dataset for features that are configured in the AIXM51SpecConfig file to capture the reference feature. Review the Relationships reference key for more information. |
_ | The name of the input AIXM feature. This populates a field in the AIS dataset with the name of the source AIXM feature. |
. | Notation used to access an attribute in an element. |
Code sample
The following code sample shows how the AIXM51WriterConfig.json file maps AIXM attributes to features in an AIS geodatabase: "airspacevolumedependency": { // The source AIXM 5.1 feature.
"fields": { // The AIXM attributes that will be mapped to fields in the AIS geodatabase.
"/": {
"field_name": "firstmember_id"
},
"theairspace.href": {
"field_name": "secondmember_id"
},
"geometrycomponent": {
"field_name": "opr_code"
},
"airspacegeometrycomponent": {
"field_name": "numseq_val"
},
"airspacevolumedependency.id": {
"field_name": "clientkey_id"
},
"dependency": {
"domain": { // A coded value domain for the opr_code field.
"horz_projection": "sameext"
},
"field_name": "opr_code"
}
},
"table_name": "airspaceassociation" // The target AIS feature.
},
The code sample above is visualized in the following diagram:
In this case, the target airspaceassociation feature class in the target AIS geodatabase is populated with attributes from the source AIXM feature. The values /, geometrycomponent, and airspacegeometrycomponent are defined in the AIXM51SpecConfig.json file, so they are included in the source AIXM feature. In addition to the attributes from the AIXM51SpecConfig.json file, a dependency key is defined with a coded value domain. This domain is mapped to the opr_code field in the target AIS geodatabase. Domain mapping is an optional configuration step in which AIXM values are different from AIS values with the same meaning, for example, "no" versus "0" or "BLUE" versus "BLU".
Advanced configuration key
The following table describes the advanced key used in this file:
Key | Description |
---|---|
external | An optional Boolean type used to identify associations between two AIXM features in which an external AIXM feature refers to the primary AIXM feature. The external key operates on the following JSON keys:
Refer to the below code sample for more information. The import processor identifies the link association between the primary and external features when external is set to true. If the link association is found in the source, the external feature's GFID is written to the destination field name in the Primary Features table. Note:The AIXM source data must contain an instance of the external feature that refers to the primary feature's ID for the external key to be effective. |
Code sample
The following code sample shows how to configure the external key:"verticalstructure": { //The primary AIXM Feature name
"fields": {
"obstaclearea": { //The external feature name. The referring feature.
"external": true,
"field_name": "obstaclearea_id" //The destination database attribute field name
},
"elevation": { //A regular AIXM attribute
"field_name": "elev_val"
}
},
"table_name": “obstaclestructure” //The destination table
}
When a verticalstructure feature is processed, the system checks for an obstaclearea feature in the AIXM source that refers to the current verticalstructure. If an association is found, the GFID of that obstaclearea is written to the obstaclearea_id destination attribute in the obstaclestructure destination table.
Edit the AIXM51WriterConfig.json file
The following workflow describes how to edit a single feature in the AIXM51WriterConfig.json file. It demonstrates how to edit a single feature, but you can apply this at scale to as many features as necessary.
Caution:
It is recommended that you make backup copies of the configuration files before editing them to avoid data loss.
- Open the AIXM51WriterConfig.json file in a plain text editor.
- Locate the airportheliport key in the .json file.
- Locate the certifiedicao key under airportheliport.
- Change the values in the fields key to change how the Import AIXM 51 Message tool imports AIXM data to an AIS schema geodatabase.
For example, consider the following value:
"certifiedicao": { "domain": { "no": "0", "other": "2", "yes": "1" }, "field_name": "certifiedicao_txt" },
In this value, the certifiedicao AIXM field maps to the certifiedicao_txt field in the ADHP feature class. Additionally, key-value pairs for coded value domain values are configured for the field.
- Change the value in the field_name key to change the target attribute in the AIS geodatabase's ADHP feature class.
- Save the AIXM51WriterConfig.json file.
You can now run the Import AIXM 51 Message tool with this file to create AIS geodatabase schema features from the input AIXM features.