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

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:

Hallo zusammen,

mir ist gerade noch ein “Fall” eingefallen, welcher evtl. auch hier mit korrigiert werden könnte (er wäre aber auch für einen neuen Faden geeignet) und zwar:
Wenn ein Mapper beim eintragen der Hausnummer versehentlich die Shift-Taste (bzw. die Feststelltaste) gedrückt hat und sowas bei “rauskommt”:
anstatt 2 → "
anstatt 5 → %
anstatt 18 → !(

Mir wäre jetzt kein Fall bekannt, wo soetwas wirklich in einer Adresse stehen würde (lasse mich aber gerne aufklären), zur zusätzlichen Absicherung könnte man per overpass prüfen ob in der Nähe jeweils eine höhere bzw. niedrigere Hausnummer vorhanden ist.

Vllt. ist es ja mal eine Überlegung es mit einzubauen.

Ansonsten weiter so, wirklich eine spitzen Arbeit, die du hier leistest!

So etwas ist mir in Hausnummer und Postleitzahl schon begegnet, sah dann aus wie ein Comic-Fluch (“%$&§!”).
Kann ich mal ins Filterprogramm aufnehmen - dann sehe ich, ob es sich lohnt, über eine automatische Korrektur nachzudenken. Mein Bauchgefühl sagt aber, daß es eher wenige Fälle sein werden und daher eine manuelle Korrektur sinnvoller ist. (In addr:postcode war obiges das einzige mir bekannte Vorkommen; hier ist das Filterprogramm bereits sensitiv auf “alles außer Zahlen”.)

Mit einiger Verspätung nun noch einmal zu den “geshifteten” Hausnummern (also ! statt 1 etc.).
Ich habe nun den Bestand nach entsprechenden Hausnummern durchsucht. Es gibt durchaus reichlich Hausnummern wie “!” oder “&”; aber eine automatische Korrektur ist - zumindest mit vertretbarem Aufwand - nicht sinnvoll möglich. Bei “!” mag es noch gehen, aber schon bei “&” gibt es Probleme: Je nach Tastaturlayout liegt “&” entweder auf der 6- oder der 7-Taste. Da hilft nur: nachsehen, auf welcher Straßenseite und zwischen welchen anderen Nummern die fragliche Hausnummer liegt. Auch “1#” kann auf “13” (QWERTY-Layout) zurückgehen oder (m.E. häufiger) auf einen Wurstfinger auf der Returntaste (QWERTZ, insbesondere Notebooktastaturen).

Daneben gibt es noch Fälle, wo die Hausnummer zwischen Anführungszeichen steht (die meisten davon in Hannover und von ein und demselben Mapper), oder ganz eigenartige Dinge wie f/*r, aber auch legitime Exoten.

Ich werde mich demnächst mal daran machen, einige der manuell korrigierbaren Sonderzeichen zurechtzurücken. Sobald ich dem Filterprogramm ausgetrieben habe, reichlich falsch positive Resultate mit u.a. ½ zu liefern, kann ich das Suchergebnis auch bereitstellen, falls jemand mithelfen will. Edit: Lohnt nicht, zu wenige.

Auf @talk-de wird im übrigen gerade darüber diskutiert, ob man Hausnummern, die in addr:housename gelandet sind per Bot in addr:housenumber ändert. Nur falls du dich da einbringen möchtest.

Danke, habe ich gesehen - und verfolge die Diskussion mit Interesse. Ich halte mich da aber raus, um nicht den Faden zu kapern oder einseitig zu beeinflussen. In der Diskussion ist auch schon weit mehr OSM-Sachverstand vertreten, als ich noch einbringen könnte.

Das lustige ist, daß ich selbst just gestern wieder mal über eine entsprechende Ergänzung meines Programms nachgedacht habe; lediglich die Faulheit hat ein entsprechendes Posting hier verhindert. Ich hatte zwar auch schon länger gesehen, daß etwa im housenumbervalidator regelmäßig addr:housename= angezeigt und in der Folge von einem Mapper in addr:housenumber geändert werden, sodaß man grundsätzlich erwägen könnte das zu automatisieren; aber der große Cluster von derartigen “Hausnamen” in Berlin-Siemensstadt - die vermutlich genau den von Peter Wendorff geschilderten Fall darstellen - hat mich davor zurückschrecken lassen. (Deren Ersteller habe ich ohne Erfolg Ende März angeschrieben.) Daneben gibt es wohl noch jede Menge Altlasten, die nicht im housenumbervalidator angezeigt werden; jedenfalls war eine entsprechende Suche gestern recht ergiebig.
Eine Möglichkeit zur Abgrenzung verrutschter Hausnummern von Gebäude-Referenznummern etc. wäre, zusätzlich das Vorhandensein von addr:street zu fordern (und sowieso die Abwesenheit von addr:housenumber oder deren Übereinstimmung mit addr:housename).

A proposito Berlino, falls jemand von dort mitlesen sollte: Es gibt am ZOB nahe Westkreuz einige sehr eigenartige “Hausnummern”, die vermutlich Bushaltestellen sind: http://www.openstreetmap.org/browse/node/2227177305