Automatische Korrektur von Fehlern in addr:* (5) - street, housenumber

Ein Bot wie Wall-E soll nur dann korrigieren, wenn die Korrektur sehr sicher richtig ist. Etwas zu korrigieren nur weil es wahrscheinlich richtiger ist, kann ziemlich daneben gehen.
Das habe ich bei einer Korrektur von addr:street in einer Straße erlebt, deren Name falsch geschrieben war. Als dann der Straßenname auf die richtige Schreibweise korrigiert wurde, durfte ich das ganze Prozedere noch einmal wiederholen.

Unabhängig davon meine ich, dass die Suche nach Fehlern, die für Wall-E entwickelt wurde, gegebenenfalls zusätzlich für eine Qualitätskarte genutzt werden kann. Dabei kann eine Ähnlickeitssuche oder andere Erweiterungen ggfs. sinnvoll sein.

Edbert (EvanE)

Grundsätzlich gerne (wobei ich zum Bauen einer solchen Karte der falsche Ansprechpartner bin); ich fürchte aber, daß Du Dir davon ein bißchen zuviel versprichst. Mein Filterprogramm ist sehr simpel - da steckt nichts drin, was die Entwickler von housenumbervalidator und OSMAddressCorrector nicht auch (und schon lange vor mir) hingekriegt haben. Außerdem ist es darauf ausgelegt, gerade jene Objekte zu finden, wo eine automatische Korrektur möglich ist - da bleiben nur relativ wenige andere Objekte hängen, und die landen (s.o.) größtenteils im housenumbervalidator. Was daneben noch übrig bleibt, ist meistens aus der Ferne ohnehin nicht zu korrigieren.
Aus dem eigentlichen Bot-Programm könnte man vielleicht ein paar Ideen übernehmen, um z.B. Korrekturvorschläge zu generieren, die zur automatischen Durchführung zu unsicher sind. Ich habe mal mit dem Gedanken gespielt, das Programm um einen entsprechenden interaktiven Modus zu ergänzen, aber das ist bisher nur eine vage Überlegung.
Eine eigene Karte werde ich nicht basteln. Einerseits habe ich davon keine Ahnung (und auch zu wenig Interesse, um mich entsprechend gründlich einzuarbeiten), andererseits ist das Spektrum einschlägiger QS-Karten mit OSM Inspector, housenumbervalidator und OSMAddressCorrector schon überaus reichhaltig und bedarf keiner weiteren Fragmentierung. Eventuell wäre es eine Option, Output von Wall·E (Korrekturvorschläge, Warnmeldungen) in eine der bestehenden Karten zu integrieren.

Wenn Straße und Adresse uneins sind, würde ich auch eher auf die Straße tippen. Straßen sind meist schon länger drin als die entsprechenden Adressen, da war mehr Gelegenheit zum Korrigieren (mit Straßenliste oder nicht); und Fehler im Straßennamen fallen auch eher auf, weil der Name einer Straße schließlich auf jeder Karte gerendert wird. Aber wie Du schon sagst, das ist keine Bot-Aufgabe, und selbst eine manuelle Korrektur sollte in der Regel nicht aus der Ferne erfolgen. Gelegentlich ist die Abweichung auch mehr als ein bloßer Tippfehler, etwa hier (ehrlich gesagt tippe ich in dem Fall ebenso wie in der gesamten Umgebung darauf, daß jeweils der highway Recht hat).

Die street/housenumber-Zerlegung ist jetzt aktiv: sie hat gleich zweimal korrekt angeschlagen (s.u.), und sie hat (viel wichtiger) noch keinen Unfug mit korrekten Daten getrieben.

editing node #2161518729, http://www.openstreetmap.org/browse/node/2161518729
        addr:street tag modified: "Oppelner Str. 3" -> "Oppelner Straße 3"
        addr:street modified: "Oppelner Straße 3" -> "Oppelner Straße"
