User:Oli-Wan/Wall-E/MechEditKillWhitespace

From OpenStreetMap Wiki
Jump to: navigation, search

Beseitigung überschüssigen Leerraums Deutsche Flagge.jpg Flag of Austria.svg

Es wird überschüssiger Leerraum (inklusive Zeilenumbrüchen) am Anfang und/oder Ende von Schlüsseln und Werten entfernt.

Ausnahme: wenn die Entfernung von Leerraum aus einem Schlüssel zu einem Schlüssel führen würde, der bereits vorhanden ist ("key " zu "key", aber "key" bereits vorhanden), und sich die eingetragenen Werte widersprechen. Falls der Schlüssel oder Wert ausschließlich aus Leerraum besteht, nach der Korrektur also leer wäre, wird er nicht angerührt. Ferner wird jedes bearbeitete Tag dahingehend überprüft, ob es in früheren Versionen identisch oder nicht vorhanden war. So sollen z.B. verlorene Wortbestandteile auffindbar bleiben, etwa wenn versehentlich "Kindergarten Pusemuckel" zu "Kindergarten " geändert wurden.

Die Korrektur wird grundsätzlich auf alle Objekte in Deutschland (Geofabrik-Extrakt) angewandt (keine weiteren Beschränkungen). Das Filterprogramm ignoriert jedoch Leerraum in einigen Tags, wo mir dessen Beseitigung unnütz erscheint, da diese Tags ohnehin nur internen Zwecken dienen (source, note, fixme usw.), wegen systematisch falscher Verwendung praktisch nutzlos sind (designation) oder typischerweise im Zusammenhang mit verkorksten Importen auftreten, wo ein viel gründlicheres Aufräumen geboten wäre und die Leerraumbeseitigung reine Kosmetik darstellen würde (area:ha, eea:cdda:sitecode).

Beschreibung des Algorithmus

Wie üblich dient ein Geofabrik-Extrakt als Ausgangsmaterial, aus dem Objekte mit Leerraum in Tags ausgefiltert werden. Auf das grenzgenaue Nachschneiden wird in diesem Fall verzichtet, da die Korrektur nicht landesspezifisch ist. Die erhaltenen Kandidaten werden anschließend durch den Korrekturalgorithmus frisch vom API-Server geladen, erneut überprüft, ggf. korrigiert und wieder hochgeladen.

Die Korrekturfunktion schleift durch alle Tags (Schlüssel-Wert-Paare). Zuerst wird jeweils der Wert untersucht und bei Vorhandensein von Leerraum überprüft, ob eventuelle Vorgängerversionen des Tags identisch waren. Falls nicht, wird abgebrochen; andernfalls wird nun unterschieden, ob der Wert ausschließlich aus Leerraum besteht, nach dessen Beseitigung also leer wäre. Solche Tags werden nicht bearbeitet. Werte, die neben Leerraum noch weitere Zeichen enthalten, werden vom Leerraum befreit. Anschließend geht es weiter mit dem Schlüssel. Der Algorithmus geht hier zunächst völlig analog wie beim Wert vor, prüft vor der Entfernung von Leerraum aber auf Konflikte mit anderen Schlüsseln. Ist der geänderte Schlüssel bereits vorhanden und enthält einen abweichenden Wert, wird die Korrektur unterlassen; bei identischem Wert wird das Tag mit Leerraum im Schlüssel gelöscht. Gibt es keinen konkurrierenden Schlüssel, erfolgt die Leerraumbeseitigung ohne weitere Komplikationen.

Ausnahmen, Opt-out

Auch für diese Korrektur wird eine Sperrliste eingerichtet, welche in diesem Fall aber primär der Fehlersuche dient. Die Möglichkeit zum "nachträglichen Opt-out" ist somit auch hier gegeben, wenngleich hierfür eigentlich bei dieser speziellen Korrektur kein Bedarf bestehen sollte.

Status, Ausführungsintervall

Anfang April 2013 entwickelt, getestet und in den Normalbetrieb überführt. Ausführung nun im gleichen 10-täglichen Intervall wie u.a. die Korrektur der Straßennamen.

Diskussion

Wall·E räumt auf: Leerraum in Tags: Zunächst lautes Nachdenken und erste Überlegungen zum Vorgehen, schrittweise Entwicklung des Algorithmus und am 01.04.2013 Vorstellung eines Programms. Inbetriebnahme und Erprobung nach kleinen Änderungen. Wenig später Ausdehnung auf Österreich auf Anregung von Walter Schlögl.