ungültige Adressen

So einen Fall habe ich bei mir an der Ecke. Vor Ort nachsehen hilft da leider auch nicht. Man müsste schon klingeln und nachfragen - und hoffen, dass die Bewohner es selbst wissen…

Dabei fällt mir ein: Woher “weiß” man eigentlich “seine” PLZ oder gar die anderer? Doch nicht durch Nachschauen bei der Post, sondern tradiertes “Wissen” (z.B. Mietvertrag), fragen eines Bekannten/Nachbarn u.ä. Wie wir wissen, kann der Irrtum da schon vorprogrammiert sein. Ich wundere mich daher auch nicht über teils widersprüchliche Adressen auf Websites bzgl. DPAG-Daten.

Falsche Grenzfälle werden ja wahrscheinlich trotzdem zuverlässig zugestellt.

Was macht man denn da? Ich hab bisher, wenn eine url mit verlinkt wahr und die PLZ dort falsch (lt. DPAG) steht, die trotzdem erstmal so gelassen.

ich verbessere so einen Quatsch. Fehler auf Webseiten sollten nicht das Hauptkriterium sein.

Ohh, das sieht ja gut aus zum Prüfen, habe da ganz viele Treffer in meiner Nähe entdeckt!

Aber gleiches Problem wie beim Webdienst von lyrk:

Was ist bei einer Zugehörigkeit von Elementen ohne addr:street zu einer http://wiki.openstreetmap.org/wiki/DE:Relation:associatedStreet ???

PS: ohhh, die dt. Wikiseite sollte nach weiter übersetzt werden, seh ich gerade …)

Geht auch mit overpass api. Stichwort: Difference.

Grober Ablauf (bin gerade zu faul, sry).
Menge 1: Wie von fx99
Menge 2: alle associatedStreet-Relationen in der bbox und davon ways/nodes ableiten (mit recurse oder > oder >>)

Ergebnis: Differenz von Menge 1 und 2, also Menge 1 \ Menge 2.

Ein Hinweis kann sein, von welcher Straße aus man die Haustüre erreicht, hundertprozentig sicher ist das aber auch nicht.
Mit solchen Ungenauigkeiten könnte ich aber leben. In OSM gibt es weitaus größere Baustellen (z.B. Orte ganz ohne Adressen, die “Irren”), in die man Arbeit hineinstecken kann.

So, jetzt nochmal etwas ausführlicher:


/*zunächst alle Häuser mit Hausnummer, aber ohne Straße in der aktuellen bbox in "allHouses" sammeln */
way({{bbox}})["addr:housenumber"]["addr:street"!~"."]->.allHouses;

/* In der BBOX alle associatedStreet Relationen ermitteln */
rel({{bbox}})[type=associatedStreet]->.associatedStreet;

/* und darin alle Wege mit der Rolle "house" in "asHouse" sammeln */
way(r.associatedStreet:"house")->.asHouse;

/* Jetzt die Differenz der beiden Mengen bilden, Nodes dazu und ausgeben */
((.allHouses; - .asHouse); >; );out;

/* Jetzt das ganze noch für Nodes: */
node({{bbox}})["addr:housenumber"]["addr:street"!~"."]->.allHousesNode;
node(r.associatedStreet:"house")->.asHouseNode;
((.allHousesNode; - .asHouseNode););out;



http://overpass-turbo.eu/s/3Q9

Hallo couchmapper,

ich bin begeistert!!! Vielen Dank!

Diese genauere Unterscheidung (Aussondern der Relations-Kinder) müsste nun noch in die overpass-Abfrage von http://osm.lyrk.de/address/ rein.

