[AIXM-431] AngleIndication and DistanceIndication changed into objects
ID: | AIXM-431 |
target version: | AIXM 5.2 |
version: | 1.0 |
last updated: | 04 JUL 2023 |
status: | APPROVED |
Description
The existing AngleIndication and DistanceIndication features become <<object>> classes and are renamed Angle and Distance respectively. As a consequence, relationships with PointReference, SegmentPoint, DesignatedPoint and SignificantPoint are modified/added/deleted. Additional vertical limitation attributes are added in the PointReference class.
Rationale for change
See https://aixmccb.atlassian.net/browse/AIXM-181
As explained in the “AIXM UML to XML Schema Mapping”, AIXM <<feature>> classes are fundamental in AIXM. They can correspond to concrete and tangible real-world objects or to abstract and conceptual items. AIXM Features have properties that can change in time. These properties are encapsulated into classes with stereotype <<object>>, which do not exist independently (outside of a feature).
In the current model, AngleIndication and DistanceIndication are declared as <<feature>>. The following UML class diagrams show their attributes and associations (except association with Note). As the two classes have similar associations, the AngleIndication and DistanceIndication are shown “overlapped”.
Considering their current relationships with PointReference and the SegmentLeg specialisations, the Angle/DistanceIndication exist only when they are used to locate the position of a start/end segment point or as trajectory limitations for a procedure leg. In these cases, they are de-facto “objects” (complex properties of the related features). The only exception is the association “locates DesignatedPoint”, which could theoretically allow to provide fix information for a point, independent from its use as segment point. However, this also has a significant limitation, as the AngleIndication and DistanceIndication are separated features, which cannot be combined to provide a “significant point fix” information. Further more, the circular association Angle/DistanceIndication → (fix) DesignatedPoint ← (locates) PointReference → (isBasedOn) Angle/DistanceIndication could be easily misused for illogical combinations of angle/distance referring to different points.
Many AIXM 5.1 users complain that creating a feature for each AngleIndication and DistanceIndication is an unnecessary complication because they are typically used for a single PointReference or SegmentLeg. In addition, their properties do not give any convenient set of identifying properties, which makes it difficult to select the correct one to use in a given context.
Therefore, it is proposed that AngleIndication and DistanceIndication are replaced with equivalent <<object>> classes, while the current model capabilities are preserved.
Also, the PointReference was missing the possibility to specify a minimum and a maximum usage level, which result from the combination of angle/distance indication and the level at which the navaid signal is available or authorised. These attributes are proposed to be added.
Impact assessment
[FWD_MAP_1:1] Data mapping is possible and no data loss occurs when data is exchanged from a system (A) that uses AIXM 5.1.1 for output towards a system (B) that uses AIXM 5.2 for input.
[BWD_MAP_LOSS] Data mapping is possible, but some data would be lost (or converted into Notes) when data is exchanged from a system (B) that uses AIXM 5.2 for output towards a system (A) that uses AIXM 5.1.1 for input.
Change Proposal details
In the AIXM UML model,
- Rename the class AngleIndication into Angle and:
- change its stereotype from <<feature>> into <<object>>;
- change the definition of the following attributes:
- angle = “The angle between the bearing and the North reference”;
- angleType = “A code indicating the direction of the zero bearing”
- trueAngle = “The angle between the bearing and the True North reference”;
- delete the association Angle locates (fix) DesignatedPoint
- Rename the class DistanceIndication into Distance and:
- change its stereotype from <<feature>> into <<object>>;
- delete the association Distance locates (fix) DesignatedPoint
- Modify PointReference, as follows:
- Attributes:
- Add minimumReceptionLimit, type ValDistanceVerticalType, definition = ‘The lowest vertical distance required to receive adequate signals from navigational aids used to locate a significant point.”
- Add minimumReceptionLimitReference, type CodeVerticalReferenceType definition = “A code which defines the reference surface for the minimum reception limit.”
- Add maximumAuthorisedLimit, type ValDistanceVerticalType, definition = “The highest vertical distance where a point reference may be used to locate a significant point. ”
- Add maximumAuthorisedLimitReference, type CodeVerticalReferenceType, definition = “A code which defines the reference surface for the maximum authorised limit.”
- Associations
- Delete association PointReference locates DesignatedPoint
- modify the association PointReference isBasedOnAngle Angle as follows:
- change its aggregation mode into “composite” on the PointReference side;
- change the role name on the Angle side into angleReference
- modify the association PointReference isBasedOnDistance Distance as follows:
- change its aggregation mode into “composite” on the PointReference side;
- change the role name on the Distance side into distanceReference
- Attributes:
- In the DesignatedPoint class
- add composition relationship DesignatedPoint isLocatedBy PointReference with
- PointReference role "fix" (definition = "The point reference occurs at (locates) DesignatedPoint."), multiplicity 0..*
- add composition relationship DesignatedPoint isLocatedBy PointReference with
- In the SegmentLeg class:
- modify the association SegmentLeg isLimitedBy Angle as follows:
- change its aggregation mode into “composite” on the SegmentLeg side;
- change the role name on the Angle side into limitingAngle;
- modify the association SegmentLeg isLimitedBy DistanceIndication as follows:
- change its aggregation mode into “composite” on the SegmentLeg side;
- change the role name on the Distance side into limitingDistance;
- modify the association SegmentLeg isLimitedBy Angle as follows:
The following UML class diagram shows the new, modified and deleted model elements for the AngleIndication part:
The following UML class diagram shows the new, modified and deleted model elements for the DistanceIndication part:
Mapping AIXM 5.1.1 to AIXM 5.2 (forward)
The following algorithm shall be applied:
- For each AngleIndication:
- if it has a child element DesignatedPoint, then:
- [MAPC-07] Find the corresponding (referencing) Designated Point and:
- if necessary, apply the “timeSlice alignment” procedure described for this mapping case;
- add PointReference.angleReference.AngleUse.theAngle.Angle descendant elements with the Angle element having:
- gml:identifier value concatenated as value of the DesignatedPoint.gml:identifier and AngleIndication.gml:identifier value
- note: this concatenation will prevent the risk of colliding gml:identifiers for different AngleIndication elements, in case of a circular mapping (AIXM 5.1 -> 5.2 -> 5.1);
- angle, angleType, indicationDirection, trueAngle, cardinalDirection, minimumReceptionAltitude elements and pointChoice_* value copied from the AngleIndication element
- gml:identifier value concatenated as value of the DesignatedPoint.gml:identifier and AngleIndication.gml:identifier value
- if it is referenced by a DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg through a child angle element:
- [MAPC-07] Find the corresponding (referencing) DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg element and:
- if necessary, apply the “timeSlice alignment” procedure described for this mapping case;
- rename the angle into limitingAngle and:
- remove its xlink:href attribute
- add an Angle child element having:
- gml:identifier value concatenated as value of the *Leg.gml:identifier and AngleIndication.gml:identifier value
- note: this concatenation will prevent the risk of colliding gml:identifiers for different AngleIndication elements, in case of a circular mapping (AIXM 5.1 -> 5.2 -> 5.1);
- angle, angleType, indicationDirection, trueAngle, cardinalDirection, minimumReceptionAltitude elements and pointChoice_* value copied from the AngleIndication element
- gml:identifier value concatenated as value of the *Leg.gml:identifier and AngleIndication.gml:identifier value
- if it is referenced by PointReference
- which may be a descendant of one of the following <<feature>> elements:
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg
- .endPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .startPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .arcCentre.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- FinalLeg
- .visualDescentPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- RouteSegment
- .start.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .end.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityAngle
- HoldingPattern
- .outboundLegSpan_endPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .outboundLegSpan_endPointTerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .outboundLegSpan_endPoint.AerialSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint. EnRouteSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint. AerialSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityAngle
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.facilityAngle
- .anchor.AerialRefuellingAnchor.point.AerialRefuellingPoint.facilityMakeup.PointReference.facilityAngle
- .track.AerialRefuellingTrack.point.AerialRefuellingPoint.facilityMakeup.PointReference.facilityAngle
- [MAPC-07] For each <feature> element and the corresponding branch identified above:
- if necessary, apply the “timeSlice alignment” procedure described for this mapping case;
- rename the facilityAngle into angleReference and modify its theAngle child element as follows:
- remove the xlink:href attribute
- add an Angle child element having:
- gml:identifier value concatenated as value of the <feature>*.gml:identifier and AngleIndication.gml:identifier value
- note: this concatenation will prevent the risk of colliding gml:identifiers for different AngleIndication elements, in case of a circular mapping (AIXM 5.1 -> 5.2 -> 5.1);;
- angle, angleType, indicationDirection, trueAngle, cardinalDirection, minimumReceptionAltitude elements and pointChoice_* value copied from the AngleIndication element
- gml:identifier value concatenated as value of the <feature>*.gml:identifier and AngleIndication.gml:identifier value
- remove the AngleIndication element.
- For each DistanceIndication:
- if it has a child element DesignatedPoint, then:
- [MAPC-07] Find the corresponding (referencing) Designated Point and:
- if necessary, apply the “timeSlice alignment” procedure described for this mapping case;
- add PointReference.distanceReference.Distance descendant elements with the Distance element having:
- gml:identifier value concatenated as value of the DesignatedPoint.gml:identifier and DistanceIndication.gml:identifier value
- note: this concatenation will prevent the risk of colliding gml:identifiers for different DistanceIndication elements, in case of a circular mapping (AIXM 5.1 -> 5.2 -> 5.1);
- distance, minimumReceptionAltitude, type elements and pointChoice_* value copied from the DistanceIndication element
- gml:identifier value concatenated as value of the DesignatedPoint.gml:identifier and DistanceIndication.gml:identifier value
- if it is referenced by a DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg through a child distance element:
- [MAPC-07] Find the corresponding (referencing) DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg element and:
- if necessary, apply the “timeSlice alignment” procedure described for this mapping case;
- rename the distance into limitingDistance and:
- remove its xlink:href attribute
- add a Distance child element having:
- gml:identifier value concatenated as value of the *Leg.gml:identifier and DistanceIndication.gml:identifier value
- note: this concatenation will prevent the risk of colliding gml:identifiers for different DistanceIndication elements, in case of a circular mapping (AIXM 5.1 -> 5.2 -> 5.1);
- distance, minimumReceptionAltitude, type elements and pointChoice_* value copied from the DistanceIndication element
- gml:identifier value concatenated as value of the *Leg.gml:identifier and DistanceIndication.gml:identifier value
- if it is referenced by PointReference
- which may be a descendant of one of the following <<feature>> elements:
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, and ArrivalFeederLeg
- .endPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .startPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .arcCentre.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- FinalLeg
- .visualDescentPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- RouteSegment
- .start.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .end.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityDistance
- HoldingPattern
- .EnRouteSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .outboundLegSpan_endPointTerminalSegmentPoint.facilityMakeup.PointReference facilityDistance
- .outboundLegSpan_endPoint.AerialSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint. EnRouteSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint. AerialSegmentPoint.facilityMakeup.PointReference.facilityDistance
- HoldingAssessment
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.facilityDistance
- UnplannedHolding
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.facilityDistance
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.facilityDistance
- AerialRefuelling
- .anchor.AerialRefuellingAnchor.point.AerialRefuellingPoint.facilityMakeup.PointReference. facilityDistance
- .track.AerialRefuellingTrack.point.AerialRefuellingPoint.facilityMakeup.PointReference.facilityDistance
- [MAPC-07] For each <feature> element and the corresponding branch identified above:
- if necessary, apply the “timeSlice alignment” procedure described for this mapping case;
- rename the facilityDistance into distanceReference and modify it as follows:
- remove the xlink:href attribute
- add a Distance child element having:
- gml:identifier value concatenated as value of the <feature>*.gml:identifier and DistanceIndication.gml:identifier value
- note: this concatenation will prevent the risk of colliding gml:identifiers for different DistanceIndication elements, in case of a circular mapping (AIXM 5.1 -> 5.2 -> 5.1);
- distance, minimumReceptionAltitude, type elements and pointChoice_* value copied from the DistanceIndication element
- gml:identifier value concatenated as value of the <feature>*.gml:identifier and DistanceIndication.gml:identifier value
- remove the AngleIndication element.
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, and ArrivalFeederLeg
- which may be a descendant of one of the following <<feature>> elements:
- [MAPC-07] Find the corresponding (referencing) DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg element and:
- [MAPC-07] Find the corresponding (referencing) Designated Point and:
- if it has a child element DesignatedPoint, then:
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg
- which may be a descendant of one of the following <<feature>> elements:
- [MAPC-07] Find the corresponding (referencing) DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg element and:
- [MAPC-07] Find the corresponding (referencing) Designated Point and:
- if it has a child element DesignatedPoint, then:
Mapping AIXM 5.2 to AIXM 5.1.1 (backward)
The following algorithm shall be applied:
- ****Note: see [AIXM-404] Add <<object>> persistent identifiers. It is assumed that, in order to facilitate the backward mapping, the Angle and Distance objects will have their own unique gml:identifier (UUID) value.
- For each Angle element:
- [MAPC-07] Create an AngleIndication <<feature>> element that retains all its child/descendant elements, including the gml:identifier value and:
- copy the parent’s feature validTime and lifetime values for the new AngleIndication feature
- if the parent element is a limitingAngle of a DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg:
- rename the parent limitingAngle into angle and:
- copy the value of the Angle.gml:identifier into angle@xlink:href
- delete the Angle element
- if the parent element is an angleReference
- which is the descendant of one of the following <feature> elements:
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg
- .endPoint.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- .startPoint.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- .arcCentre.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- FinalLeg
- .visualDescentPoint.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- EnrouteSegment
- .start.EnRouteSegmentPoint.facilityMakeup.PointReference.angleReference
- .end.EnRouteSegmentPoint.facilityMakeup.PointReference.angleReference
- HoldingPattern
- .outboundLegSpan_endPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.angleReference
- .outboundLegSpan_endPointTerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- .outboundLegSpan_endPoint.AerialSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint. EnRouteSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint. AerialSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.angleReference
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.angleReference
- .anchor.AerialRefuellingAnchor.point.AerialRefuellingPoint.facilityMakeup.PointReference.angleReference
- .track.AerialRefuellingTrack.point.AerialRefuellingPoint.facilityMakeup.PointReference.angleReference
- rename the ancestor angleReference into facilityAngle and:
- copy the value of the Angle.gml:identifier into facilityAngle.AngleUse.theAngleIndication@xlink:href
- delete the Angle element
- If the parent element is an angleReference which is the descendant of a DesignatedPoint:
- Add a fix child element to the newly created AngleIndication that has @rxlink:href value copied from the DesignatedPoint’s gml:identifier’
- [MAPC-02] If the fix.PointReference has other child elements than just the angleReference, then from the three backward mapping options available in this case, the first two (discard the value or use an extension) are straightforward and do not need any further details. The 3rd option (backward mapping into a Note) is detailed in order to provide a complete description of this case and its conversion option. The following mapping into Note algorithm is proposed:
- Add an annotation.Note associated with the AngleIndication
- purpose=“OTHER:BACKWARD_MAPPING”;
- LinguisticNote.note = “role: <value of role>, priorFixTolerance: <value of priorFixTolerance>, postFixTolerance: <value of postFixTolerance>, minimumReceptionLimit: <value of minimumReceptionLimit>, minimumReceptionLimitReference: <value of minimumReceptionLimitReference>, maximumAuthorisedLimit: <value of maximumAuthorisedLimit>, maximumAuthorisedLimitReference: <value of maximumAuthorisedLimitReference>, alongCourseGuidance: <value of AngleUse.alongCourseGuidance>”
- Remove the fix object from the DesignatedPoint
- rename the parent limitingAngle into angle and:
- [MAPC-07] Create an AngleIndication <<feature>> element that retains all its child/descendant elements, including the gml:identifier value and:
- For each Distance element:
- Create a DistanceIndication <<feature>> element that retains all its child/descendant elements, including the gml:identifier value and:
- copy the parent’s feature validTime and lifetime values for the new DistanceIndication feature
- if the parent element is a limitingDistance of a DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, or ArrivalFeederLeg:
- rename the parent limitingDIstance into distance and:
- copy the value of the Distance.gml:identifier into distance@xlink:href
- delete the Distance element
- if the parent element is an distanceReference
- which is the descendant of one of the following <feature> elements :
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, and ArrivalFeederLeg
- .endPoint.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- .startPoint.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- .arcCentre.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- FinalLeg
- .visualDescentPoint.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- EnrouteSegment
- .start.EnRouteSegmentPoint.facilityMakeup.PointReference.distanceReference
- .end.EnRouteSegmentPoint.facilityMakeup.PointReference.distanceReference
- HoldingPattern
- .EnRouteSegmentPoint.facilityMakeup.PointReference.distanceReference
- .outboundLegSpan_endPointTerminalSegmentPoint.facilityMakeup.PointReference distanceReference
- .outboundLegSpan_endPoint.AerialSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint. EnRouteSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint. AerialSegmentPoint.facilityMakeup.PointReference.distanceReference
- HoldingAssessment
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.distanceReference
- UnplannedHolding
- .holdingPoint.EnRouteSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint.TerminalSegmentPoint.facilityMakeup.PointReference.distanceReference
- .holdingPoint.AerialRefuellingPoint.facilityMakeup.PointReference.distanceReference
- AerialRefuelling
- .anchor.AerialRefuellingAnchor.point.AerialRefuellingPoint.facilityMakeup.PointReference. distanceReference
- .track.AerialRefuellingTrack.point.AerialRefuellingPoint.facilityMakeup.PointReference.distanceReference
- rename the ancestor distanceReference into facilityDistance and:
- copy the value of the Distance.gml:identifier into facilityDistance@xlink:href
- delete the Distance element
- If the parent element is a distanceReference which is the descendant of a DesignatedPoint:
- DepartureLeg, ArrivalLeg, FinalLeg, InitialLeg, IntermediateLeg, MissedApproachLeg, and ArrivalFeederLeg
- Add a fix child element to the newly created DistanceIndication that has @xlink:href value copied from the DesignatedPoint’s gml:identifier’
- [MAPC-02] If the fix.PointReference has other child elements than just the distanceReference, then from the three backward mapping options available in this case, the first two (discard the value or use an extension) are straightforward and do not need any further details. The 3rd option (backward mapping into a Note) is detailed in order to provide a complete description of this case and its conversion option. The following mapping into Note algorithm is proposed:
- which is the descendant of one of the following <feature> elements :
- Add an annotation.Note associated with the AngleIndication
- purpose=“OTHER:BACKWARD_MAPPING”;
- LinguisticNote.note = “role: <value of role>, priorFixTolerance: <value of priorFixTolerance>, postFixTolerance: <value of postFixTolerance>, minimumReceptionLimit: <value of minimumReceptionLimit>, minimumReceptionLimitReference: <value of minimumReceptionLimitReference>, maximumAuthorisedLimit: <value of maximumAuthorisedLimit>, maximumAuthorisedLimitReference: <value of maximumAuthorisedLimitReference>”
- Remove the fix object from the DesignatedPoint
- [MAPC-02] For each PointReference object (that is not the descendant of a DesignatedPoint) that has minimumReceptionLimit and/or minimumReceptionLimitReference and/or maximumAuthorisedLimit and/or maximumAuthorisedLimitReference values, from the three backward mapping options available in this case, the first two (discard the value or use an extension) are straightforward and do not need any further details. The 3rd option (backward mapping into a Note) is detailed in order to provide a complete description of this case and its conversion option. The following mapping into Note algorithm is proposed:
- Add an annotation.Note associated with the owner class having
- purpose=“OTHER:BACKWARD_MAPPING”;
- translatedNote.LinguisticNote.note = “minimumReceptionLimit: <value of minimumReceptionLimit>, minimumReceptionLimitReference: <value of minimumReceptionLimitReference>, maximumAuthorisedLimit: <value of maximumAuthorisedLimit>, maximumAuthorisedLimitReference: <value of maximumAuthorisedLimitReference>”>
- rename the parent limitingDIstance into distance and:
- Create a DistanceIndication <<feature>> element that retains all its child/descendant elements, including the gml:identifier value and:
Mapping example
(Note: for mapping test data see: https://github.com/aixm/mapping_52_511/tree/master/AIXM-xxx)
AIXM Input | AIXM Output |
---|---|