API: Bundesland aus Koordinaten ermitteln

Hallo,

ich möchte aus gegebenen Koordinaten (lat,lon) das entsprechende Bundesland ermitteln. Hat jemand von euch einen Tipp?

Danke und viele Grüße,
Karsten

Das nennt sich Reverse Geocoding und geht mit der Nominatim API

Siehe Reverse - Nominatim Documentation

Beispiele:
https://nominatim.openstreetmap.org/reverse?lat=52.5163818&lon=13.3775222&zoom=5

https://nominatim.openstreetmap.org/reverse?lat=52.3161946&lon=12.6137279&zoom=5

Edit: die API sucht laut Doku nach dem nächsten OSM-Objekt, und gibt dann dessen Adresse aus. Kann sein, dass das in der Nähe der Grenze von zwei Bundesländern etwas unscharf ist (wenn das nächste OSM-Objekt “über der Grenze” ist).


Zweite Idee: Mit Overpass geht es auch. Das ist wahrscheinlich besser, weil genauer.

Du besorgst dir die Polygone der Bundesländer und prüfst, in welchem Polygon dein Punkt enthalten ist. Dafür gibt es Algorithmen.

1 Like

Die Polygone der Bundesländer kann man z.B. von https://osm-boundaries.com/ bekommen.

Mit ogrinfo und den Polygonen von osm-boundaries.com ist die Suche ohne viel Programmieren recht einfach zu machen:

ogrinfo -dialect SQLite -sql "select name from '<osmb-name>' where within(makepoint(<lon>,<lat>), geometry)" <osmb-name>.geojson

<osmb-name> steht für den Name der Download-Datei von osm-boundaries.com, z.B. OSMB-79007f721b0d923671ad066131cd1997ba651e7d, <lat>, <lon> sind die Koordinaten des Punkts. Die Ausgabe enthält unter anderem den Namen des Bundeslands, in dem der Punkt liegt.