OSMSuspects - Qualitätssicherung Adressen (Deutschland)

Ich wollte damit nur aufzeigen, das zwischen dem “offiziellen” Namen durch die Stadt, das Landratsamt, das zuständige Landesamt und dem Bundesamt Unterschiede bestehen, die ein “zuständiger Sachbearbeiter” nicht klären kann - nicht von oben nach unten und von unten nach oben nur auf Antrag.

“Deutschlands Bürokratie”

Das Thema “Wie heißt die Stadt wirklich” ist ein vergleichweise junges Thema, da es erst durch den Einzug von Computern relevant geworden ist. Und eigentlich ist es meine Hoffnung, dass Computer bald so schlau sind wie Menschen und erkennen, dass “Mühldorf a. Inn”, “Mühldorf am Inn”, “Mühldorf a. I.” das gleiche bedeuten.

Das können die Computer schon seit mehr als 50 Jahren, man muss es ihnen nur beibringen.
Ein primitiver String-Vergleich ist halt viel einfacher zu programmieren als eine Ähnlichkeitsmetrik (“Meinten Sie vielleicht …”).

Man braucht nicht alles selber zu erfinden: Viele Datenbanken kennen solche Vergleiche:

https://www.postgresql.org/docs/current/static/fuzzystrmatch.html


select id,:test "test",localname,levenshtein(localname,:test)
  from boundaries
 where country = 'DEU'
   and levenshtein(localname,:test) < 6
 order by levenshtein(localname,:test), localname;

   id    |     test     |    localname    | levenshtein 
---------+--------------+-----------------+-------------
  941004 | Mühldorf Inn | Mühldorf a. Inn |           3
 2260843 | Mühldorf Inn | Mühlsdorf       |           5
 3084045 | Mühldorf Inn | Mülldorf        |           5

   id   |      test       |    localname    | levenshtein 
--------+-----------------+-----------------+-------------
 941004 | Mühldorf an inn | Mühldorf a. Inn |           2

   id    |      test       |    localname    | levenshtein 
---------+-----------------+-----------------+-------------
  941004 | Mühldorf am Inn | Mühldorf a. Inn |           1
 2186929 | Mühldorf am Inn | Nußdorf am Inn  |           4

   id   |     test      |    localname    | levenshtein 
--------+---------------+-----------------+-------------
 941004 | Mühldorf am I | Mühldorf a. Inn |           3

   id    |     test     |    localname    | levenshtein 
---------+--------------+-----------------+-------------
  941004 | Mühldorf a.I | Mühldorf a. Inn |           3
  941054 | Mühldorf a.I | Mühldorfer Hart |           5
 2260843 | Mühldorf a.I | Mühlsdorf       |           5
 3084045 | Mühldorf a.I | Mülldorf        |           5

   id   |     test      |    localname    | levenshtein 
--------+---------------+-----------------+-------------
 941004 | Mühldorf a.I. | Mühldorf a. Inn |           3

Nur wenn die Buchstaben zu sehr auseinander liegen, wird es unsauber - Fuzzy halt.

Gruss
walter

Hallo Dooley,
ich habe noch eine Frage / Feature Request zu den Listenauswertungen von OSMSuspects:

Dort hast du ja Listen zu den drei Fehlergruppen addr:city, addr:street und addr:postcode,

und in jeder Liste hast du auch eine Spalte “Anzahl”.

Wäre es möglich, dass diese Listen im HTML-Code so darstellbar sind, dass man diese durch Klick auf den Spaltenkopf auf- oder absteigend sortieren kann?

Bei bestimmten Tabellen im OSM-Wiki geht das sehr schön!

Gruß, Stephan

https://osm-suspects.gbconsite.de/liste/street/A

Ist drin. Die Seite bitte einmal neu laden…

Gruß, Frank

Suuuuuuuuuuuuper !!!

Tausend Dank!!

Aus gegebenem Anlass https://osm-suspects.gbconsite.de/statistic habe ich eine zusätzliche Liste https://osm-suspects.gbconsite.de/liste/boundarypostcode eingebaut, die defekte Postleitzahlengebiete anzeigt.

Das Handling zu JOSM ist leider nicht optimal, weil mit dem Standard-Aufruf anscheinend die Relations-Elemente nicht geladen werden, hab aber grad eigentlich keine Zeit, da genauer nachzuschauen. Das wird irgendwann gefixt werden, im Moment gehts halt über eine WürgAround-quick’n’dirty-Lösung, weil die Gelegenheit grad gut ist mit der Menge an defekten PLZ-Gebieten :wink:

Hallo Dooley,

ich habe leider nochmal in der Auswertung der doppelten Adressen false positives entdeckt:

  1. Fall:
osm_id			1345088286		93190640
addr:housenumber	10			10
addr:street		Limbacher Straße	Limbacher Straße
addr:suburb	
addr:postcode		09337			09224
addr:country	

al9						Grüna
al8			Hohenstein-Ernstthal
al7
al6			Landkreis Zwickau	Chemnitz *1
al5
al4			Sachsen			Sachsen
=====> addr:city	Hohenstein-Ernstthal    Chemnitz

*1 kreisfreie Stadt

  1. Fall:
osm_id			3282124445		566641087
addr:housenumber	35			35
addr:street		Obere Hauptstraße	Obere Hauptstraße
addr:suburb	
addr:country	

al9			
al8			Hartmannsdorf		Niederfrohna
al7						Limbach-Oberfrohna
al6			Landkreis Mittelsachsen	Landkreis Zwickau
al5
al4			Sachsen			Sachsen
=====> addr:city	Hartmannsdorf		Niederfrohna

  1. Fall:
