Arc by center example

This example shows how the AIP information for the geometry of an airspace (TMA AQUITAINE part 2-1) is used for computing the AIXM/GML digital representation of the horizontal projection of that Airspace.

Information published in AIP France ENR 2.3


Screenshot of map showing the horizontal extent of the TMA

The horizontal projection of the airspace starts with a "clockwise arc". The center is 44°49'37"N; 000°43'16"W. The first point is A (45°07'24"N; 001°03'41"W) and the second point is B (44°47'02"N; 000°11'15"W). The radius is declared as 23 NM.

Assuming that EPSG::4326 will be used as coordinated reference system in GML, the start and end arc angles can be calculated with a geodesic tool:

  • startAngle: - 39.056642 (from centre to point A)
    • note that most geodetic tools will return a true bearing (such as 320.943358 deg in this case). However, the actual statAngle value used in the ArcByCenterPoint will need to take into consideration the CRS type (left-handed in this case) and the arc direction (clockwise in this case). Therefore, the startAngle value needs to be smaller than the endAngle value. For this purpose, the startAngle is calculated by subtracting the bearing from 360.

  • endAngle: 96.278174 (from centre to point B)

In order to encode the ArcByCenterPoint, the value of the arc radius is also necessary. The AIP information indicates 23 NM. Before using that value, it is worth checking that it is close enough (less than 1% difference) to the actual distances between the arc center and the two points (A and B). Otherwise, the geometry will not close correctly when adding the next segments.

  • distance from center to point A: 22.942 NM (0.25% difference to 23 NM)
  • distance from center to point B: 22.941 NM (0.26% difference to 23 NM)

Therefore, the radius value of 23 NM, as declared in the AIP, may be directly used in the GML encoding. If the difference was higher than 1%, the data originator should be contacted in order to provide a more accurate value for the arc radius.

The resulting GML ArcByCenterPoint can be encoded as follows:

<Surface gml:id="S01" srsName="urn:ogc:def:crs:EPSG::4326">
	<gml:patches>
		<gml:PolygonPatch>
			<gml:exterior>
				<gml:Ring>
					<gml:curveMember>
						<Curve gml:id="C01">
							<gml:segments>
								<gml:ArcByCenterPoint numArc="1">
									<gml:pos>44.82694444445 -0.72111111111</gml:pos>
									<gml:radius uom="[nmi_i]">23.0</gml:radius>
									<gml:startAngle uom="deg">-39.056642</gml:startAngle>
									<gml:endAngle  uom="deg">96.278174</gml:endAngle>
								</gml:ArcByCenterPoint>
								<gml:GeodesicString>
									<gml:posList>44.78388889 -0.18750000 44.69055556 -0.29527778 44.63083333 -0.36416667 
										44.55222222 -0.45444444 44.56000000 -0.60305556 44.56166667 -0.63277778 
										44.57194444 -0.83333333 44.66666667 -0.83333333 44.82527778 -1.00000000 
										44.90000000 -1.00000000 45.12333333 -1.06138889</gml:posList>
								</gml:GeodesicString>
							</gml:segments>
						</gml:Curve>
					</gml:curveMember>
				</gml:Ring>
			</gml:exterior>
		</gml:PolygonPatch>
	</gml:patches>
</Surface>

Note that the second point of the arc (44°47'02"N; 000°11'15"W) is coded as the first point of the GeodesicString that follows the arc. This ensures that there is no gap between the end of the arc and the start of the next curve. 

In this particular case where the first curve defining the surface is an arc, it is not necessary to code explicitly the start point of the arc. The geometry of the surface is properly close, as required by the GML rules, because the arc starts exactly where the last segment of the GeodesicString ends (45°07'24"N; 001°03'41"W).