Skip to content

Commit fd0451c

Browse files
committed
Add tolerance information.
1 parent 893c54c commit fd0451c

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

docs/osmlr_updates.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ OSMLR is designed to provide persistent and (mostly) stable identifiers that rep
66

77
The OSMLR process (as does the OSMLR creation process) relies on [Valhalla](https://github.com/valhalla) libraries and data. This provides a "routing graph" from which intersections and sections of road between intersections can easily be derived. Valhalla includes a process to "associate" or match OSMLR Ids and segment definitions to Valhalla edges (or portions of edges). This association can be performed multiple times against an existing OSMLR definition as the underying map data is updated. The association process matches OSMLR segments to roads within specific *tolerances*. These tolerances include how closely the OSMLR Location Reference Points (LRP) match to Valhalla edges and intersections. It also includes tolerances for how closely headings match at LRPs and how closely lengths of the road segment between LRPs match the OSMLR segment definition. Usually the road network data changes slowly (especially on more established, higher classification roads) and the large majority of OSMLR segments properly match the updated Valhalla road graph data. However, some data updates will force existing segments to be deprecated/deleted as the changes result in no matching roads to be found within tolerance of the OSMLR segment. These deleted segments may result in new, replacement OSMLR segments with unique Ids. Also, data updates may represent newly constructed roads (or newly added to the base data) which require new OSMLR segments.
88

9+
Tolerances used when associating OSMLR segments to Valhalla road segments include:
10+
* ++Distance from the LRP.++ This is the distance intersections (nodes) with the routing graph must be from the LRP or distance from the LRP to the closest point along the road segment if the LRP is not placed at an intersection. The default is 20 meters.
11+
* ++Heading / bearing.++ This is the difference between the bearing specified for the OSMLR segment and the bearing computed for the road segment. The default tolerance is 15 degrees.
12+
* ++Length.++ The length tolerance is the difference in length between the OSMLR segment and the road segment. The default is 20 meters. We are experimenting with a variable tolerance based on the lenght of the OSMLR segment.
13+
* ++Road classification.++ The road classification may change slightly properly associate OSMLR to the road segment. As long as the classification does not change the Valhalla hierarchy (tile level) the association remains valid. Examples are changes betweem motorway, trunk, or primary and changes between secondary and tertiary. Examples that no longer can be associated are changes between secondary and primary or between unclassified and tertiary.
14+
915
OSMLR segments are **immutable**. While underlying data changes, as long as the roads match the OSMLR segments within specific tolerances the OSMLR segment remains valid. Properties of the OSMLR segment do NOT get updated. This decision has positives and negatives:
1016

1117
* On the plus side this protects against a segment "drifting" through time such that each successive version matches (within tolerance) the prior version, but may not match earlier versions.

0 commit comments

Comments
 (0)