Panel | ||
---|---|---|
| ||
|
The geometry of an airspace may be constructed by the composition of other airspace.
The main concept behind these operations is the so called "Parent/Child relationship".
The figure below shows two examples. The geometry of the "child" airspace which derives the geometry from the "parent" airspace(s) may be
- the same horizontal shape as another airspace but with different vertical limits ("above-below" association).
- a composition by aggregation of airspace (e.g. union and subtraction operations).
In the first case, only one parent can be used (but it may be used for more than one child) and the derivation process is limited to the horizontal border.
In the second case, a combination of "parent" airspace (one to many relationship) will be used. The derivation process is extended to a total aggregation of airspace volumes and also the vertical limits of the parent Airspace may be taken into account.
In both cases, based on already defined airspace the geometry of a new airspace can be defined using a set of various operations.
The parent airspace(s) always determine(s) the geometry of the child airspace, i.e. the parent airspace has already a specified geometry which will be inherited by the child.
For the GML encoding of the Surface of the airspace see topic Geometry.
Aggregation Chains (Hierarchy of Aggregation)
An airspace described as the "child" of an aggregation, may again be used as "parent" for another aggregation and so on (so you are able to create "grandchildren" if you like to say so).
An airspace may also be the "parent" for several different "child" airspace in different associations.
Note | ||
---|---|---|
| ||
A long chain of airspace aggregations might become very difficult to interpret and represent in a spatial model. Therefore, it is recommended not to create too long chains of airspace aggregations. Not more than 2-3 levels of association should be used in practice. |
Types for Airspace Geometry Components
For airspace aggregations, the AirspaceGeometryComponent class defines the role of the component in the airspace geometry.
If the geometry of an airspace is composed of single volume (see Airspace Geometry - One AirspaceVolume), then the attributes of this association class may be left empty.
The attribute operation defines four types of operation. The operations may be used in all kinds of combinations.
BASE
The operation 'BASE' is used to define the 'Parent' airspace which is the basis for any subsequent operations.
UNION
The operation 'UNION' is used to define that the 'Parent' airspace is the second operand in an union operation.
Airspace1 is used as aggregation component (parent) with operation equal-to 'BASE' and operationSequence equal-to '1'
Airspace2 is used as aggregation component (parent) with operation equal-to 'UNION', and operationSequence equal-to '2'
Subsequently, the geometry of Airspace3 is the result of the aggregation of the two components.
Subtraction
The operation 'SUBTR' is used to define that the 'Parent' airspace is the second operand in a subtraction operation.
Airspace1 is used as aggregation component (parent) with operation equal-to 'BASE' and operationSequence equal-to '1'
Airspace2 is used as aggregation component (parent) with operation equal-to 'SUBTR', operationSequence equal-to '2'
Subsequently, the geometry of Airspace3 is the result of the aggregation of the two components.
Intersection
The operation 'INTERS' is used to define that the 'Parent' airspace is the second operand in an intersection operation.
Airspace1 is used as aggregation component (parent) with operation equal-to 'BASE' and operationSequence equal-to '1'
Airspace2 is used as aggregation component (parent) with operation equal-to 'INTERS', operationSequence equal-to '2'
Subsequently, the geometry of Airspace3 is the result of the aggregation of the two components.
Note | ||
---|---|---|
| ||
In case of a simple "above-below" composition, operation and operationSequence will be left empty. |
Airspace Aggregation - Copying Geometry vs. Referencing
There are two methods to define the geometry of an airspace with more than one airspace volume:
- by copying the geometry,
- or by referencing.
Combinations of both for defining one airspace geometry are possible.
Copying Geometry
The first method consists in effectively copying the geometry of the referenced Airspace as local AirspaceVolume.
Note | ||
---|---|---|
| ||
Note that this might be a recursive operation, as the referenced Airspace might have more than one AirspaceVolume and some or even all these could also depend on the geometry of other Airspace. |
This method might be appropriate for applications that need to provide fully digested geometrical data for direct consumption (e.g. graphical visualization, spatial calculations). The disadvantage of this method is that the referenced geometry might also change in time. This is not a problem when the aggregation is used for the provision of SNAPSHOT data (valid at a time instant), but it might become problematic when providing BASELINE data (which is valid for a period). Future changes of the geometry of referenced airspace needs to be propagated to the AirspaceVolume of the aggregated airspace. The advantage is that this method provides complete geometrical data for the aggregated Airspace and does not require further calculations by the client system.
For this method, the AirspaceGeometryComponent class is used to define the aggregation, and the Surface class to define the lateral limits of the child airspace (viz. the copies of the lateral limits of the 'parent airspace').
Let's take an abstract example.The figure below shows 3 Airspaces. A, B and C.
The idea is to code Airspace C based on the horizontal extend of the existing Airspaces A and B by copying the lateral part of their geometry. The vertical limits will be coded for the Airspace Volume of Airspace C.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<tbd/> |
The figure below illustrates a simple copying of geometry, using as an example the BRUSSELS TMA, which is a union of two parts: TMA one and TMA two:
There is an additional option here. Instead of coping the geometry of the existing parts, the parts may be defined as integral part of the geometry of the child airspace. In this case, the parent airspace does not exist as own instance of the airspace feature.
Referencing
The second method is limited to referring to another airspace, but without effectively copying the geometry of that Airspace as own AirspaceVolume.
This method might be appropriate for data provision between synchronized databases, such as between a local and a regional database, and it is equivalent to the approach of the previous AIXM 4.5 version (which is not based on GML). The disadvantage of this method is that the client needs to eventually retrieve the geometry of the referenced Airspace and do the geo-spatial calculations that are necessary in order to effectively get the actual geometry of the current Airspace in a GML usable form. The advantage is that it preserves a true association with the composing Airspace.
For this method, the AirspaceGeometryComponent class and the AirspaceVolumeDependency class are used to define the aggregation. The Surface class may not be used!
The AirspaceVolumeDependency class defines the relationship between the geometry of an AirspaceVolume and the geometry of another (parent) Airspace.
The dependency attribute will be used to define, if only the horizontal limits of the "parent" airspace(s) shall be considered or also the vertical limits (i.e. the full geometry).
Let's take again our abstract example form above. The figure below shows 3 Airspaces: A, B and C.
The idea is to code Airspace C based on the horizontal extend of the existing Airspaces A and B by referencing these airspaces. The vertical limits will be coded for the Airspace Volume of Airspace C.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<tbd/> |
The figure below illustrates a simple referencing, again using as example the BRUSSELS TMA with its two parts: TMA one and TMA two.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<aixm:AirspaceTimeSlice gml:id="ASE_MAGNETTO_TMA"> <gml:validTime> <gml:TimePeriod gml:id="uuid.820fdbbb-55d4-4f45-9d59-d770e5faec95"> <gml:beginPosition>2017-07-01T00:00:00Z</gml:beginPosition> <gml:endPosition indeterminatePosition="unknown"/> </gml:TimePeriod> </gml:validTime> <aixm:interpretation>BASELINE</aixm:interpretation> <aixm:sequenceNumber>2</aixm:sequenceNumber> <aixm:correctionNumber>0</aixm:correctionNumber> <aixm:featureLifetime> <gml:TimePeriod gml:id="uuid.5e9c790e-b91b-4182-946d-145b6e0196de"> <gml:beginPosition>2002-11-30T00:00:00Z</gml:beginPosition> <gml:endPosition indeterminatePosition="unknown"/> </gml:TimePeriod> </aixm:featureLifetime> <aixm:type>TMA</aixm:type> <aixm:designator>EAMM</aixm:designator> <aixm:name>MAGNETTO</aixm:name> <aixm:class> <aixm:AirspaceLayerClass gml:id="acl123123"> <aixm:classification>C</aixm:classification> </aixm:AirspaceLayerClass> </aixm:class> <aixm:geometryComponent> <aixm:AirspaceGeometryComponent gml:id="uuid.4344f989-50b4-4cb0-9920-870ccd89429f"> <aixm:operation>BASE</aixm:operation> <aixm:operationSequence>1</aixm:operationSequence> <aixm:theAirspaceVolume> <aixm:AirspaceVolume gml:id="uuid.59160a8e-a015-42ed-8346-34bc65436a72"> <aixm:contributorAirspace> <aixm:AirspaceVolumeDependency gml:id="uuid.43a4e8ff-7995-492c-aa8f-50ef2c29b679"> <aixm:dependency>FULL_GEOMETRY</aixm:dependency> <aixm:theAirspace xlink:href="urn:uuid:0df377fe-dd53-4d60-b6c4-6546ef31d26b"/> </aixm:AirspaceVolumeDependency> </aixm:contributorAirspace> </aixm:AirspaceVolume> </aixm:theAirspaceVolume> </aixm:AirspaceGeometryComponent> </aixm:geometryComponent> <aixm:geometryComponent> <aixm:AirspaceGeometryComponent gml:id="uuid.e8995bfd-8f47-401e-84d5-81154957ad53"> <aixm:operation>UNION</aixm:operation> <aixm:operationSequence>2</aixm:operationSequence> <aixm:theAirspaceVolume> <aixm:AirspaceVolume gml:id="uuid.a91c0703-1a24-4c0a-a97b-f7a77ae6cdf2"> <aixm:contributorAirspace> <aixm:AirspaceVolumeDependency gml:id="uuid.28854643-aca8-46e6-a199-57bf0d02a6e2"> <aixm:dependency>FULL_GEOMETRY</aixm:dependency> <aixm:theAirspace xlink:href="urn:uuid:010d8451-d751-4abb-9c71-f48ad024045b"/> </aixm:AirspaceVolumeDependency> </aixm:contributorAirspace> </aixm:AirspaceVolume> </aixm:theAirspaceVolume> </aixm:AirspaceGeometryComponent> </aixm:geometryComponent> </aixm:AirspaceTimeSlice> ... <aixm:AirspaceTimeSlice gml:id="ASE_MAGNETTO1_TMA_P"> <gml:validTime> <gml:TimePeriod gml:id="uuid.cd76b225-8e1d-4827-b892-e86c68168e9b"> <gml:beginPosition>2017-07-01T00:00:00Z</gml:beginPosition> <gml:endPosition indeterminatePosition="unknown"/> </gml:TimePeriod> </gml:validTime> <aixm:interpretation>BASELINE</aixm:interpretation> <aixm:sequenceNumber>2</aixm:sequenceNumber> <aixm:correctionNumber>0</aixm:correctionNumber> <aixm:featureLifetime> <gml:TimePeriod gml:id="uuid.4c1e9902-d3fb-4041-80ff-34e6a9ac0936"> <gml:beginPosition>2010-11-01T00:00:00Z</gml:beginPosition> <gml:endPosition indeterminatePosition="unknown"/> </gml:TimePeriod> </aixm:featureLifetime> <aixm:type>TMA_P</aixm:type> <aixm:designator>EAMM1</aixm:designator> <aixm:name>MAGNETTO TMA PART 1</aixm:name> <aixm:geometryComponent> <aixm:AirspaceGeometryComponent gml:id="uuid.dbcb9ad5-2008-4644-becb-4d01dbacc27e"> <aixm:theAirspaceVolume> <aixm:AirspaceVolume gml:id="uuid.ba335f05-5fff-47f4-81e5-de8df2fa8263"> <aixm:upperLimit uom="FL">460</aixm:upperLimit> <aixm:upperLimitReference>STD</aixm:upperLimitReference> <aixm:lowerLimit uom="FL">210</aixm:lowerLimit> <aixm:lowerLimitReference>STD</aixm:lowerLimitReference> <aixm:horizontalProjection> <aixm:Surface xsi:type="aixm:ElevatedSurfaceType" gml:id="uuid.d635cbc1-83ff-490d-8451-7aca0ef6a842"> <gml:patches> <gml:PolygonPatch> <gml:exterior> <gml:Ring> <gml:curveMember> <gml:Curve xsi:type="aixm:CurveType" srsName="urn:ogc:def:crs:EPSG::4326" gml:id="uuid.258c16e0-5f2c-4101-aabb-536f58c38eb5"> <gml:segments> <gml:GeodesicString> <gml:posList>51.99333333333333 -6.0005 52.45333333333333 -5.869333333333333 52.81666666666667 -5.89 53.53333333333333 -5.981666666666667 53.89333333333333 -5.937833333333333 53.905 -6.0038333333333334 53.916666666666664 -6.099333333333333</gml:posList> </gml:GeodesicString> </gml:segments> </gml:Curve> </gml:curveMember> </gml:Ring> </gml:exterior> </gml:PolygonPatch> </gml:patches> </aixm:Surface> </aixm:horizontalProjection> </aixm:AirspaceVolume> </aixm:theAirspaceVolume> </aixm:AirspaceGeometryComponent> </aixm:geometryComponent> </aixm:AirspaceTimeSlice> ... <aixm:AirspaceTimeSlice gml:id="ASE_MAGNETTO2_TMA_P"> <gml:validTime> <gml:TimePeriod gml:id="uuid.ee0a0e78-614e-419e-aebb-57829fd26699"> <gml:beginPosition>2017-07-01T00:00:00Z</gml:beginPosition> <gml:endPosition indeterminatePosition="unknown"/> </gml:TimePeriod> </gml:validTime> <aixm:interpretation>BASELINE</aixm:interpretation> <aixm:sequenceNumber>2</aixm:sequenceNumber> <aixm:correctionNumber>0</aixm:correctionNumber> <aixm:featureLifetime> <gml:TimePeriod gml:id="uuid.61902c93-3b1c-4969-90f1-c2422a31f9a2"> <gml:beginPosition>20010-11-01T00:00:00Z</gml:beginPosition> <gml:endPosition indeterminatePosition="unknown"/> </gml:TimePeriod> </aixm:featureLifetime> <aixm:type>TMA_P</aixm:type> <aixm:designator>EAMM2</aixm:designator> <aixm:name>MAGNETTO TMA PART 2</aixm:name> <aixm:geometryComponent> <aixm:AirspaceGeometryComponent gml:id="uuid.bbeaa329-9239-4e4f-86e3-95400d7ca76d"> <aixm:theAirspaceVolume> <aixm:AirspaceVolume gml:id="uuid.fe954643-af04-4334-bd7f-fe969273a9a9"> <aixm:upperLimit uom="FL">460</aixm:upperLimit> <aixm:upperLimitReference>STD</aixm:upperLimitReference> <aixm:lowerLimit uom="FL">210</aixm:lowerLimit> <aixm:lowerLimitReference>STD</aixm:lowerLimitReference> <aixm:horizontalProjection> <aixm:Surface xsi:type="aixm:ElevatedSurfaceType" gml:id="uuid.b2444276-e335-4106-9a4a-fd5eeb75b41c"> <gml:patches> <gml:PolygonPatch> <gml:exterior> <gml:Ring> <gml:curveMember> <gml:Curve xsi:type="aixm:CurveType" srsName="urn:ogc:def:crs:EPSG::4326" gml:id="uuid.84fe3774-a519-4b16-9344-cb311b2c92b5"> <gml:segments> <gml:GeodesicString> <gml:posList>53.876666666666665 -5.863333333333333 53.89333333333333 -5.937833333333333 53.53333333333333 -5.981666666666667 52.81666666666667 -5.89 52.45333333333333 -5.869333333333333 52.516666666666666 -5.850666666666667 52.583333333333336 -5.831666666666667 53.3 -5.755 53.7 -5.786666666666667 53.718333333333334 -5.8083333333333336 53.876666666666665 -5.863333333333333</gml:posList> </gml:GeodesicString> </gml:segments> </gml:Curve> </gml:curveMember> </gml:Ring> </gml:exterior> </gml:PolygonPatch> </gml:patches> </aixm:Surface> </aixm:horizontalProjection> </aixm:AirspaceVolume> </aixm:theAirspaceVolume> </aixm:AirspaceGeometryComponent> </aixm:geometryComponent> </aixm:AirspaceTimeSlice> |
Example 1-1: R-4912 Sand Springs, NV
This example shows the encoding of the geometry of a Restricted area (R-4912), utilising the AIXM airspace aggregation concept.
The airspace aggregation is made of four airspace components, which are used in a combination of referencing and copying.
The first AirspaceGeometryComponent used in this aggregation is the 'BASE', from which three other airspace geometry components are subtracted.
Again, the vertical limits of the referenced airspace ("Airspace2"), i.e. 'R-4810 DESERT MOUNTAINS, NV', are not taken into account, but the ones defined for airspace component "SUBTR3".
Note that the upper limit of 'R-4810' is lower than the one of airspace component "SUBTR3".
Example 1-2:
The airspace used in the previous example in the "SUBTR2" operation, 'R-4804A Twin Peaks, NV', itself is made of an airspace aggregation.
Note that, if the horizontalProjection of of 'R-4804A Twin Peaks, NV' is changed, also the horizontal shape of 'R-4912 Sand Springs, NV' is affected.
R-4804A Twin Peaks, NV' is made of three airspace geometry components, a BASE, a UNION and a SUBTR.
No. | Description | XPath Expression |
---|---|---|
ASE-EX-11 ASE-EX-12 ASE-EX-13 | ATS airspace, CTA (Airspace aggregation by copying the geometry), Union of two airspace components | //aixm:AirspaceTimeSlice[@gml:id='ASE_DONLON_CTA'] | /aixm:AirspaceTimeSlice[@gml:id='ASE_DONLON1_CTA_P'] | /aixm:AirspaceTimeSlice[@gml:id='ASE_DONLON2_CTA_P'] |
ASE-EX-14 ASE-EX-15 ASE-EX-16 | ATS airspace, TMA, (Airspace aggregation by referencing), Union of two parts (AirspaceVolumeDependency) | //aixm:AirspaceTimeSlice[@gml:id='ASE_MAGNETTO_TMA'] | //aixm:AirspaceTimeSlice[@gml:id='ASE_MAGNETTO1_TMA_P'] | //aixm:AirspaceTimeSlice[@gml:id='ASE_MAGNETTO2_TMA_P'] |