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
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.
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.