Specifying Holes in Location-to-Service Translation (LoST) Service Boundaries
Extracted elements (18)
A GML profile was defined (rather than using full GML) to remove permutations that are difficult to process, allowing simplified implementations while still ensuring interoperability through mandatory profile compliance.
Holes are specified with points in clockwise order so their upward normal opposes the upward normal of the exterior boundary, providing a consistent geometric convention that distinguishes interior from exterior rings.
Interior boundaries were chosen because many geospatial databases natively support polygons with interior exclusions, enabling efficient real-time queries needed for emergency call routing without requiring additional application-level processing.
The working group considered representing hole-containing regions as collections of polygons without holes but rejected this to avoid problems with arbitrary division of regions and to align with established geospatial system practices.
Polygon vertices may be expressed using either individual gml:pos elements or a single gml:posList element; both forms are equivalent and must be treated identically by receivers.
This document defines a restricted profile of GML [ISO-19107] polygons for service boundary descriptions. Implementations that do not support all GML variations must still produce output conformant to this profile.
A fully conformant GML implementation must produce polygons that fit this profile to ensure interoperability with simplified implementations that are not capable of handling all GML permutations.
A hole MUST be formed from a legal linear ring in accordance with [geoshape], except that points are specified in a clockwise direction, so that the upward normal opposes that of the exterior boundary.
A polygon MUST describe a contiguous region. If a hole overlaps with the outer boundary or shares part of a side with the outer boundary (creating an inlet), it MUST be expressed without the hole.
If a hole touches the outer boundary in two places, the region MUST be expressed as two separate polygons. Similarly, a polygon enclosed entirely within a hole (an 'island') is a separate polygon.
Two holes MUST NOT have more than one point of intersection. If two or more holes overlap or share a common boundary, they represent a single hole and must be merged into one with shared boundaries removed.
A hole in a service boundary is specified as a GML interior boundary (gml:interior containing a gml:LinearRing) within the enclosing gml:Polygon element. The hole's area is excluded from the outer service mapping.
A LoST service boundary is represented by a GML polygon whose enclosed exterior area maps a service URN to a single destination URI. Holes within the polygon represent sub-areas that map to a different service destination.
Each hole-representing inner polygon must also be stored as a separate standalone polygon (with its vertices in counterclockwise order for the exterior boundary) mapped to its own service URN and destination URI.
Constraining the form of a polygon representation as described in this document does not introduce new security considerations beyond those already present in the LoST protocol [RFC5222].
A hole is encoded as a gml:interior/gml:LinearRing element within the gml:Polygon, with vertices listed in clockwise order. The exterior boundary vertices are listed counterclockwise per [geoshape].
GML polygons are encoded using gml:Polygon with srsName='urn:ogc:def:crs:EPSG::4326'. The exterior boundary uses gml:exterior/gml:LinearRing with gml:pos (or gml:posList) elements; the first and last points must be identical to close the ring.
Service boundary mappings are conveyed as LoST <mapping> elements (namespace urn:ietf:params:xml:ns:lost1) containing a <serviceBoundary profile='geodetic-2d'> element that wraps the gml:Polygon, including any interior hole boundaries.