Place=(neighbourhood|hamlet|suburb|locality) node radius

Hi,
vor allem @lonvia hier - aber ich wollte andere von der DIskussion nicht ausschliessen.

Mir fällt immer öfter auf - vor allem bei Notes benachrichtigungen das die ergebnisse des “Reverse Geocodings” doch wundersam sind. Ich kriege teilweise das place=neighbourhoods von Kilometern weiter mit reingeworfen was völliger Unsinn ist. In Bielefeld gibt es auch noch Tonnen an Neighbourhoods die wie die ursprünglichen Höfe heissen was dann immer sehr verwirrend ist.

Hier ein Beispiel:

near Siedlung Am Kamphof, Kattenstroth, Gütersloh, Kreis Gütersloh, North Rhine-Westphalia, 33334, Germany

Das Problem ist hier ja das nominatim vermutlich “Raten” muss wie weit das Neighbourhood geht, und da sind eben ein paar annahmen drin die für Los Angeles oder Moscow passen, aber für die kleinräumigen Strukturen hier eher nicht so.

Was für optionen habe ich?

boundary=administrative + place?
Gibts auch eine option einfach einen “radius” an einen place zu kleben?
Sowas wie:

place=neighbourhood
name=foo
radius=200

Ist dann eben maximal 200m radius um den node. (War jetzt so mein erster Einfall)

Flo

1 Like

Sollte sowas nicht besser als Area gemappt werden (boundary=…), denn als Node?

2 Likes

eine Textsuche im Nomatim-Quellcode später:

DECLARE
  radius FLOAT := 500;
BEGIN
  IF rank_search <= 16 THEN -- city
    radius := 15000;
  ELSIF rank_search <= 18 THEN -- town
    radius := 4000;
  ELSIF rank_search <= 19 THEN -- village
    radius := 2000;
  ELSIF rank_search  <= 20 THEN -- hamlet
    radius := 1000;

Wie kumakyoo sagt, Areas sind das Nonplusultra, denn: boundary=administrative verkürzen den Wirkungskreis eines neighborhood, z.B.:
Nikolausberger Weg 34, Göttingen => 34, Nikolausberger Weg, Humboldtbogen[place=neighborhood], Deutsches Theater[admin_level=11], Innenstadt[admin_level=10]
auf der anderen Straßenseite—keine 50m weg—dann schon ohne neighborhood
Nikolausberger Weg 35, Göttingen => 35, Nikolausberger Weg, Humboldtstraße[admin_level=11], Nordstadt[admin_level=10]

Insbesonder bei “place=farm” ist das echt verwirrend.

z.B.

“new comment near Speckmanns Hof, Heepen, Bielefeld, North Rhine-Westphalia, 33719, Germany”

Das ist etwa einen Kilometer von der Hofstätte von “Speckmanns Hof” entfernt

und das Objekt liegt nicht einmal im gleichen Siedlungskörper.

Es gibt hier zwar vereinzelt Ortsteile / Siedlungen die tatsächlich nach einem Hof benannt sind (Kamphofviertel hinter dem Bielefelder Hauptbahnhof, Lohmannshof an der Bielefelder Uni, Oberlohmannshof in Bielefeld-Jöllenbeck), aber in diesen Fällen besteht der namensgebende Hof überhaupt nicht mehr, oder zumindest nicht mehr als landwirtschaftlicher Betrieb.

Auch bei meiner eigenen Adresse bekomme ich als Angabe:

“near Meier zu Ummelmann, Mitte, Bielefeld, North Rhine-Westphalia, 33615, Germany”

obwohl es keine Spuren dieses Hofes mehr gibt:

Sieht so aus als sollten wir für “place=farm” mal über lifecycle management nachdenken?

area-Objekte sind eindeutig vorteilhafter für reverse geocoding,
aber: neighbourhood|hamlet|suburb|locality sind allesamt idR nur schwammig lokalisiert.
Man kann da einen Umriss malen, der ist meist aber letztlich frei erfunden - jedoch besser als gar nichts und immer noch besser als ein Radius.
Wie man aber an dem Code-Auszug ableiten kann (radius), ist die Zugehörigkeit zu einem Gebiet deutlich aufwendiger zu bestimmen als eine primitive Abstandsmessung zu machen, denn mindestens city und town haben in DACH immer eine zugehörige admin-Grenze.

admin-Grenzen für die ganz oben genannten Gebiete halte ich aber in diesem Zusammenhang eigentlich für missbräuchlich, mit Verwaltung hat das ja fast immer nicht das Geringste zu tun. Aber nun gut, AL=11,12 und gelegentlich mehr sind schon gebräuchlich.

1 Like

Dann ist das kaputt oder das sind keine meter

Der ist ein Beispiel Note:

https://www.openstreetmap.org/note/4724173

Reverse geocoding:

near Siedlung Am Kamphof, Kattenstroth, Gütersloh, Kreis Gütersloh, North Rhine-Westphalia, 33334, Germany

Getagged als place=neighbourhood - sollte also 500m sein d.h. ausserhalb. Sind aber 2180m - trotzdem drin.

https://www.openstreetmap.org/node/10102738252

Flo

Idealerweise place=neighbourhood als Fläche mappen, einfach ohne boundary=administrative, ausser das ist ein offizieller Stadtteil. Radius an den Node geht nicht, das bringt uns auch nicht wirklich weiter, denn die Stadtteile sind ja selten rund (oder im Fall von Nominatim, rechteckig).

Das habe ich inzwischen herausgenommen, genauso wie place=isolated_dwelling. Das wird sich allerdings erst mit der Zeit in der Datenbank bereinigen.

Vermutlich macht ein Software von dir ein reverse-Geocoding mit zoom=14. Das gibt dir die nächste Neighbourhood zu deinem Punkt. Das ist nicht das gleiche, wie die Neighbourhood ermitteln, die an diesem Punkt in der Addresse vorkommt. Der max-Suchradius dazu ist hier (WSG84)

Wenn du punktgenau geocodieren willst, lieber mit dem Standardzoom arbeiten und die Angaben, die dich nicht interessieren, wegwerfen. Wenn du das geocodejson-Format nutzt, kannst du da bequem, die entsprechenden Felder zu einem passenden Label verbinden…

1 Like

Die Software ist in diesem Fall das Notes interface im OSM das die Mails verschickt. Keine Ahnung wie die requests beim Nominativ ankommen.

Flo