Update the Import AIXM 5.1 Message configuration files

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 into an AIS schema geodatabase. When you install ArcGIS Pro with the ArcGIS Aviation Charting extension, you are also installing several 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 the <ArcGIS Pro installation location>/Resources/Aviation folder.

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.

Basic configuration keys

The following table describes the keys that can be configured for most features:

KeyDescription

source_id_field

The source_id_field value is the unique identifier that associates the target AIXM feature to 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 geometry value is the element name in the target feature 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 gml 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 when there is a need to extract values from the ancestor or descendent elements of the target feature. The extracted field values become associated with the target feature and become accessible by the AIXM51WriterConfig.json file as if they were local target feature field values. Review the AIXM51WriterConfig.json and AIXM51SpecConfig.json sections below for details about how field data is written to the AIS tables.

The following table describes the relationships keys:

KeyDescription

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 is used for propagating values from ancestor AIXM features to make them available at the target feature level.

Each key refers to an ancestor name. Each key’s value refers to a descendant under that ancestor. The descendant’s value is captured as a field value. When the AIXM51WriterConfig file processes this target feature, the captured field values can be written to the AIS dataset by referring to the key.

The parent key is used to get a reference to the most root ancestor by 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 is used for inheriting values from descendent AIXM features to make them available at the target feature level.

Each key refers to a descendent name. Each key’s value refers to a child descendant under that key descendant. The child descendant’s value is captured as a field value. When the AIXM51WriterConfig file processes this target feature, the captured field values can be written to the AIS table by referencing the key.

The child key is used to capture an .href attribute value.

Advanced configuration keys

The following table describes the advanced keys:

KeyDescription

ancestor_fields

The ancestor_fields value is a list of paths. Each path refers to two things:

  • An ancestor
  • An element or attribute under that ancestor

It is used for propagating values from ancestor AIXM features to make them available at the target feature level. Each path has two parts:

  • The ancestor element, which is the most root element
  • The terminal element or attribute path that refers to a value to capture

When the AIXM51WriterConfig file processes this target feature, the captured field values can be written to the AIS dataset by referencing one of the ancestor_fields entries.

element_names

element_names key 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 data set as an attribute value in an attribute field of the same name.

AIXM51SpecConfig.json format for basic, relationships, and advanced keys

The following format is an example 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" 
  }, 
}

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 notationDescription

/

The / key is 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.

../

The ../ key is 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 that is an AIXM feature that is recognized in the AIXM51SpecConfig.json file. 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.

.

The dot (.) notation is used to access an attribute in an element.

@

Keys that are prepended with the @ character are loaded 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 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 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 can be visualized as shown in the following diagram:

Diagram showing the association between features in the AIXM51SpecConfig.json file

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. The following table describes the general format of values in this file:

KeyDescription
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 this file:

Shorthand notationDescription
/

The most root parent object of the AIXM feature.

/_

The AIS dataset name of the most root parent object of the AIXM feature. Typically used to populate the referenceclass_txt attribute in an AIS dataset.

_

The name of the input AIXM feature. This allows you to populate a field in the AIS geodatabase with the name of the source AIXM feature.

.

The dot (.) notation is used to access an attribute in an element.

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 can be visualized as shown in the following diagram:

Diagram showing how the AIXM51WriterConfig.json file maps AIXM attributes to features in an AIS geodatabase

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".

Edit the AIXM51WriterConfig.json file

This workflow describes how to edit the AIXM51WriterConfig.json file to fit your organization's needs. This workflow 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 create backup copies of the outlined configuration files before editing them to avoid data loss.

  1. Open the AIXM51WriterConfig.json file in a plain text editor.
  2. Locate the airportheliport key in the .json file.
  3. Locate the certifiedicao key under airportheliport.
  4. 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 is mapped to the certifiedicao_txt field in the ADHP feature class. Additionally, key-value pairs for coded value domain values are configured for the field.

  5. Change the value on the field_name key to change the target attribute in the AIS geodatabase's ADHP feature class.
  6. 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.

Related topics