Custom Esri attributes for AIXM elements

Available with Aviation Charting license.

The following are Esri defined attributes that can be used in an Aeronautical Information Exchange Model (AIXM) XML element to control how the template file is translated into the final AIXM output. These attributes are removed during the export process and don’t display in the final exported AIXM.

Caution:

It is recommended that you create backup copies of the outlined configuration files before editing them to avoid data loss.

removeIfOnlyAttributes

The removeIfOnlyAttributes attribute removes the AIXM element from the output if the element content in bracket markup ({}) is empty. If the element content contains empty nested elements, the element is also removed. The removeIfOnlyAttributes attribute value can be set to true or false. The value is set to false by default.

In the example below, if {elev_val} is empty, only the uom attribute remains in the aixm:fieldElevation element. Rather than writing the empty AIXM element, the exporter removes aixm:fieldElevation from the output because it only has attributes and no element content.


<aixm:fieldElevation removeIfOnlyAttributes="true" uom="{vertdist_uom}">
    {elev_val}
</aixm:fieldElevation>

removeIfEmptyAttribute

The removeIfEmptyAttribute attribute is used in self-closing elements and removes the AIXM element from the output if the referenced attribute value is empty. The removeIfEmptyAttribute attribute value points to another attribute in the same element.

For example, If {adhp.clientkey_id} is empty, the aixm:associatedAirportHeliport element is removed from the output:

<aixm:associatedAirportHeliport removeIfEmptyAttribute="xlink:href" xlink:href="{adhp.clientkey_id}" />

Basic duplicate

The basic duplicate attribute creates copies of the AIXM feature that the duplicate attribute is set on. The duplicate attribute value is defined by the AIS table’s unique ID. This is the clientkey_id or objectid value from the referenced AIS table. For each row of data from the related AIS table, a new copy of the AIXM feature is added to the template location. Each instance of the duplicated feature is populated from one row of related data.

In the basic duplicate sample below, notes is duplicated in an adhp table. The aixm:annotation element is duplicated in aixm:AirportHeliportTimeSlice for every row of related notes data. The bracketed fields contained in aixm:annotation that refer to related notes table fields, such as {notes.note_txt} are substituted with related data from a notes row:

<adhp>
  <aixm:AirportHeliport gml:id="{adhp.clientkey_id}">
    <aixm:timeSlice>
      <aixm:AirportHeliportTimeSlice gml:id="{guid}">
        <aixm:annotation duplicate="notes.objectid">
          <aixm:Note removeIfOnlyAttributes="true" gml:id="{guid}">
            <aixm:propertyName>{notes.a51propname_txt}</aixm:propertyName>
            <aixm:purpose>{notes.type_code}</aixm:purpose>
            <aixm:translatedNote>
              <aixm:LinguisticNote removeIfOnlyAttributes="true" gml:id="{guid}">
                <aixm:note>{notes.note_txt}</aixm:note>
              </aixm:LinguisticNote>
            </aixm:translatedNote>
          </aixm:Note>
        </aixm:annotation>
      </aixm:AirportHeliportTimeSlice>
    </aixm:timeSlice>
  </aixm:AirportHeliport>
</adhp>

Advanced duplicate

The advanced duplicate attribute functionality can be customized further to allow duplicate features to be placed in custom locations. Related data with the same unique ID can be directed to write to different parts of the XML structure depending on the data row’s source_xpath value. This can be achieved by configuring two additional attributes: matchXPath and rowXPath.

The following list describes the duplicate, rowXPath, and matchXPath attribute values:

  • duplicate—The unique table ID of a related AIS table. This is the clientkey_id or objectid value from the related AIS table.
  • rowXPath—The fully qualified source attribute name, such as notes.source_xpath, containing an xpath indicating the specific AIXM element location of the data to export.
  • matchXPath—The xpath value to filter data rows that will be appended to the element location. Source data with matching rowXPath values will be written. This value can be set to “auto”, which automatically matches the xpath of the given duplicate element's location in the template.

This example shows how notes related data with the same points_notes_oid unique identifier can be directed to write to different locations in the template. Depending on the value in notes.source_xpath for a given data row, a note writes to either location:

  • VerticalStructurePart/annotation
  • ElevatedPoint/annotation
Note:

If the note’s source_xpath value is verticalstructurepart/annotation, the note writes to VerticalStructurePart/annotation. If the note’s source_xpath is elevatedpoint/annotation, the note writes to ElevatedPoint/annotation.

Review parameterized referenced templates to learn how this duplicate functionality can be condensed.

Note:

This example was shortened for clarity.


<obstaclestructure>
  <aixm:VerticalStructure>
    <timeSlice>
      <aixm:VerticalStructureTimeSlice>
        <part>
          <aixm:VerticalStructurePart>
            <aixm:annotation duplicate="point_notes_oid" matchXPath="auto" rowXPath="notes.source_xpath">
              <aixm:Note gml:id="{guid}">
                <aixm:note>{notes.note_txt}</aixm:note>
              </aixm:Note>
            </aixm:annotation>
            <aixm:horizontalProjection_location>
              <aixm:ElevatedPoint>
                <aixm:annotation duplicate="point_notes_oid" matchXPath="auto" rowXPath="notes.source_xpath">
                  <aixm:Note gml:id="{guid}">
                    <aixm:note>{notes.note_txt}</aixm:note>
                  </aixm:Note>
                </aixm:annotation>
              </aixm:ElevatedPoint>
            </aixm:horizontalProjection_location>
          </aixm:VerticalStructurePart>
        </part>
      </aixm:VerticalStructureTimeSlice>
    </timeSlice>
  </aixm:VerticalStructure>
</obstaclestructure>

Subtype

The subtype attribute divides AIXM features under a table grouping into specializations. The subtype attribute must refer to a subtype value used in the subtype field of the primary AIS table schema. Only one specialization AIXM feature is written per row of table data if the subtype matches.

The subtype attribute is only used in the following table groupings: adhpsurfacearea, adhpsurfaceelement, adhpsurfacepoint, marking, navaidcomponent, and service.

The example below shows two specialization AIXM features listed under the adhpsurfacearea table grouping element. Their subtypes are Runway and Taxiway. One specialization outputs per row of table data depending on the adhpsurfaceaarea.subtype_code field. If the row’s subtype value is "Taxiway”, aixm:Taxiway is the output.

Note:

This example was shortened for clarity.

<adhpsurfacearea subtype_field="subtype_code">
  <aixm:Runway gml:id="{clientkey_id}" subtype="Runway">
    <aixm:timeSlice>
      <aixm:RunwayTimeSlice gml:id="{guid}"></aixm:RunwayTimeSlice>
    </aixm:timeSlice>
  </aixm:Runway>
  <aixm:Taxiway gml:id="{clientkey_id}" subtype="Taxiway">
    <aixm:timeSlice>
      <aixm:TaxiwayTimeSlice gml:id="{guid}"></aixm:TaxiwayTimeSlice>
    </aixm:timeSlice>
  </aixm:Taxiway>
</adhpsurfacearea>

Related topics