Permanent ID for OSM: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
(Alternatives)
(Status of OSM id)
Zeile 19: Zeile 19:
 
* 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  
 +
* Mapbox Vector Tiles: rely also on OSM id plus Node, Way, Relation: see below.
  
 
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.
 
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.

Version vom 22. Juli 2020, 13:37 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. 

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):

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

For the use case to really permanently refer to an OSM object see also the 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

Overpass' Permanent ID

The Permanent_ID from Overpass is a solution where one expects to see the details (= "Link to Browse Object"): https://wiki.openstreetmap.org/wiki/Overpass_API/Permanent_ID

Others

  • OpenLR (Location Referencing) - a free spec. by TomTom for linear geometries like streets [2].
  • The geographical object IDs from authorities like Ordnance Survey UK or Swisstopo CH.