The topology and 2D line string geometry for the road map is provided in tiles in the "road-topology-geometry" layer of the catalog. The content of these tiles is defined in the layer-road-topology-geometry.proto and geometry.proto schema files.
The top-level message for topology-geometry tiles is TopologyLayerTile. The Node and Link objects are the building blocks of road topology. Geometry: Points and Line Strings provides geometry for this topology.
TopologyLayerTile is the top-level message for road-topology-geometry layer tiles. It contains the definitions of the Links and Nodes that live in this tile, as well as references to all Links that intersect this tile.
Inclusion Rules for Topology Tile:
- Nodes with point geometry that falls in the tile.
- Links with start Nodes that fall in the tile, per above.
- Link Strands with first Links that fall in the tile, per above.
Nodes are very simple. They are represented by an ID, the list of Links that connect to them, and a 2D point in road geometry.
Links are also relatively simple, but have a few elements worth mentioning:
The start and end Nodes of a Link have different reference data types. The start Node, by definition, must be in the same tile as its Link, so it only needs a local reference ID. The end Node may be in a different tile, so must be a tiled Node ID. Even when the end Node happens to be in the current tile, the tile ID of the end Node will be provided for consistency.
The entire Link geometry is published in the Link's home tile, regardless of what other tiles it may overlap.
Links also contain the list of tiles their geometry intersects (including the current tile). For each tile the Link touches, the parametric range of the Link that falls in that tile is also indicated. This information is used in conjunction with "intersecting_link_refs" in the top-level TopologyLayerTile message to ease overall resolution of link overflows.
Geometry: Points and Line Strings
Coordinates of 2-dimensional points are represented using the HERE coordinate encoding schema. For background, see HERE Lanes Coordinate Encoding.
The z_level_index indicates the vertical stacking of co-located points. It defaults to 0.
Line strings are a series of points, strung together to form a line Polylines with additional shape points.
To minimize storage space, the 2D point coordinates of line strings are offset-encoded (XOR diff) against the previous value in the list, enabling the Protocol Buffer encoder to represent the smaller values with less bytes. The first value in the list is offset-encoded against the tile center point exposed in the top-level TopologLayerTile message discussed above. For details on offset encoding, see HERE Lanes Coordinate Array Offset Encoding as well as the related background topic linked to above.
Schema of messages related to Points and Line Strings:
Schema of "LineString2dOffset".
Schema of "LineString3dOffset".