benötige Rohdaten für die Zuordnung von Stadt zu Landkreisen

Hallo,

ich bin gerade dabei, eine Smartphone-App zu entwickeln, die dem Anwender die aktuellen Covid19-Statistiken anzeigt für den Landkreis in dem er sich gerade aufhält.
Eine API zu den landkreis-spezifischen Infektionsdaten habe ich bereits und muss dafür (logischerweise) den Landkreis an die API übermitteln.
Durch die GPS-Koordinaten des Anwenders kann ich theoretisch über die Google Maps API den Landkreis ermitteln - jedoch sind hier nur begrenzt viele Anfragen im Monat kostenlos und ich möchte bei einer kostenlosen App (die vermutlich eh niemand außer meinen Bekannten benutzen wird) ungern Kosten tragen.

Somit benötige ich Tabellen, die mir helfen, die Verbindung von GPS-Koordinaten zu Landkreis zu finden.
Ich habe hier etwas gefunden:
https://www.basedig.com/german-government/list-of-all-cities-and-towns-in-germany-with-gps-coordinates-4937/
Für wenige Euro könnte ich mir eine Liste aller deutschen Städte mit ihren Koordinaten holen. Dann könnte ich mithilfe der GPS-Koordinaten die nächstgelegene Stadt ermitteln. Dann würde mir nur noch die die Weiterverbindung von Städten zu Landkreisen fehlen.

Durch googeln bin ich hier gelandet. Kann mir hier jemand helfen? Ist es möglich mithilfe der Rohdaten von OSM eine Liste aller deutschen Städte mit dazugehörigem Landkreis zu generieren? Geht es evtl sogar, sich eine Liste aller Städte mit einer Koordinate zu generieren? Dann wäre ich komplett unabhängig von der evtl etwas älteren Tabelle im oben genannten Link.
Vielleicht habt ihr ja ein Tutorial für mich.

Bin für jede Hilfe dankbar.

Vielen Dank und Grüße,

Felix

Hallo Felix,

https://osm-boundaries.com/

Ansonsten

https://download.geofabrik.de/europe/germany.html
https://wiki.openstreetmap.org/wiki/DE:Osmconvert
https://wiki.openstreetmap.org/wiki/DE:Osmfilter
https://wiki.openstreetmap.org/wiki/DE:Grenze#Kreis_.E2.80.93_admin_level.3D6

Flächenobjekt in Punkt:
osmconvert mit Option --all-to-node

Viel Erfolg
Joachim

Viel Erfolg
Joachim

vielen Dank für die Antwort, Joachim. Werde es mir genauer anschauen.

VG, Felix

Vom Stat. Bundesamt gibt es eine Tabelle mit allen Orten in DE inkl. Mittelpunktkoordinaten und Kreiszuordnung.
Ich habe die Tabelle mal hier runtergeladen:
https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Administrativ/Archiv/GVAuszugQ/AuszugGV3QAktuell.xlsx?__blob=publicationFile

Von der aktuellen Koordinate zum richtigen Ort zu kommen erscheint mir aber so nicht möglich.
Mit Hilfe einer overpass Abfrage wie http://overpass-turbo.eu/s/Z7E /Ausführen drücken) erhält man den Kreis und Ort direkt aus den Koordinaten.
Anleitung zu overpass: https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Query_for_areas_.28is_in.29

Die Zuordnung zu einem Landkreis per nächstgelegener Stadt wäre mir zu ungenau.
Für Deutschland sind die Kreisgrenzen (admin_level=6) komplett in OSM erfasst (s.o.).
Dann braucht man “nur noch” ein Werkzeug, das feststellt, in welcher dieser Flächen eine Koordinate liegt (s.o.: is_in).

Wenn man zunächst nur einen Namen hat, liefert eine Suche per Nominatim neben den Koordinaten auch den Land- oder Stadtkreis. Man muss sich da nur oft den richtigen unter vielen namensgleichen heraussuchen.

Hallo,

ganz großen Dank für eure Antworten. Jetzt habe ich sogar drei Möglichkeiten, mein Problem anzugehen.

Ich habe lange nach Reverse Geolocation gesucht, aber bin nie auf Overpass gestoßen. Super interessant! Hat mich bis gestern Nacht am 3 beschäftigt.

Ich habe ein wenig mit dem von fx99 geschriebenen Befehl rumgespielt. Mich interessiert für die Landkreise vor allem die Adminebene 6. Bei bestimmten Koordinaten bekomme ich zwei Nodes zurück und nicht nur einen. Beispiel hier:
*
is_in(47.909824, 7.908466);
area._[admin_level~“6”];
out;*

Was hat es denn mit dem zweiten Knoten inhaltlich auf sich, der bei beginnt? Gibt es einen Befehl, um nur den erstgenannten Knoten mit den landkreisspezifischen Informationen zurückzubekommen? Beide Male beginnt der key mit “name”, sodass es recht fehleranfällig wäre, das nachträglich auseinanderzuschnipseln.

VG, Felix

boundary=administrative vice boundary=religious_administration
Politische vice kirchliche Verwaltung

Mit dieser Erweiterung

is_in(47.909824, 7.908466);
area._[admin_level~"6"];
rel(pivot)[boundary=administrative];
out tags; 

bekommst Du nur die gesuchten (weltlichen) Landkreise.
In diesem Fall die OSM Relation 1946367.

Darstellen kannst Du diese z.B. über https://www.openstreetmap.org/relation/1946367

Vielen Dank euch beiden. Ich habe jetzt vermutlich meine finale Abfrage. Habe noch leicht umgestellt auf JSON:

[out:json];
is_in(47.909824, 7.908466);
area._[admin_level~6]
[boundary=administrative];
out;

wieso prüfst du auf String-Ähnlichkeit mit ~ statt auf Gleichheit mit =?

~ ist vermutlich langsamer als =, außerdem trifft “admin_level~6” auch welche mit 16 und 26 wenn ich das richtig sehe, siehe diese Testabfrage hier: https://overpass-turbo.eu/s/Zcg