Arc by Centre Point

Page Table of Content

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.

It comes with two problems:

  • The arc is over specified, as the start/end points, the centre and the radius are all provided. Typically, the calculated distance from the centre to the start and end point is not quite the same due to round-off error and is also usually different from the radius;
  • This construction of arcs is not supported exactly this way in GML and in GIS systems in general.

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 (see Note 1 below) the semantics of ISO 19107. The startOfArc  and endOfArc are defined in terms of bearings. The definition of “bearing” states that

Bearing is a data type used to represent direction in the coordinate reference system. In a 2D coordinate reference system, this can be accomplished using a “angle measured from true north” or a 2D vector point in that direction.

Note 1

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 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).

There are two variants mentioned in ISO 19107 for expressing bearings: angle and direction.The semantics for angle is

In this variant of Bearing usually used for 2D coordinate systems, the first angle (azimuth) is measured from the first coordinate axis (usually north) in a counterclockwise fashion parallel to the reference surface tangent plane.”

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.

In the EPSG:4326 CRS, the first (x) axis is latitude and the second (y) axis is longitude. A counter clockwise angle means measuring it from the first axis towards the second axis. When transposing this coordinate system on the surface of the Earth, this corresponds to a clockwise rotation from the first axis (North) in order to measure angles, as shown in the figure below. Practically, the x/y reference system is mirrored and rotated to be aligned with the meridians and the parallels.

Therefore, when the EPSG:4326 CRS (or another 2D geodetic CRS that has latitude as first axis) is used, this translates to angles that are measured clockwise starting from the True North in the AI Domain. East is at 90 degrees from North, South at 180 degrees from North, etc. This convention is important for defining the startAngle and endAngle of the ArcByCenterPoint. Note that it is also possible to use negative values for angles. Negative angles are measured from the first axis through rotation in the direction opposite to the second axis.

The following diagram shows how angles are measured in WGS 84 2D with different coordinate systems:

(A) GeodeticCRS: urn:ogc:def:crs:OGC:1.3:CRS84 (right-handed)

  • Datum: WGS84
  • Ellipsoidal 2D CS.
    • Axes: (1st) longitude, (2nd) latitude.
    • Orientations: east, north. UoM: degree

(B) GeodeticCRS: urn:ogc:def:crs:EPSG::4326 (left-handed)

  • Datum: WGS84
  • Ellipsoidal 2D CS.
    • Axes: (1st) latitude, (2nd) longitude.
    • Orientations: north, east. UoM: degree

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?

The following convention shall apply in the aviation domain: if the start angle is smaller than the end angle then the arc direction is the direction in which the angle values increase. If the opposite is true, then the arc direction is the one in which the angle values decrease. Depending upon the coordinate system that applies to a given ArcByCenterPoint, this results in a clockwise (left-handed system) or counter-clockwise (right-handed system) directed arc. The arguments for this convention are detailed on the ArcByCenterPoint Interpretation Summary page.

Applied with the EPSG:4326 CRS, this means that arcs are drawn:

  •  clockwise on the surface of the Earth when the startAngle is smaller than the endAngle;
  •  counter-clockwise on the surface of the Earth when the startAngle is larger than the endAngle

The same convention applies to any other geodetic CRS that has latitude as first (x) axis. This is exemplified in the figure below. It is therefore possible to define arcs in both clockwise and counter-clockwise direction by choosing the right startAngle and endAngle values. This also requires the use of angle values between -360 and 360, both values included.

Applied with the CRS:84 CRS, this means that arcs are drawn:

  • counter-clockwise on the surface of the Earth when the startAngle is smaller than the endAngle;
  • clockwise on the surface of the Earth when the startAngle is larger than the endAngle

An example of the GML encoding for an ArcByCenterPoint is presented below.

...
        <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:

  •  a conventional unit of measure symbol,
  • a link to a definition of a unit of measure that does not have a conventional symbol, or when it is desired to indicate a precise or variant definition.

For common units of measurement, such as meter for distances and degrees for angles, conventional units of measure symbols shall be used. A Note in the [GML] standard suggests the use of UCUM symbols: “It is recommended that the symbol be an identifier for a unit of measure as specified in the Unified Code of Units of Measure’ (UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bitASCII.”

The following UCUM “c/s” (case sensitive) values shall be used for gml:radius in AIXM/GML data sets:

  • '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.