Panel | ||
---|---|---|
| ||
|
Although this is the typical construct for arcs used in the definition of airspace borders in the AI domain, it is recommended to avoid, as much as possible, the use of arcs by centre points.
...
The closest GML construct that can be used for encoding this type of arcs is ArcByCenterPoint. This requires calculating the start/end angles from the centre to the start/end points. Before calculating these angles, it is important to specify the angle measuring convention in AIXM, as GML seems to leave some degree of interpretation for this aspect.
Measuring angles in GML
GML explicitly implements implements* the semantics of ISO 19107
...
The order of the axes determines where 0° is located (on the positive part of the coordinate system's first axis).
Arc Direction
Once the startAngle and endAngle are known, it is still necessary to establish how the arcs are interpolated/drawn. The semantics of the words “start” and “end” indicate that arcs shall be interpolated/drawn from the start angle to the end angle, similarly to a line that is always interpolated/drawn from its start to its end. However, this still leaves some room for interpretation, e.g. an arc that has startAngle =90 (East) and endAngle =180 (West) should be interpolated/drawn through South or through North?
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
... <aixm:Surface gml:id="S01" srsName="urn:ogc:def:crs:EPSG::4326"> <gml:patches> <gml:PolygonPatch> <gml:exterior> <gml:Ring> <gml:curveMember> <aixm:Curve gml:id="C01"> <gml:segments> <gml:GeodesicString> <gml:posList>lat_Px long_Px lat_Py long_Py</gml:posList> </gml: GeodesicString> <gml:ArcByCenterPoint gml:id="A01"> <gml:pos>lat_Pc long_Pc</gml:pos> <gml:radius uom="m">radius</gml:radius> <gml:startAngle uom="deg">calculated_start_angle</gml:startAngle> <gml:endAngle uom="deg">calculated_end_angle</gml:endAngle> </gml:ArcByCenterPoint> <gml:GeodesicString> <gml:posList>lat_Pz long_Pz lat_Pw long_Pw</gml:posList> </gml:GeodesicString> ... </gml:segments> </aixm:Curve> </gml:curveMember> </gml:Ring> </gml:exterior> </gml:PolygonPatch> </gml:patches> </aixm:Surface> ... |
Units of measurement
The previous XML encoding example also shows recommended values for the uom attributes of gml:radius and gml:start(end)Angle. According to GML, “in an instance document, on elements of type gml:MeasureType the mandatory uom attribute shall carry a value corresponding to either:
...
The symbol “deg” shall be used for the uom attribute of gml:startAngle and gml:endAngle elements.
Footnotes
* Note that this is true for classes of spatial primitives (e.g. GM_Arc) but in general not their operations. In the ISO 19107, startOfArc and endOfArc are operations, aka constructors which derive other values from the GM_Arc. However, GML/ISO 19136 defines the UML Class ArcByCenterPoint (Figure D.48) in a GML profile of ISO 19107 where startOfArc and endOfArc are attributes. Although not explicitly stated in the GML standard, we can infer that the ISO 19107 semantics for operations carry over to the identical semantics for the corresponding attributes with the same name in the GML profile of ISO 19107 (ISO 19136, Annex D).