[Talk-de] Permanente/stabile OSM IDs!
Werner Hoch
werner.ho at gmx.de
Mo Jul 23 22:38:30 UTC 2012
Hallo,
Am Sonntag, den 22.07.2012, 21:22 +0200 schrieb Stefan Keller:
> 1. Sind OSM ID's wirklich instabil? bzw. Wann ändern IDs
> "ungewollt/unfreiwillig"?
>
> Oben wird die Overpass Permanent ID erwähnt
> (http://wiki.openstreetmap.org/wiki/Overpass_API/Permanent_ID ) und
> dort steht: "...you shouldn't use an object ID, because the OSM IDs
> may change at any time." Das würde ich gerne mal näher analysieren:
>
> Ein klarer Fall für ein Löschen und Neu-Einfügen (mit neuer ID)
> scheint mir zu sein, wenn das auch in der realen Welt der Fall ist:
> Wenn z.B. ein Gebäude abgerissen und neu erstellt wird, oder ein
> wichtiger Einzelbaum gefällt und neu gepflanzt wird.
>
> Soeben realisiere ich, dass wenn Nodes (mit Tags) lagemässig
> verschoben werden, ein neuer Node mit neuer ID und neuen Koordinaten
> und den "geretteten" Tags erzeugt wird (zumindest in JOSM), während
> dessen alte Koordinaten als "normaler Way-Node zurückbleiben. Das ist
> aber kein logisch zwingender Grund, sondern technischer Mangel.
Dieses Problem lässt sich umgehen, wenn man nicht mit der Version des
Weges arbeitet, sondern zusätzlich mit einem Datum.
Ein way X lässt sich zu jedem Zeitpunkt und immer gleich aus OSM (und
der OSM-Historie) extrahieren.
Dieses Objekt(mit Datum) ist stabil. Diese Information ließen sich
cachen und bei Bedarf gegen die Objekte mit aktuellerem Datum
abgleichen.
Wie kommt man an das Objekt mit ObjektID+Datum?
--> alle referenzierten Objekte mit dem entsprechenden Datum ermitteln.
Die Ermittlung ist ohne komplette Datenbank mit OSM-Historie sehr
aufwändig.
Vor einigen Jahren habe ich mal einen Prototypen geschrieben, der über
die API aus der OSM-DB ein Objekt zu jedem Zeitpunkt ermitteln kann:
Beschreibung:
http://www.h-renrew.de/h/osm/tools/osmhistory.html
Quelltext:
https://github.com/werner2101/python-osm
Anmerkungen:
* Bei der Eindeutigkeit gibt es eine gewisse Unschärfe, weil die
Changesets AFAIK nicht atomar in die OSM-Datenbank eingetragen werden.
* Ich weiß nicht ob der Code mit Objekten noch geht, die vom Redaction
Bot verändert wurden.
Grüße
Werner
Mehr Informationen über die Mailingliste Talk-de