User:Oli-Wan/Wall-E/MechEditKillRepnodes

From OpenStreetMap Wiki
Jump to navigation Jump to search

Reduktion wiederholter Knoten in Wegen Flag of Germany.svg Flag of Austria.svg

Es geht um die Korrektur von Wegen, die ein und denselben Knoten mehrfach unmittelbar hintereinander enthalten. Solche defekten Wege werden durch mehrere Editoren erzeugt, Details siehe im Abschntt Genese.

Im Falle wiederholter Knoten werden diese auf jeweils ein Exemplar reduziert: aus A-A-B-C wird A-B-C. Der Algorithmus wird auch mit mehreren wiederholten Knoten fertig (A-A-B-B-B-C-C wird ebenfalls zu A-B-C). Legitime Fälle wie A-B-C-A (geschlossener Weg) oder A-B-C-D-B werden hingegen nicht angefaßt.

Einen Sonderfall bilden solche Wege, die ausschließlich aus Wiederholungen desselben Knoten (A-A-A) bestehen. Da diese äquivalent zu einem Weg aus nur einem Knoten sind, werden sie vom Algorithmus ignoriert.

Genese

Die Erzeugung defekter Wege durch Potlatch 1 ist seit mindestens 2009 bekannt; der vermeintlich vollkommen neu geschriebene Potlatch 2 weist den gleichen Fehler auf. Offenbar zufällig wurde die Hauptfehlerquelle im Oktober 2012 abgestellt; die seitdem deutlich geringere Erzeugung durch Potlatch spielt inzwischen nur noch eine untergeordnete Rolle. Eine endgültige Lösung des Problems ist aber mangels Interesse des Autors und Pflege der Software unwahrscheinlich. Das Track-Ticket zum Thema wurde im September 2013 als "wontfix" geschlossen.

Auch mit JOSM werden defekte Wege erzeugt, die Ursachen sind jedoch vielfältiger. Fehler in mehreren Plugins wurden zwischenzeitlich behoben. Für einen Fehler im Kernprogramm gibt es zwar eine Anleitung zur Reproduktion, das Problem konnte jedoch noch nicht behoben worden. Ferner wird JOSM auch zum Hochladen von OSM-Daten genutzt, die mit anderen Programmen erzeugt oder importiert wurden.

In jüngerer Zeit ist der noch relativ neue und unausgereifte Editor iD als Hauptquelle defekter Wege in Erscheinung getreten. Auf iD entfallen inzwischen 70% der neu erzeugten defekten Wege, während der Anteil an den Bearbeitungen etwa 7% beträgt.

In geringerem Maße sind Vespucci, Go Map!! und ArcGIS an der Produktion defekter Wege beteiligt.

Beschreibung des Algorithmus

Der Algorithmus prüft einen vom Filterprogramm beanstandeten Weg zunächst dahingehend, ob er 1) tatsächlich Wiederholungen von Knoten enthält (A-B-B-C, nicht A-B-C) und 2) mehr als nur einen einzigen Knoten referenziert (A-B-B, nicht A-A-A). Fällt der Weg in dieses Beuteschema, wird die Knotenliste des Weges per Schleife Element für Element kopiert, sofern das jeweilige Element keine Wiederholung des zuvor kopierten Elements darstellt. Anschließend wird die Knotenliste durch die neue Liste ersetzt und der geänderte Weg hochgeladen.

Die Einrichtung einer Sperrliste erscheint im Fall dieser speziellen Korrektur verzichtbar.

Status, Ausführungsintervall

Seit Juni 2013 im Normalbetrieb, bisherige Bearbeitungen unauffällig. In DE ursprünglich monatliche Ausführung, aufgrund des Aufkommens defekter Wege derzeit auf 10-tägliche Ausführung geändert. 2-wöchentlich (samstags) in AT.

Diskussion

Im deutschsprachigen Forum ab 10.04.2013.; Ausdehnung auf Österreich.

Siehe auch

Elementare Geometriefehler im OSM Inspector.

Tickets/Issues

Reduction of repeated nodes in ways

This bot procedure is to be proposed for worldwide execution. So far, it operates only in Germany and Austria, where community approval has been obtained.

This algorithm is concerned with the correction of ways which contain several references to the same node in immediate succession. Various editors are involved in the creation of broken ways, see Production.

Repeated nodes are reduced to one single instance: A-A-B-C besomes A-B-C. Several repeated nodes can be handled as well (A-A-A-A-B-B-C-C also becomes A-B-C). Legitimate cases where the repetition is not immediate, such as A-B-C-A (closed way) or A-B-C-D-B (loops, such as those often found in service=parking_aisle) are not touched.

Ways consisting only of repetitions of one and the same node (A-A-A) form a special case. As these are equivalent to a way consisting of only one node, they are ignored; otherwise a broken way would simply be reduced to a way broken in a different fashion, which does not seem wise.

Production

The creation of broken ways by Potlatch 1 has been known at least since 2009; Potlatch 2 (claimed to have been rewritten from scratch) suffers from the same defect. In October 2012, the main source of broken ways seems to have been randomly closed. These days the creation by Potlach plays only a subordinate role.

JOSM is also involved in creating broken ways, the situation is however a bit more complex in this case. Bugs in several plugins have been successfully addressed; another reproducible issue in the core program could not be isolated yet. Besides this, JOSM is also used for uploading data that have been generated (or imported) using external tools. Certain programs like "Global Mapper" have been seen to generate erroneous data.

Recently, the new and still not quite mature editor iD has become the main source of broken ways, reaching a share of 70% of these ways, a factor of 10 out of proportion considering its share of 7% of all edits made (numbers: 2nd half of 2013).

Vespucci, Go Map!! and ArcGIS are also known to create defective ways every once in a while.

Description of the algorithm

In a first stage, a filtering program skims through the data provided by a source file, which can be a planet file, regional extract, or diff file. The result is stored in a candidate file and fed to the actual repair algorithm.

The algorithm checks fetches the current version of each way found by the filtering program from the OSM API serven. The current version is then examined as to whether 1) it really contains repetitions of nodes (A-B-B-C, not A-B-C) and 2) actually references more than one single node (A-B-B, not A-A-A). If so, the node list is copied element by element through a looping construct, if the current reference is not a repetition of its immediate predecessor. The node list is then replaced by the new list and the modified way is uploaded to the OSM database.

While blocklists exist for other procedure to avoid "automated edit wars" or to explicitly mark single objects as correct, such a blocklist is deemed expendable in the case of this specific correction.

The filtering program is written in C++ using the Osmium library; the correction algorithm (where speed is not a concern) along with the download/upload facilities is implemented in Emacs Lisp.

Status, execution interval

Running in Germany (every 10 days) and Austria (every 2 weeks); to be proposed for worldwide execution at some point in time.

Discussion

On the German forum; extension to Austria.

See also: tickets/issues