OpenStreetMap

4000 gelöschte Place-Nodes in Deutschland – und nun?

Posted by malenki on 11 February 2016 in German (Deutsch)

Screenshot gelöschter, wiederhergestellter places in Deutschland

Edit: Damit "4000 gelöschte Orte" nicht so abstrakt daherkommen, habe ich auf umap daraus eine Karte erstellt.

Kürzlich stieß ich wieder einmal auf einen der Mapper, der etliche place-Nodes löschte, weil die ja auch am landuse stehen (oder er sie (teilweise) dorthin kopiert hatte).[0]

Nun steht ja im Wiki, dass man places sowohl als node, als auch als way als auch mit beidem mappen kann, also ist das, was die Mapper da treiben, im Prinzip nicht verkehrt. Mich stören aber zwei Dinge: Zum Einen sind die Nodes in der Regel einige Jahre älter als die Umringe der Ortschaften. Mit diesen Löschungen geht ein Teil der OSM-Geschichte verloren. Zum Anderen schaffen es manche der Mapper nicht, alle Tags zu kopieren…

Da ich über längere Zeit etliche solcher Löschungen gesehen hatte, wollte ich nun wissen, wieviel places in Deutschland denn im Laufe der Zeit insgesamt gelöscht wurden.
Dazu habe ich die Overpass API für jedes deutsche Bundesland für September 2012 (Beginn der Overpass-API-Zeitrechnung), die ersten Januare von 2013-15 und Februar 2016 nach allen place=nodes gefragt.[1] Eine Abfrage über ganz Deutschland ist offenbar zu ressourcenhungrig und läuft in einen Timeout.
Die Abfrageresultate für 2012-2015 und die für 2016 habe ich jeweils zu einem deutschlandweiten Datensatz verbunden.

Places mit den Werten "locality, field, location, political_structure, yes, island, islet" habe ich ignoriert:

$ osmfilter 2016-02-10_Germany_places_node.osm --drop="place=locality \  
=field =location =political_structure =yes =island =islet" \  
--keep-tags="all place= name=" > \  
2016-02-10_Germany_places_node_nur_name_und_valide_plätze.osm

Von den places will ich nur die Node-IDs vergleichen:

$ osmconvert 2012-2015_Germany_places_node_nur_name_und_valide_plätze.osm \  
--all-to-nodes --csv="@id" --csv-headline| sort|uniq > \  
2012-2015_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv

Resultate

Wenn man nur die Daten zwischen dem 12.09.2012 und dem 11.02.2016 vergleicht, wurden 5429 places neu erstellt und 3266 gelöscht.

Zieht man noch die Daten von 2013-2015 in Betracht, wurden in diesem Zeitraum weitere 526 places erstellt und wieder gelöscht, so dass die Gesamtzahl gelöschter place-nodes 3792 beträgt.[2] Für die Überschrift habe ich etwas aufgerundet, weil a) 4000 viel reißerischer klingt als so eine krumme Zahl :)und b) sicherlich auch innerhalb eines Jahres place-nodes entstehen und vergehen, die durch mein Raster gefallen sind.

Die IDs habe ich in eine Datei geschrieben[3], etwas umformatiert und über das undelete-Plugin wiederhergestellt. Dort lauert aber seit langer Zeit die Falle, dass Objekte mit einem Redaction-Vorgang in der History nicht wiederhergestellt werden.
(Sinnvollerweise hätte ich gleich die undelete-Tools aus dem OSM SVN-Repository verwenden sollen. Für die nicht wiederhergestellten 85 Nodes war ich zu bequem, diese zu bemühen und habe ein paar gruslige Einzeiler dafür verwendet.)

Von den gelöschten places hatten in der letzten Version 3045 ein name-Tag:

grep -w "'name'" places_gelöscht_wiederhergestellt_inclusive_redacted.osm -c
3045

Nun habe ich die 3792 wiederhergestellten place-Nodes – und weiß nicht, was ich damit tun soll. Die in meiner Region – Landkreis Mittelsachsen – schaue ich garantiert durch, aber alle selbst zu überprüfen und gegebenenfalls selbst wiederherzustellen ist mir zuviel Aufwand. Wären das eine Idee für eine Wochenaufgabe? Für Maproulette? Oder soll ich sie ins Wiki kippen und auf das Beste hoffen?

