The following categories of low-level messages are shared by all data layers of HERE Lanes to express common concepts consistently across layers and support the extension of HERE Lanes:
- Tile (Partition) References
- Topology References
- Local Verses Tiled Topology References
- Parametric Locations and Ranges
- Link Strand Attribution Reference
- Relative Direction
Tile (Partition) References
Map tiles are stored in partitions in each layer. In HERE Lanes, these data partition identifiers are published as uint32 values using the HEREtile id scheme, as shown in the PartitionReference message (schema documented below).
Link and Node references are published as uint32 values. Unlike tile references, they have no underlying structure.
For size efficiency, these and other single-value messages are commonly in-lined (i.e. represented without the wrapper message) when used in parent messages.
For repeated tiled references you may see these messages in-lined as a pair of parallel repeated fields to leverage significant size advantages of Native (Protobuf) packed arrays of primitive values, as shown in the example below:
// List of links that join this node and their home tiles. Counts must match. repeated uint32 connected_link_here_tile_ids = 2 [packed=true]; repeated uint32 connected_link_local_refs = 3 [packed=true];
For details on the differences between local and tiled Link and Node references, and the schema of corresponding messages, see the next section (below).
Local Verses Tiled Topology References
Links, Nodes and other uniquely identifiable features in HERE Lanes all have a "home" tile where their definition is stored.
Links and Nodes are commonly referenced from other non-home tiles. In these cases, it is very useful to include the feature's home tile partition reference to ease access to the feature definition. For example, all the topology tiles that are intersected by a given Link will have a reference back to the Link and its home tile.
We separately model reference types for Links and Nodes that must be in the current tile, verses Links and Nodes that could be in any tile (including the current tile). These separate references are prefixed with "Local" and "Tiled" respectively. For the "Tiled" references, the tile ID must always be populated, even if the feature happens to be in the current tile.
For schema documentation of Link and Node messages, see the links below:
Schema for "LocalLinkReference".
Schema for "LocalNodeReference".
Schema for "TiledLinkReference".
Parametric Locations and Ranges
The ParametricLocation and ParametricRange messages (see the schema documentation below) are used to indicate a position on, or sub-section of, a linear feature. These messages are commonly used to associate attributes with Links and Lanes.
We encode parametric locations as floating-point values between 0.0 - 1.0 that represent a distance along the geometry for a given feature. In the case of line strings such as Links, these values are simple linear distance ratios. For example a value of 0.45 would occur 45% along the total linear length of the link. For Lane-based geometries, these values represent relative offsets (i.e. length fractions) along a Lane or Lane Group.
For ranges, the first value in a start/end pair is the distance from the start of the feature geometry, and the second value is the distance from the end of the feature geometry. For example, a range covering the middle 50% of a Link would have start/end values of 0.25/0.25 respectively. This approach is used to allow the most common case of the whole range to be represented as 0.0/0.0, which takes no space on the wire in the Protocol Buffer format.
Link Strand Attribution Reference
Attribution references to Link Strands are a little unique. Link Strands exist to associate a single attribution value to the map topology. The strand itself does not have a permanent external identity. Yet this structure does need to be referenced from outside its home tile. So its identity is associated with the attribution value rather than the strand.
An outcome of this association is that two attributes which happen to reference the exact same Link Strand definition (i.e. the same ordered set of Links and start/end ranges) will be modeled independently, each with their own identity, repeating the Link Strand definition.
Schema for "StrandAttributionLocalReference".
The RelativeDirection enumeration defines an absolute direction along a linear feature, relative to some other intrinsic orientation. For example, a direction of travel attribute, relative to the logical orientation of the Link from start to end node. Possible values:
- "FORWARD" is in the same direction as the logical orientation.
- "BACKWARD" is in the opposite direction to the logical orientation.
- "BOTH" applies to both directions.
- "UNKNOWN" indicates the value was not specified or was an new value not in the current version of the model.