editing way #126776483, http://www.openstreetmap.org/browse/way/126776483
        addr:housenumber modified: "Großwalding 3" -> "3"
        addr:street="Großwalding" added

Mag sich mal jemand dieses Knotens erbarmen?

node #1154688902's addr:city tag looks funny: "Schachtenbach 921 Meter"
but I can't do anything about it

http://www.openstreetmap.org/browse/node/1154688902

Tja, da sieht die ganze Ecke etwas merkwürdig aus.
Davon lasse ich lieber die Finger. Was die wenigen Bearbeiter sich dabei gedacht haben mögen, vermag ich nicht zu erahnen. Ist das ein Bergwerk mit Tiefenangabe, soll da die Höhe (über NN) beim Namen dokumentiert werden? Warum addr:city statt place=* + name=*? usw.

Da fällt mir nur Löschen ein, aber das ist natürlich etwas radikal.

Edbert (EvanE)

Wer noch nie selbst Straßennamen mit einer frisch veröffentlichen Liste korrigiert hat, glaubt nicht, wie groß der Anteil der falsch geschriebenen Straßen ist. Als ob überwiegend Legastheniker die Straßennamen bei OSM eintragen. Wenn die Straße nicht gerade Marienplatz, Reeperbahn, Ku’damm oder Kö heißt, lungern dort, wo es eine solche Listenauswertung noch nicht gibt, die Schreibfehler eine halbe Ewigkeit in den Daten herum. Photomapping sollte vorgeschrieben werden, das reduziert die Möglichkeit des falsch Abschreibens auf einmal.

Genug geätzt, ich mal einen Aufruf draus: Jeder der nicht diktatbefreit ist, schaue mal, ob nach http://regio-osm.de/listofstreets/data.html/http://regio-osm.de/listofstreets/grafikdarstellung/ in seiner Umgebung noch fehlende/falsch geschriebene Straßen vorhanden sind und kontrolliert mal das nächste Dutzend im Laufe dieses Jahres. Dort, wo es diese Auswertung noch nicht gibt oder merkwürdig scheint, etwa weil OSM deutlich mehr Straßen hat als die Liste, frage er doch bitte die zuständige Körperschaft nach einer offiziellen Liste. Bis vor-voriges Jahr haben diejenigen, die das getan haben ihre Bemühungen auch auf http://wiki.openstreetmap.org/wiki/Stra%C3%9Fenverzeichnis vermerkt. Alternativ, schaut auf http://tools.geofabrik.de/osmi/?view=addresses, welche Adressen nicht zu den angrenzenden Straßen passen und überprüft, ob die Straßen oder die Adressen korrekt sind.

Wer macht nicht mit?

Baßtölpel

Nahmd,

Ich hab die Höhe mit Infos ausm Netz verifiziert und dann an den bereits vorhandenen “place=hamlet” gehängt, sodann den jetzt überflüssigen Node getilgt. Bei der Gelegenheit noch die Gebäude rechteckifiziert und ein addr:city=Bayrisch Eisenstein angehängt.

Gruß Wolf

Nahmd,

Das macht so keinen Spaß. Wenn dann will ich eine Seite blitzsauber bekommen. Zum Beispiel diese.

Die roten Einträge sind klar, aber wie bekomme ich die gelben Einträge weg?
Da sind Forst und Spazierwege darunter, die jeder unter dem Namen kennt, die aber keine Wohnstraßen mit adressierbaren Häusern sind. Wie sage ich der Seite: “der Weg+Name ist ok, ist aber keine benamste Straße im eigentlichen Sinne, überspring das Teil bei deinem Vergleich”?

Gruß Wolf

Eigentlich meinte ich, nicht unbedingt deine Filterregeln, sondern die Erfahrungen, die in den diversen Threads zu Straßen- und Adress-Korrektur erarbeitet wurden. Dabei sind vor allem die Dinge interessant, die wegen Unsicherheit keinen Eingang in die Bot-Regeln finden konnten.