Wer sich die Daten mit den wiederhergestellten Nodes anschauen will, kann sie hier herunterladen. Die Rohdaten finden sich hier.

Im Forum habe ich einen Thread eröffnet, weil dort mehr diskutierendes Publikum verkehrt.

Fußnoten
[0] Nein, ich habe ihn noch nicht kontaktiert und möchte ihn auch nicht an den Pranger stellen. Er steht hier nur als Beispiel für diese Art Mapper und des Mappens.

[1]

for i in $(less areas); do wget --timeout=1800 "https://overpass-api.de/api/interpreter?data=%5Bout%3Axml%5D%5Btimeout%3A1800%5D%5Bdate%3A%222013-01-01T00%3A00%3A00Z%22%5D%3B%0Aarea%28\  
$(echo "$i"| cut -d "_" -f 2)%29-%3E.searchArea%3B%0A%0A%28%0A%20%20node%5B%22place%22%5D%28area.searchArea%29%3B%0A%29%3B%0Aout%20meta%3B%0A%3E%3B%0Aout%20meta%20qt%3B" -O - > \  
"2013-01-01_$(echo "$i"| cut -d "_" -f 1)_places_node.osm" && sleep 100 && wget --timeout=1800 \  
"https://overpass-api.de/api/interpreter?data=%5Bout%3Axml%5D%5Btimeout%3A1800%5D%5Bdate%3A%222014-01-01T00%3A00%3A00Z%22%5D%3B%0Aarea%28\  
$(echo "$i"| cut -d "_" -f 2)%29-%3E.searchArea%3B%0A%0A%28%0A%20%20node%5B%22place%22%5D%28area.searchArea%29%3B%0A%29%3B%0Aout%20meta%3B%0A%3E%3B%0Aout%20meta%20qt%3B"\  
-O - > "2014-01_01_$(echo "$i"| cut -d "_" -f 1)_places_node.osm" && sleep 100 && \  
wget --timeout=1800 "https://overpass-api.de/api/interpreter?data=%5Bout%3Axml%5D%5Btimeout%3A1800%5D%5Bdate%3A%222015-01-01T00%3A00%3A00Z%22%5D%3B%0Aarea%28\  
$(echo "$i"| cut -d "_" -f 2)%29-%3E.searchArea%3B%0A%0A%28%0A%20%20node%5B%22place%22%5D%28area.searchArea%29%3B%0A%29%3B%0Aout%20meta%3B%0A%3E%3B%0Aout%20meta%20qt%3B"\  
-O - > "2015-01_01_$(echo "$i"| cut -d "_" -f 1)_places_node.osm"; done

"areas" ist eine Liste der deutschen Bundesländer mit Name und der API-internen ID dieser Fläche:

Baden-Württemberg;3600062611
Bayern;3602145268
Berlin;3600062422;
Brandenburg;3600062504
Bremen;3600062718
Hamburg;3602618040
Hessen;3600062650
Mecklenburg-Vorpommern;3600028322
Niedersachsen;3600062771
Nordrhein-Westfalen;3600062761
Rheinland-Pfalz;3600062341
Saarland;3600062372
Sachsen;3600062467
Sachsen-Anhalt;3600062607
Schleswig-Holstein;3600051529
Thüringen;3600062366

[2] comm lieferte die Daten, wc die Zahlen:

$ comm 2012-2015_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv \  
2016-02-10_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv -23|wc -l

3792

$ comm 2012-09-12_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv \  
2016-02-10_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv -23|wc -l

3266

$ comm 2012-2015_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv \  
2016-02-10_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv -13|wc -l

5429

[3]

$ comm 2012-2015_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv \  
2016-02-10_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv -23 > places_gelöscht_ID

$ comm 2012-2015_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv \  
2016-02-10_Germany_places_node_nur_name_und_valide_plätze_nur_id.csv -13 > places_neu_ID
Location: 51.221, 10.679

Login to leave a comment