(Grundlage: http://wiki.openstreetmap.org/wiki/Overpass_API/Applications )

Aber die Abfrage oben sucht jetzt nur nach way-Elementen, oder? Wie müsste die Ergänzungen für Nodes mit fehlenden addr:street-Daten lauten?

Da musst Du dich an ubahnverleih wenden, ich kann da nicht weiterhelfen.

Stimmt, hab die Nodes noch ergänzt.

Ich bin gerade mal beim einbauen des Overpass querys von oben. Habt ihr irgend eine Beispielregion, wo es associatedStreet Relationen gibt, bei denen die Hausnummern ein addr:street-Tag haben?

Versuch mal Winsen (Luhe) südlich von Hamburg.

Ohne es jetzt praktisch durchführen zu können:

Falsch zugeordnete Eckhäuser führen doch unter Umständen zu doppelt vorhandenen Adress-Tags. Bei diesen sollte es möglich sein, sie festzustellen und auszugeben, evtl. erst bei überschreiten eines Mindestabstands.

Möglich wäre vielleicht auch ein abweichen von der Vergabelogik. “Nördlich der Straße sind nur gerade Hausnummern und Hausnummer 1”. Aber das klingt für mich nach immensem Programmier- und Rechenaufwand.

Die Logik der Vergabe von Hausnummern ist gelegentlich äußerst schwer nachzuvollziehen (falls überhaupt vorhanden). Mit Programmen/Algorithmen habe ich da wenig Hoffnung.

In verdichtet besiedelten Gegenden (Häuserblocks) kann man ohne Gebäudeplan nur erahnen, was wohin gehört.
Selbst in einer (pardon) Kleinstadt kenne ich ein Eckgebäude mit drei Hausnummern auf zwei Straßen verteilt und mit nur zwei von außen ersichtlichen Eingängen, wovon einer zu zwei Straßen gehört. Ohne Teilungsplan der Eigentümergemeinschaft hat man da keine Chance.

So ein Programm könnte vielleicht einen größeren Anteil von Falschadressen identifizieren, man erhielte aber ziemlicher sicher auch einen erklecklichen Bodensatz an Falschalarmen.

Hallo,

kannst Du, couchmapper, oder jemand anderer die Query auf alle 3 Objekttypen erweitern und außerdem statt der bbox zuerst eine query nach einer relation machen mit den Tags



dann kann ich die Query bei mir in einer Karte einbauen [1].
Ich ermittle derzeit für alle deutschen Gemeinden die Anzahl Adressen ohne Zusatz und will dann aber bei einer Gemeinde nur die ermittelte Summe angeben und grafisch einfärben. Die konkret betroffenen Objekte sind dann sinnvoller über die dynamische Overpass Query auszuführen in Richtung Josm, damit jemand bei Arbeiten in einer Gemeinde immer nur noch zu bearbeitenden bekommt und nicht alle von mir zu einem Zeitpunkt x vorher.

viele Grüße

Dietmar

[1] http://regio-osm.de/hausnummerauswertung/maptheoevaluation.html

Ich habe mal die bbox durch eine Area ausgetauscht. Allerdings fehlt mir gerade die Idee, welche Konstallationen mit Relationen (statt Way/node) mit addr:housenumber und ohne addr:street vorkommen können.


area[type=boundary]["de:amtlicher_gemeindeschluessel"="08115003"]->.boundaryarea;

way(area.boundaryarea)["addr:housenumber"]["addr:street"!~"."]->.allHouses;
rel(area.boundaryarea)[type=associatedStreet]->.associatedStreet;
way(r.associatedStreet:"house")->.asHouse;
((.allHouses; - .asHouse); >; );out meta;

node(area.boundaryarea)["addr:housenumber"]["addr:street"!~"."]->.allHousesNode;
node(r.associatedStreet:"house")->.asHouseNode;
((.allHousesNode; - .asHouseNode););out meta;

Edit: out → out meta für josm.

Na, z.B. builidngs mit Loch, wo die Adresse nicht an der äußeren Kontur, sondern am MP hängt. Sind ca. 3700 Fälle in DE.

Und diese Relationen würde jemand auch in eine associatedStreet Relation packen?

Ja, möglich, aber unwahrscheinlich. Finde gut 400 Fälle in DE.

Ich ignoriere aber in meinen Auswertungen reine Relationsadressen auch einfach.

Ok, dann könnte das so aussehen:


area[type=boundary]["de:amtlicher_gemeindeschluessel"="08115003"]->.boundaryarea;
rel(area.boundaryarea)[type=associatedStreet]->.associatedStreet;

way(area.boundaryarea)["addr:housenumber"]["addr:street"!~"."]->.allHousesWay;
way(r.associatedStreet:"house")->.asHouseWay;
((.allHousesWay; - .asHouseWay); >; );out meta;

node(area.boundaryarea)["addr:housenumber"]["addr:street"!~"."]->.allHousesNode;
node(r.associatedStreet:"house")->.asHouseNode;
((.allHousesNode; - .asHouseNode););out meta;

rel(area.boundaryarea)["addr:housenumber"]["addr:street"!~"."]->.allHousesRel;
rel(r.associatedStreet:"house")->.asHouseRel;
((.allHousesRel; - .asHouseRel); >>; );out meta;

Das “as” in “asHouseNode” steht übrigens für _a_ssociated_S_treet.

Müsste jemand mal mit Relationen testen, habe in Böblingen wohl kein passendes Beispiel dafür.

Hallo couchmapper,

vielen Dank für die modifizierte Abfrage!

Ich habe in München Unterschiede festgestellt zu meiner Auswertung. Ich suche nach associatedStreet Relationen, bei denen name=* gesetzt ist.
In München gibt es einige mit addr:street Angabe zur Straße statt des üblichen name=*, die werden von Deiner Abfrage als gültige Adressen herausgefiltert, bei mir werden sie als ungültig gezählt. Der Unterschied ist mir aber egal und dürfte selten vorkommen.

(ab hier identischer Post zu [0])

auf meiner Sonderkarte [1] werden jetzt nach und nach die Gemeinden Deutschlands eingefärbt abhängig von der absoluten Anzahl von singulären Hausnummern, also ohne addr:street, addr:place und associateStreet-Relationszugehörigkeit. Die Farblegende ist derzeit noch unterhalb der Karte leicht versteckt.

Beim Klick auf die Gemeinde kommen einige Details zur Gemeinde. Die erste Zeile gibt die Anzahl singulärer Hausnummern an und mit dem Link dahinter werden über eine Overpass-API Anfrage alle singulären Hausnummern in Josm geladen. Die Query stammt von couchmapper aus dem Post [2] des Threads “ungültige Adressen”, vielen Dank dafür!.

Die Gemeinden werden normalerweise Bundesland für Bundesland in den nächsten Stunden und Tagen ausgewertet. RP wurde letzte Nacht begonnen, es fehlen dort aber noch etliche, die werden noch nachgeliefert.

Wenn jemand für seine Gegend vorab eine Auswertung haben möchte, bitte den Gemeindeschlüssel oder Regionalschlüssel des Gebiets angeben, entweder eine einzelne Gemeinde oder z.b. ein Kreis. Die Nummern sind z.b. in Wikipedia Artikeln abrufbar.

viele Grüße

Dietmar

[0] http://forum.openstreetmap.org/viewtopic.php?pid=436386#p436386
[1] http://regio-osm.de/hausnummerauswertung/maptheoevaluation.html
[2] http://forum.openstreetmap.org/viewtopic.php?pid=436286#p436286