Ein Beispiel wären Straßen mit Nummern im Namen.
Mit der Overpass-API und dem Overpass-Turbo als Entwicklungstool ist das in wenigen Minuten erstellt. Beispiel:
http://overpass-turbo.eu/?q=PCEtLQp0aGlzIHF1ZXJ5IGxvb2vEiGZvciDEhmdod2F5xIh3acSFIGEgbnVtYsSMIGluxKt0xIhuYW1lCsSCPgo8b3NtLXNjcmlwdMS3ICA8dW5pb27FhMWFxYbEisSMxI50eXBlPSLEnHkixY3FjsWGaGFzLWt2IGvFl8SZxJvEnSIgcmVndsWXbW90xJbFmXxwxYBtYcSNfHNlY8WLZMW7eXx0xIx0acaDfMWtc2lkZW7GiGFsfMWIY2zFoMaNZmllZMW9xIx2aWNlIi_FnMWOPMWfxaHFo8WlxZfEscSzxavFrcWvxZdbMDEyMzQ1Njc4OV3GpcanxYU8YmJveC3FkMSNIHt7x4XHh319xqYKxZ08L8eKecanPMWtY3Vyxb4gxZPFlcWXxZktbm_Gj8eBx5TFhi_FiMWKxYzHqzzFuMSsdCDHk8eWxLrEvMS-xYDFgj4&c=BMieM6_U_L

Man kann das direkt als interaktive Karte exportieren:
%22%2F%3E%20%3Cbbox-query%20s%3D%2250.78987674433805%22%20w%3D%226.716766357421874%22%20n%3D%2251.16901107945215%22%20e%3D%227.305908203125%22%2F%3E%20%3C%2Fquery%3E%20%3Crecurse%20type%3D%22way-node%22%2F%3E%20%3C%2Funion%3E%20%3Cprint%20%2F%3E%20%3C%2Fosm-script%3E

Du siehst, das ist gar nicht so schwierig.
Nichtsdestotrotz will ich eigentlich irgend jemanden animieren, so ein Tool aufzubauen. Du bist dabei nicht meine primäre Zielperson.

Mir geht es im Grunde ähnlich wie dir. Einfache Abfragen mittels Overpass-API/-Turbo kann ich erstellen und daraus das erzeugen, was der Overpass-Turbo unterstützt. Aber verschiedene Abfragen zu einer Karte mit Layer-Switcher und dem ganzen Drumherum zu bauen, das übersteigt dann doch meine Möglichkeiten.

Edbert (EvanE)

Hallo Wolf,

in dem speziellen Fall scheinen auch viele Wohnstraße zwar in OSM aber nicht in der Liste vorhanden zu sein. Möglicherweise fehlen in der Liste die Straßen der Vororte. Wenn Du diese gelben weghaben willst, solltest Du die Stadt nach einer vollständigen Straßenliste fragen. Oder die Liste von Hand vervollständigen. Die Listen sind in einem Wiki gespeichert.
Für den Fall benamstes Objekt aber dennoch keine Straße frag doch Dietmar mal freundlich an, ob er dafür etwas nachrüstet.

Grüße,

Baßtölpel

In der Tat sehr beeindruckend. Es wird wohl doch mal Zeit, mich gründlicher mit der Overpass API zu befassen (bisher weiß ich im wesentlichen nur das, was für die zur Trennung von Straße und Hausnummer konstruierte Funktion osm-verify-nearby-road nötig war).
Aber Kartenbauen ist einfach nicht meine Welt. Du liegst also schon richtig damit, hierfür nach einer anderen Zielperson Ausschau zu halten.

PS. [0123456789] → [0-9] oder [[:digit:]] :wink:

[0-9] ist klar.

[[:digit:]] kannte ich nicht, Danke dafür.
Ich hatte es mit \d probiert, so wie es mein Editor (TextWrangler auf einem Mac) versteht. Als das nicht funktionierte, habe ich die Primitiv-Version genommen, mit der es dann auch ging.

Edbert (EvanE)

