Permanent ID for OSM: Unterschied zwischen den Versionen
Stefan (Diskussion | Beiträge) K (→Status of OSM id) |
Stefan (Diskussion | Beiträge) K (→Status of OSM id) |
||
Zeile 15: | Zeile 15: | ||
One can use OSM id nevertheless (at own risk)! Many variants are known: | One can use OSM id nevertheless (at own risk)! Many variants are known: | ||
− | '''As is with OSM id (bigint)''' and a code for Node, Way, Relation in front. | + | '''As is with OSM id (bigint)''' and a code for Node, Way, Relation e.g. in front (e.g. W417258377). |
− | Currently many applications depend on plain osm_id, eventually preceeded by node,way,relation (or N/W/R), like theses web applications | + | Currently many applications depend on plain osm_id, eventually preceeded by node,way,relation (or N/W/R), like theses web applications (given example of "Denner Hombrechtikon" https://www.openstreetmap.org/node/6313169265): |
− | |||
* Qwant Maps: Example Denner Hombrechtikon https://www.qwant.com/maps/place/osm:node:6313169265@Denner#map=18.00/47.2519793/8.7681836 | * Qwant Maps: Example Denner Hombrechtikon https://www.qwant.com/maps/place/osm:node:6313169265@Denner#map=18.00/47.2519793/8.7681836 | ||
* Castle Map: Example Schloss Rapperswil https://castle-map.infs.ch/#46.805,8.205,8z,W417258377 | * Castle Map: Example Schloss Rapperswil https://castle-map.infs.ch/#46.805,8.205,8z,W417258377 | ||
− | Another | + | Another adoption of osm_id with enhanced type space (length) properties is to convert it to a '''single big integer''': It's possible to encode the type (Node, Way, Relation) into the OSM id as a single integer (64 bit). (Source: Mapbox, see [https://docs.mapbox.com/vector-tiles/reference/mapbox-streets-v8/#openstreetmap-ids]). Example: "Schloss Kyburg" is a relation with id 1169711, so it becomes 11697114. |
for Nodes: osm_id = <node id> × 10 (eg. 123 → 1230), | for Nodes: osm_id = <node id> × 10 (eg. 123 → 1230), |
Version vom 22. Juli 2020, 13:21 Uhr
This is an unofficial proposal for a "permanent ID" (osm_pid) for OpenStreetMap (OSM). See here for a more well known place for discussions.
Inhaltsverzeichnis
Goals and Requirements
The goal is to get an opaque (eventually fixed) length ASCII string for an OSM id.
That are the design considerations:
- The OSM id alone is not stable enough (as probably most agree); and it can represent many concepts (and that's by design in OSM).
- The version no. of the object is needed which makes clear which tags are (or have been) referred to.
- Coordinates are needed, because a change of the way and area geometries does not increment the version number.
Status of OSM id
One can use OSM id nevertheless (at own risk)! Many variants are known:
As is with OSM id (bigint) and a code for Node, Way, Relation e.g. in front (e.g. W417258377). Currently many applications depend on plain osm_id, eventually preceeded by node,way,relation (or N/W/R), like theses web applications (given example of "Denner Hombrechtikon" https://www.openstreetmap.org/node/6313169265):
- Qwant Maps: Example Denner Hombrechtikon https://www.qwant.com/maps/place/osm:node:6313169265@Denner#map=18.00/47.2519793/8.7681836
- Castle Map: Example Schloss Rapperswil https://castle-map.infs.ch/#46.805,8.205,8z,W417258377
Another adoption of osm_id with enhanced type space (length) properties is to convert it to a single big integer: It's possible to encode the type (Node, Way, Relation) into the OSM id as a single integer (64 bit). (Source: Mapbox, see [1]). Example: "Schloss Kyburg" is a relation with id 1169711, so it becomes 11697114.
for Nodes: osm_id = <node id> × 10 (eg. 123 → 1230), for Ways: osm_id = (<way id> × 10) + 1 (eg. 123 → 1231), for Relations: osm_id = (<relation id> × 10) + 4 (eg. 123 → 1234).
Format of OSM Permanent ID
A stable Permanent ID could have the following form (variable length to a maximum of currently 35 chars):
[N|W|R]<osm_id>#<version>[+|-]<lon>[+|-]<lat>
where:
- N,W,R stands for Node, Way, or Relation.
- osm_id an unsigned big integer ("digits").
- version is an unsigned integer with a hash in front.
- coordinates (lat/lon) are signed floats (always showing the +/- sign), with a maximum of 6 digits. In case of a line (linestring) or an area/relation (polygon) geometries the coordinates taken into account are the lat/lon minimum of the geometry.
Example: "Schloss Kyburg" (Castle Kyburg) has relation 1169711, version #5 at coordinates 47.4584, 8.74343 which becomes following Permanent ID:
osm_pid = R1169711#5+47.4584+8.74343
OSM Permanent ID Service
In order to be really useful, a service should be implemented, which returns most recent object given a possibly old Permanent ID if an object has been changed; thus having another Permanent ID where any of it's parts may have changed (most probably just the version no.). Such a service must have access to the fully planet including the history and it must be reliable and responsive.
Alternatives
See https://wiki.openstreetmap.org/wiki/Permanent_ID for a more official state of discussions.
'geo' URI as OSM Permanent ID
Use URI Scheme "Uniform Resource Identifier for Geographic Locations " ('geo' URI).
For a promising implementation see Mangrove.reviews.
Example: Supermarket Denner Partner, Hombrechtikon, https://www.openstreetmap.org/node/6313169265
OpenLR
OpenLR (Location Referencing) - a free spec. by TomTom for linear geometries like streets [2].