Also ich habe mir nun OSM Nominatim noch einmal etwas genauer angesehen und vor allem Mal geschaut wie so die Adresse “zusammengebaut” wird.
Hier habe ich eine Anfrage zu Friedlach 51 (also den Koordinaten davon) gemacht und in der JSON-Datei sieht man eigentlich ganz gut, wie die Adresse immer so entsteht.
Die bekomme Adresse lautet:
51, Friedlach, Krobathen, Glanegg, Feldkirchen, Kärnten, 9555, Österreich
So sollte es eigentlich sein:
Hausnummer, Straße, Ort(steil), Gemeinde, Bezirk, Bundesland, PLZ, Land
Jedoch macht dies hier keinen Sinn, da der Ort “Krobathen” wo ganz anders liegt. “Friedlich” müsste eigentlich der Ort sein. (Im obigen Beispiel ist es nur die Straße, die so heißt.) So müsste die richtige Adresse wie folgt lauten:
51, Friedlach, Friedlach, Glanegg, Feldkirchen, Kärnten, 9555, Österreich
Wenn man sich jetzt die JSON ansieht, welche die API liefert, sieht man dass hier der Ort wie folgend beschrieben wird und dann einfach die einzelnen Teile zusammengebaut werden:
[...]
"country": "Österreich",
"postcode": "9555",
"state": "Kärnten",
"county": "Feldkirchen",
"city": "Glanegg",
"district": "Krobathen",
"street": "Friedlach",
"housenumber": "51",
[...]
Wenn man sich nun das ganze auch auf der Website ansieht, merkt man, dass Friedlach als Ort eigentlich da wäre, jedoch wurde es durch Glanegg, aufgrund eines kleineren admin_levels ersetzt.
Laut der offizellen Dokumentation wird der Name halt laut dem Address_rank zusammengebaut, jedoch habe ich bis jetzt leider keine Möglichkeit gefunden, diesen zu beeinflussen, außer indem man halt kein village, sondern z. B. ein hamlet verwendet. Das würde dann halt im Umkehrschluss heißen, dass man eigentlich alle Orte immer im folgenden Schema aufbauen müsste, damit die Benennung richtig funktionieren sollte:
house_number, highway, hamlet, village, region, state, postcode, country
Das würde für Österreich bedeuten, dass jede Gemeinde ein village sein müsste und die einzelnen Ortschaften einer Gemeinde (unabhängig der Größe) ein hamlet. Aber ich finde, dass das wirklich nicht umsetzbar wäre und dadurch ja die Bedeutung von hamlet, village, city, … komplett verloren gehen würde.
Falls jemand einen Tag kennt, welcher den Address rank beeinflusst, wäre das eine sehr große Hilfe, da man so Nominatim so beeinflussen könnte, das die richtigen Namen dabei herauskommen, jedoch müsste man dann wahrscheinlich für ganz Österreich irgendwo definieren, welcher Rang jetzt Gemeinde, Ortschaft, Bezirk, etc. bedeutet.
Außerdem sind wir auch nicht das einzige Land mit diesen Problemen, in Deutschland, Schweden, Norwegen, … gibt es genau das gleiche Problem…
Siehe:
Norwegen
Deutschland, Norwegen, Schweden
Ich habe mir dann die Änderungen am Code angesehen, aber so wie ich es verstanden habe, werden hier nur die Standardwerte, also für den address_rank geändert, was vielleicht die Reihenfolge beeinflusst, aber dies löst das prinzipielle Problem nicht, dass OSM ja nicht wissen kann, welches village jetzt mehr “Wert” ist, ohne dass es der Mapper definiert.
Weil wenn man sich das Beispiel von vorher noch einmal ansieht, dann merkt man, dass Glanegg und Friedlach den gleichen address_rank haben und Nominatim nur anhand des admin_levels entscheidet, was jetzt angezeigt wird und was nicht. Nun würde ich einfach gerne den address_rank von Friedlach auf 20 setzen und das admin_level gegenfalls anpassen, damit Friedlach dann (den falschen Ort) Krobathen ersetzt. Dadurch würde man das ganze Problem lösen, jedoch müsste man dann diesen address_rank überall anpassen.
Wenn man den address_rank nicht anpassen kann, dann müsste man, wie ich bereits im 1. Post erwähnt hatte, wahrscheinlich alle admin_levels bearbeiten, oder, da man das an in (wahrscheinlich) jedem Ort in Österreich machen müsste, damit es wirklich funktioniert, man lässt es einfach so wie es ist und wir hoffen, dass Nominatim das Problem selbstständig löst.
Danke fürs Durchlesen und ich hoffe ich konnte mich halbwegs verständlich ausdrücken.
LG
Stefan