Ich habe das Objekte-pro-Änderungssatz-Limit jetzt von 20 auf 60 Objekte erhöht. Fundamentale Fehler scheinen nicht zu passieren, und nachdem die kürzlich ins Logging eingebauten Bugs behoben sind, ist anhand des Protokolls nun wieder eine ausreichende Kontrolle möglich. Wenn der Toolserver-Account eingerichtet ist, werden die Adresskorrekturen dorthin umziehen und dann bald komplett automatisiert laufen (sofern nicht plötzlich doch noch große Probleme auftreten).

Daß der heutige Änderungssatz 64 (> 60) Objekte enthielt, lag an einem gestern eingebauten Bug, in dessen Folge der Änderungszähler nicht inkrementiert wurde und bearbeitete Objekte auch nicht in die Sperrliste geschrieben wurden. Dieses Problem ist behoben.
Von den 64 Objekten mußten im übrigen 56 nachbearbeitet werden - trauriger Rekord. Ich frage mich, wie Leute es fertigbringen, addr:street=Karl-Liebknechtstrasse einzutragen, wenn JOSM doch automatisch den vorhandenen Straßennamen Karl-Liebknecht-Straße vorschlägt. Bei Nutzern weniger ausgefeilter Editoren wie Potlatch/wheelmap/Pushpin/Vespucci/iLOE würde ich es ja verstehen.

Das ist nun geschehen, das Filterprogramm schaut sich nun auch addr:street näher an und sucht dort nach Zahlen. Erfolg der Aktion: jede Menge Altlasten, die nun allmählich abgetragen werden - wunderbares Testmaterial für die Straße/Hausnummer-Trennung. Und so viele Straßen des 18. Oktober, 13. Juni, 8. Mai usw., daß gleich die nächste Änderung im Filter nötig war.

Änderung des Regex ist erfolgt, als Hausnummer gilt nun:

"[[:blank:]]+\\([[:digit:]]+\\([[:blank:]]?[[:alpha:]]\\)?\\|[[:digit:]]+[-/][[:digit:]]+\\)[[:blank:]]*$"

Die relativ häufige Form 12-14 oder 12/14 wird nun also auch erfaßt, 12a-12f sowie Kombinationen mit Komma oder “+” hingegen nicht. Ggf. erweitere ich den Regex erneut, wenn der aktuelle Berg abgetragen ist und ich einen Überblick habe, was dann noch übrig bleibt.

Edit: “/”-Variante.

Ich bin gerade zufällig über eine Bearbeitung durch xybot gestolpert: Der hat offenbar auch Straßen und Hausnummern getrennt, freilich ohne Abgleich mit vorhandenen Straßennamen (und ohne Dokumentation). Herausgekommen ist dann leider auch sowas: http://www.openstreetmap.org/browse/node/270680591/history - genau der Typ von Fehler, den ich mit der Overpass API-Abfrage verhindern will.
Ich habe keine Ahnung, wie häufig derartige Bearbeitungen vorgekommen sind und wie hoch die Fehlerquote war. Hat vielleicht jemand Interesse, hier mal weiter nachzuforschen? Vermutlich genügt es, sich die Änderungssätze “Korrektur der Schreibweise der Straßennamen in Deutschland und Österreich; Str(.?|asse) => Straße” im Jahr 2012 (per Skript) anzusehen. Eine schöne Detektivaufgabe :-\

Edit: mmd hat ein älteres Beispiel gefunden.

Das ist sicherlich kein Einzelfall: http://www.openstreetmap.org/browse/node/267877246/history

Gefunden mit:

node( {{bbox}} )[“addr:housenumber”~“.”]
[“addr:street”~“.”]
[“addr:street”!~“[ ßa-z]$”]
;out meta;

Annahme: Straßen enden mit einem Kleinbuchstaben (+ß). Leerzeichen sind noch im Regex enthalten, da noch nicht flächendeckend entfernt. Klappt nicht so toll in Mannheim, das war aber klar.

