Unabsichtliche Löschungen in vielen Änderungssätzen rückgängig machen?

Hallo,

ich habe hier in “meinem Ort” ein Problem, auf das ich keine Lösung weiß und hoffe auf Eure Hilfe.

Nachdem ich in jüngster Zeit eigene Eintragungen in der Karte vermisse, bin ich der Sache nachgegangen und stellte folgendes fest. Seit drei Monaten ist ein User aktiv dabei, Häuser im Ort einzuzeichnen, löscht dabei aber aus Unwissenheit “störende Punkte”, wie z.B. amenities, shops, benches etc. Die Karte zeigt nun den Ort mit vielen hübschen Häuschen, hat aber dafür einiges an Metainformationen eingebüßt. Ich schätze, dass nun einige dutzend Punkte mitsamt Metadaten fehlen.

Mit dem betreffenden User habe ich zwischenzeitlich Kontakt aufgenommen und auch telefoniert. Er sieht den Fehler auch ein und ist kooperationswillig, weil er die Häuser für die freiwillige Feuerwehr erfasst. Alles sehr löblich, aber die Frage bleibt: Was tun?

Von seiner Seite sind es über 200 Änderungssätze.

Wie kann ich bzw. können wir alle versehentlich gelöschten Punkte wieder herstellen und gleichzeitig die erfassten Häuser behalten?

Kann ich irgendwie einen speziellen “Diff” erzeugen, der alle Löschungen seit dem Tag der ersten Bearbeitung des betreffenden Users im Ortsgebiet aus den Änderungssätzen beeinhaltet und diese anschließend nach manueller Prüfung neu comitten?

Grüße
Minti

Mit Overpass Turbo kannst du einen Diff erzeugen. Hier mal eine Beispielanfrage, die die Diff von Shop-Nodes abfragt: http://overpass-turbo.eu/s/9Tg

Doku: http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Delta_between_two_dates_.28.22diff.22.29

Edit: Filter nach User in Overpass-Abfrage eingebaut.

Ja, ein Teil davon geht mit der (a)diff-Funktionalität der Overpass-API.

http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Delta_between_two_dates_.28.22diff.22.29

Dann müsstest du zusätzlich noch nach User filtern.

Die Ergebnisse der Overpass-Abfrage kannst du nach JOSM laden, und dann angucken und nach Prüfung neu einspielen.

Bekommt man über den Diff denn auch gelöschte Nodes ausgegeben?

Da gibt es sicherlich viele denkbare Herangehensweisen.

Was ich tun würde (unter Linux und mit Hilfe von https://github.com/woodpeck/osm-revert-scripts)):

  1. Alle Changesets des Users runterladen mit download_changesets.sh

  2. Mit oscgrep.pl (svn-archive/applications/utils/filter/oscgrep at main · openstreetmap/svn-archive · GitHub) aus den Changesets die Löschungen herausfiltern, so dass ich am Ende eine Liste von Node-IDs habe, die ich wiederherstellen will

  3. Mit undelete.pl alle gelöschten Objekte wiederherstellen (in einer “for”-Schleife und nach vorheriger Erzeugung eines neuen Changesets mit changeset.pl)

Bye
Frederik

Hab ich nicht getestet.

Frederiks Lösung erscheint mir auch besser.

Okay, danke für die hilfreichen Vorschläge. Wieder was gelernt. Die Overpass-API kannte ich noch nicht und die osmtools suite ebenfalls noch nicht. Mit ersterem scheint sich gut ein erster Überblick (visuell) gewinnen zu lassen, wie groß der Schadensumfang eigentlich ist. Und von letzerem verhoffe ich mir einen möglichst hohen Automatisierungsgrad. Beides werde ich mir auf jeden Fall genauer ansehen und anschließend berichten. Es wird vermutlich zunächst eine Menge Trockenläufe brauchen…