Airspace Data AIXM Mapping
Required roles:
AIS Navigation Data via Cloud— Roles
Base endpoint: none
Reference documents: AIXM 5.2 schema set (aixm.aero) · RFC 7946 The GeoJSON Format
Attribution: showibonav.aerowherever this data is displayed
Data sources: none
Last updated: 18 OCT 2026
How the airspace data in AIXM maps to the columns of the Airspace GeoPackage. Every AIXM property of Airspace has a column or a place in a JSON column; a column can be empty when no source provides that property.
For the extension elements (ibosoftais:*) see AIXM Schema Extension; for coding rules (provenance, geometry) see Data Coding Policies. The naming rules and the common column families are the same as in the ATS Data AIXM Mapping.
Layer
| Layer | AIXM feature | Geometry |
|---|---|---|
airspaces |
Airspace |
MULTIPOLYGON (EPSG:4326) |
The layer also has id (INTEGER primary key) and geom. Each airspace is one row: an airspace with several classes or several geometry components is not split into rows.
Naming rules
| Rule | Pattern | Example |
|---|---|---|
| AIXM property | airspaces_<AIXM name> |
airspaces_designator |
| Field of a sub-object | camelCase joined | airspaces_locationLatitude, airspaces_contributorAirspaceUuid |
| Unit / vertical reference | <field>Uom, <field>Reference |
airspaces_upperLimitUom |
| Reference to another feature | …Uuid (the target's gml:identifier) |
airspaces_protectedRouteUuid |
| Repeated (0..∞) structure | full JSON | airspaces_class |
| Common families (no prefix) | annotation*, data_*, aixm_* |
annotationRemark |
| Derived (no AIXM counterpart) | own family prefix | airspaceLabeling_classifications |
JSON keeps the whole AIXM subtree: an element with xlink:href becomes {"href": "<uuid>"}, a value with a unit becomes {"value": …, "uom": …}; only technical attributes such as gml:id are left out.
Columns
Airspace
| AIXM | Column | Type |
|---|---|---|
type |
airspaces_type |
TEXT |
designator |
airspaces_designator |
TEXT |
localType |
airspaces_localType |
TEXT |
name |
airspaces_name |
TEXT |
designatorICAO |
airspaces_designatorICAO |
TEXT |
controlType |
airspaces_controlType |
TEXT |
upperLowerSeparation (+uom) |
airspaces_upperLowerSeparation, airspaces_upperLowerSeparationUom |
REAL, TEXT |
class (0..∞) |
airspaces_class |
TEXT (JSON array: classification, associatedLevels, timeInterval, annotation, specialDateAuthority) |
protectedRoute |
airspaces_protectedRouteUuid |
TEXT |
geometryComponent (0..∞) |
geom (calculated, see Geometry), airspaces_geometryComponent (JSON) and the BASE volume columns |
— |
activation (0..∞) |
airspaces_activation |
TEXT (JSON array: activity, status, levels, user, aircraft, timeInterval, annotation, specialDateAuthority) |
annotation (0..∞) |
annotationDescription, annotationRemark, annotationWarning, annotationDisclaimer |
TEXT |
class and activation are kept as full JSON arrays and are not reduced to single columns: an airspace can have several classes (each for its own levels) and several activations.
Example airspaces_class of an FIR with a class C layer:
[{"classification": "C",
"associatedLevels": {"AirspaceLayer": {
"upperLimit": {"uom": "FL", "value": "660"}, "upperLimitReference": "STD",
"lowerLimit": {"uom": "FL", "value": "305"}, "lowerLimitReference": "STD"}}}]
Annotation columns and separators work as in the ATS Data AIXM Mapping › Annotation.
Geometry component and volume
airspaces_geometryComponent holds all components as a JSON array: operation, operationSequence, annotation and theAirspaceVolume with all its fields. The geometries are not repeated in the JSON: horizontalProjection is in geom, centreline in airspaces_centreline.
The volume fields of the BASE component are also in single columns (the fields of the other components are only in the JSON):
AIXM (AirspaceVolume) |
Column | Type |
|---|---|---|
upperLimit (+uom), upperLimitReference |
airspaces_upperLimit, airspaces_upperLimitUom, airspaces_upperLimitReference |
TEXT |
maximumLimit (+uom), maximumLimitReference |
airspaces_maximumLimit, airspaces_maximumLimitUom, airspaces_maximumLimitReference |
TEXT |
lowerLimit (+uom), lowerLimitReference |
airspaces_lowerLimit, airspaces_lowerLimitUom, airspaces_lowerLimitReference |
TEXT |
minimumLimit (+uom), minimumLimitReference |
airspaces_minimumLimit, airspaces_minimumLimitUom, airspaces_minimumLimitReference |
TEXT |
width (+uom) |
airspaces_width, airspaces_widthUom |
REAL, TEXT |
horizontalProjection |
geom |
MULTIPOLYGON |
centreline |
airspaces_centreline |
TEXT (WKT LineString, longitude latitude) |
contributorAirspace/AirspaceVolumeDependency/dependency |
airspaces_contributorAirspaceDependency |
TEXT |
contributorAirspace/AirspaceVolumeDependency/theAirspace |
airspaces_contributorAirspaceUuid |
TEXT |
name |
airspaces_volumeName |
TEXT |
location |
airspaces_locationLatitude, airspaces_locationLongitude |
REAL |
annotation |
in airspaces_geometryComponent |
— |
Vertical limits are TEXT. An AIXM limit is a number or a text value such as
UNL,GND,FLOORorCEILING, and both occur in the data. A numeric column would turn the text values into NULL, and the reference column cannot tellUNLapart. The value is carried as written in AIXM.
Extension, provenance, identity
| AIXM | Column |
|---|---|
extension/ibosoftais:AirspaceExtension/regionIcao |
airspaces_regionIcao (FIR/UIR) |
extension/ibosoftais:AirspaceExtension/regionSupProc |
airspaces_regionSupProc (FIR/UIR) |
extension/ibosoftais:AirspaceDataProvenance/dataProvider |
data_provider |
extension/ibosoftais:AirspaceDataProvenance/dataOriginator |
data_originator (NULL when the source does not state it) |
extension/ibosoftais:AirspaceDataProvenance/dataEffectivity |
data_effectivity |
gml:id |
aixm_gml_id |
gml:identifier |
aixm_uuid |
Region values are as published by the source; see AIXM Schema Extension › Airspace. Provenance coding: Data Coding Policies › Provenance.
TimeSlice and feature base
| AIXM | Column |
|---|---|
gml:validTime begin / end |
aixm_validTimeBegin, aixm_validTimeEnd |
interpretation |
aixm_interpretation |
sequenceNumber, correctionNumber |
aixm_sequenceNumber, aixm_correctionNumber (INTEGER) |
featureLifetime |
aixm_featureLifetimeBegin, aixm_featureLifetimeEnd |
timeSliceMetadata |
aixm_timeSliceMetadata (JSON) |
featureMetadata |
aixm_featureMetadata (JSON) |
gml:description |
aixm_description |
gml:name (0..∞) |
aixm_name (JSON array) |
gml:boundedBy |
— (envelope of geom) |
The begin of gml:validTime is unknown: the sources give the effectivity of the data set, not of each airspace. The data set effectivity is in data_effectivity.
Derived: airspaceLabeling_*
| Column | Rule |
|---|---|
airspaceLabeling_classifications |
The class letters, comma-separated (e.g. C,D), in the order written in AIXM. NULL when the airspace has no class |
For filters and labels. The full class information with levels is in airspaces_class. The list is not sorted by level: the level references of class bands can be mixed (FT MSL / FL) and cannot be compared without conversion.
Geometry
geom is calculated from the geometry components:
- Components are ordered by
operationSequence. - The first component must be the only
BASE. - The polygon of each component is read from
horizontalProjection(PolygonPatchexterior ring andinteriorholes). - Starting from
BASE, the operations are applied:UNIONunion,SUBTRdifference,INTERSintersection. - The result is a MultiPolygon split at ±180° (antimeridian).
- Ring orientation follows RFC 7946 §3.1.6: exterior counter-clockwise, holes clockwise (see Data Coding Policies › Area Geometry Coding).
A component without a polygon (only centreline/width, or contributorAirspace) cannot be calculated; no polygon is invented for it, and such an airspace is not in the layer.
Values in the data
| Topic | Value |
|---|---|
| Names | AIXM TextNameType allows ASCII only; national characters are transliterated (e.g. İ → I) |
| Class not in the AIXM code list | Written with the AIXM extension pattern, e.g. OTHER:GSEC |
Indexes
| Index | Applies to |
|---|---|
R-Tree (rtree_airspaces_geom, GeoPackage RTree extension) |
geom |
| B-Tree | every attribute column |
Changes from the previous airspace schema
| Previous column | New column | Reason |
|---|---|---|
type, designator, name, localType, designatorICAO, controlType |
airspaces_<same> |
Same naming rule as ATS |
classification (single) |
airspaces_class (JSON) and airspaceLabeling_classifications |
In AIXM class is 0..∞ and tied to levels |
upperLimit…, lowerLimit… |
airspaces_upperLimit…, airspaces_lowerLimit… (BASE volume) |
Their AIXM place is AirspaceVolume |
activity, status (single) |
airspaces_activation (JSON) |
In AIXM activation is 0..∞ |
annotation* |
same (no prefix) | Same as ATS |
data_provider, data_originator, data_effectivity |
same | Same as ATS |
add_date |
removed | It was the production time of the file, not data |
horizontalProjection (geometry column) |
geom |
Same as ATS |
| — | aixm_*, maximum/minimumLimit, width, centreline, location, contributorAirspace…, protectedRouteUuid, upperLowerSeparation, volumeName, geometryComponent, regionIcao, regionSupProc |
AIXM properties that were not mapped before |