osm_id			1261062499		147545641
addr:housenumber	1			1	
addr:street		Wittgensdorfer Straße	Wittgensdorfer Straße
addr:suburb	
addr:country					DE
al9
al8			Burgstädt		Taura
al7			Burgstädt		Burgstädt *2
al6			Landkreis Mittelsachsen	Landkreis Mittelsachsen
al5
al4			Sachsen			Sachsen
=====> addr:city	Burgstädt		Taura

*2 Verwaltungsgemeinschaft

Ich habe unter die Fälle die jeweiligen Namen der admin_level der Umschließenden Objekte geschrieben. Meiner Meinung nach sollte der Algorithmus zur Ermittlung des impliziten Inhaltes von addr:city bei admin_level 8 beginnen und den Namen des umschließenden Objektes auslesen. Nur wenn dieser nicht existiert, sollte bei admin_level 7, 6, 5, 4 weitergesucht werden, bis ein Name gefunden wurde.

Ich weiß dass dieser Algorithmus zeitaufwendig sein könnte, aber er muß ja nur zum Einsatz kommen, wenn es notwendig ist den impliziten Namen von addr:city herauszufinden.

Ich wäre Dir sehr verbunden, wenn es Deine Zeit erlaubt, Dir das Problem mal anzusehen.

Vielen Dank,
viele Grüße JSe

Vielleicht wäre es auch einfach sinnvoll, komplette Adressen (city, suburb) zu verwenden. Es ist auch für einfache Auswertungen “einfacher” als eine “komplizierte” Abfrage.

@geri-oc:
Das ist bereits jetzt der Fall, das addr:city verwendet wird, wenn es explizit gesetzt ist. Andernfalls ist OSMSuspects! darauf angewiesen, addr:city zu ermitteln, um unterscheiden zu können, ob zwei Adressen bei gleichen Werten addr:street und addr:housnumber im gleichen Ort (addr:city ist auch gleich) liegen und damit ein “bemeckernswertes” Duplikat darstellen oder eben nicht.
Diese Überprüfung ist aufgrund eines Hinweises von mir (siehe Posting #283 in diesem Thread) von Dooley dankenswerter Weise eingeführt worden.

Hier geht es nun darum, den benutzten Algorithmus nochmals zu optimieren. Natürlich könnte man diese 3 Fälle auch “lösen”, indem man addr:city einfach setzt, aber das wäre erstens eine Art Mapping zwar nicht für den Renderer sondern für den Qualitätssicherer und zweitens wäre es natürlich besser, diese false positives gar nicht anzuzeigen, wenn das mit vertretbarem Aufwand vermeidbar wäre.

M.E. ist es detailliertes Mapping - also genaues erfassen der (addr:=) Daten.
Also nicht mappen für den Renderer, Qualitätssicherer, …

+1:
Der “postalische Ortsname” weicht nicht selten vom administrativen ab, bzw. umfasst andere Gebiete.
Das explizite Setzen von addr:city erhöht also die Datenqualität und ist dann nicht einmal Redundanz.
Es ist mMn damit kein “false positive”.
Außerdem kommt es den Nutzern entgegen, die an den Häusern/POIs “unbedingt!!!” die volle Adresse haben möchten.

Ich habe mir am Wochenende nochmal die dupes-Erkennung genauer angeschaut und dabei einen kleinen Bug gefixt, daher ist die dupes-Anzahl seit heute etwas gestiegen.

Was nicht geht, wenn in keiner der Vergleichsadressen ein addr:city gesetzt ist, also genau die Fälle, die du in deinem vorherigen Post https://forum.openstreetmap.org/viewtopic.php?pid=647023#p647023 aufgezählt hast.
Ich bin (wahrscheinlich zum Leidwesen von dir) eine der Personen, die unbedingt :wink: komplette Adressen am Objekt haben wollen aus den Gründen, die geri-oc und seichter genannt haben. Daher geht mein Motivationlevel, an der dupes-Erkennung in dieser Richtung weiterzuschrauben, gegen Null.

Gruß, Frank

Moin.

Ich habe die Prüfkriterien für die Hausnummern etwas strenger ausgelegt, damit auch Einträge wie “0”, “12 u. 13”, “30 | 1”, “12, 14” etc. gefunden werden, über die ich gestern gestolpert bin.

Gruß, Frank

Danke! Das könnte zwar Diskussionen geben, weil mancher einer „12, 14“ für völlig richtig hält, aber es ist sicher richtig, so etwas anzumeckern – man muss es ja nicht ändern.

Moin,

werden bei den Dupes nicht mehr die unterschiedlichen addr:city (explizit am Objekt gesetzt) berücksichtigt?

Grüße, Georg
Hat evtl. am Wochenende nur ein größerer/anderer Bug den kleineren bug gefressen? :wink:

Hmpf. Du hast recht, da scheint irgendwas mit der Erkennungslogik nicht mehr zu stimmen. Da muß ich wohl nochmal ran.

Edit: Die dupes werden für die nächsten ca. 30 Minuten nicht zur Verfügung stehen, ich generiere die grade neu.

Edit 2: So, sollte gefixt sein. Danke @GeorgFausB, für den Hinweis.

@dooley

Sorry, aber so ganz passt das jetzt nicht, weil Adressen wie “1 1/2”, also mit Leerstelle und nachfolgendem Bruch, verbreitet völlig korrekte Hausnummern sind (zum Beispiel in Augsburg oder Greding).

Danke, habe es heute nacht noch gefixt.