...
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* the semantics of ISO 19107
...
Although it may not be obvious, this definition matches the needs of the AI domain, as angles are usually expressed in degrees measured clockwise from the True North. The diagrams below explain why the “counter clockwise” convention stated in the ISO 19107 standard, when combined with left-handed geodetic CRS (see also page Right-handed vs. Left-handed CRS) actually corresponds to a clockwise rotation in the AI domain.
...
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:
...
'm' – when the radius is expressed in meters
- 'km' – when the radius is expressed in kilometers
- '[nmi_i]' – when the radius is expressed in Nautical Miles
The symbol “deg” shall be used for the uom attribute of gml:startAngle and gml:endAngle elements.
...