Teilweise Changeset zurücksetzen

Ich bin letztens auf CS 139453993 gestoßen, weil einige Geometrien in Wien komisch aussehen.
Da nur die Verschiebung versehentlich wirkt, wollte ich jetzt erst mal wissen, wie automatisiert man die 233 bearbeiteten Nodes filtern kann.
Gibt es auch einen Weg zu überprüfen, ob die betroffenen Nodes schon weiter bearbeitet wurden?

mit

node(if: changeset() == 139453993 && version() > 1)({{bbox}});
out;

bekommst du die 188 nodes, die zuletzt von diesem CS geändert wurden, aber ich weiß nicht, ob das irgendwie weiterhilft?

Ich glaub, das ist das Puzzlestück, das mir noch gefehlt hat. Ich probier mal was.

Ok, ein paar Dinge müssen noch aufgeräumt werden, aber das Changeset: 146402361 | OpenStreetMap hat zu ~99 % funktioniert.

Meine Schritte für zukünftige Leser:

  • Die Overpass-Abfrage maskiert, weil nicht alles betroffen war, und
  • dann nach Level0 exportiert.
  • Die real-Changesets-JSON von Mapbox geladen, und
  • die Werte mit einer replacement-function eingesetzt:
function replacer(...params) {
	let old = realChangesets.elements.filter(m =>
		m.type == 'node' &&
		m.id == params[1] &&
		m.lat == params[2] &&
		m.lon == params[3]
	)[0].old;
	return `node ${old.id}: ${old.lat}, ${old.lon}`;
}
textarea.value = textarea.value.replaceAll(/node (\d+): ([\d.]+), ([\d.]+)/g, replacer)