http://www.openstreetmap.org/browse/node/563834641/history ← zwar nicht von xybot aber trotzdem gleiches Muster (kaputter Import)

Hallo,

wie schaut es denn mit den beiden Straßen aus:

http://www.openstreetmap.org/browse/way/162365718/history
http://www.openstreetmap.org/browse/way/26706606/history

Beide habe ich eingetragen und die heißen so. Machen die auch Probleme?

Bsp. mit einer Adresse:
http://www.openstreetmap.org/browse/way/38327145

vg

Andreas

Nein, keine Probleme. Vom bisherigen Filterskript wurden sie gar nicht erfaßt; das neue, schnellere und flexiblere Filterprogramm, auf das ich gerade umstelle, ist zwar sensitiv auf Ziffern in addr:street, kennt aber die gängigsten Ausnahmen, u.a.:

  static const regex street_numeric_exception1
    ("^(Straße|Platz) des [[:digit:]]{1,2}\\. (Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)$");
  static const regex street_numeric_exception2
    ("^(An der )?([BLK] ?|((Bundes|Landes|Kreis)straße) )[[:digit:]]+$");

(wobei allerdings noch ein bißchen Finetuning notwendig ist). Adressen mit addr:street wie oben landen dann gar nicht erst in der Kandidatenliste. Und falls (wegen eines anderen Fehlers) doch, versucht der Korrekturalgorithmus sie z.B. in “An der B” und “320” zu zerlegen und fragt dann die Overpass API, ob es eine Straße “An der B” in der Nähe gibt. Da dies (hoffentlich) nicht der Fall ist, wird die Änderung unterlassen.

Ich denke darüber nach, das Übereinstimmungskriterium für den Straßennamen geringfügig aufzuweichen.
Als Erinnerung für alle, die allmählich den Überblick verlieren: Wall·E versucht, z.B. addr:street=“Bahnhofstraße 20a” in addr:street=Bahnhofstraße und addr:housenumber=20a aufzuteilen. Wegen der Vielfalt von Sonderfällen wie “Weg Nr. 12” (Hamburg), “An 44” (Landau) oder “Gewerbegebiet an der B 95” ist als Sicherung eine Prüfung eingebaut, ob es in der Nähe des Objekts eine Straße gibt, die den vermeintlichen Namen trägt. “Bahnhofstraße” wird in aller Regel gefunden, die Zerlegung wird somit durchgeführt; “Weg Nr.” wird dagegen nicht gefunden und eine Bearbeitung unterbleibt.
Ich erwäge nun, bestimmte Abkürzungen als synonym anzusehen, etwa “St.” für “Sankt”. D.h. “St. Nimmerlein-Straße 12” würde auch bei Vorhandensein einer “Sankt Nimmerlein-Straße” in der Nähe bearbeitet, ebenso “Sankt Nimmerlein-Straße 12” bei Vorhandensein einer “St. Nimmerlein-Straße”. Ein Risiko von Fehlkorrekturen scheint mir dabei nicht gegeben zu sein. Allerdings würde ich die bisherige Schreibweise in addr:street beibehalten (also nicht “St.” zu “Sankt” vereinheitlichen) - welche Schreibweise “richtig” ist, mag ein Mapper vor Ort entscheiden, so es einen gibt. Mir geht es nur darum, die falsch verortete Hausnummer auch in so einem Fall korrigieren zu können.

Anlaß der Überlegungen war dieser Knoten, wo die obige Ergänzung freilich nichts genützt hätte, weil noch zwei weitere Fehler im Straßennamen die Korrektur verhindert hätten. Insgesamt lagen hier in einem einzigen addr:street-Tag satte fünf Fehler bzw. Abweichungen zum in OSM verwendeten Straßennamen vor. (Die übrigen Tags sind überraschend gut weggekommen, bloß das amenity-Tag ist falsch.)

-snip- verguckt :frowning:

  • snip -
    Walters Frage schneller beantwortet, als er sie wieder löschen konnte :slight_smile: