Umkreissuche mit PLZ

Hallo,

ist es möglich, dass ich als Quelle eine PLZ habe und mir dafür alle Orte inkl. PLZ und Längen-/Breiten-Grade im Umreis von z.B. 60 KM ausgeben lasse?

Gruß & Danke

trendco

Erstmal einige Fragen:

  • Was ist in deiner Logik ein Ort?
  • Auf was bezieht sich die Mitte des Umkreises?
  • Was sollen die Koordinaten beschreiben?
  • Welche Datenbasis soll verwendet werden?
  • Was ist der Zweck / Anwendungsfall des Ganzen?

Ich möchte eine PLZ vorgeben, Beispiel: 70173 (Stuttgart).
Wenn ich auf https://www.openstreetmap.org genau nach dieser PLZ suche, erhalte ich in der URL ja auch die Koordinaten dazu zurück: 48.77776 & 9.17842. Zumindest verstehe ich das so.
Das stellt nun die Mitte des Ausgangspunktes dar.
Nun möchte ich einen Radius vorgeben, z.B. 60 KM um diesen Ausgangspunkt.
Als Ergebnis hätte ich gerne alle Ortsnamen inkl . PLZ und Längen-/Breiten-Grade die sich in diesem 60KM Radius befinden

  • Welche Datenbasis soll verwendet werden?
    Das verstehe ich jetzt nicht. Aber das ist zugegebenermaßen auch mein Erstkontakt mit Ppenstreetmap etc.

Die OSM-Definition von Ort findest du hier: https://wiki.openstreetmap.org/wiki/DE:Key:place

Mit Datenbasis ist folgendes gemeint:

  • Möchtest du online die OSM-Daten abfragen?
  • Hast eine eigene DB mit OSM-Daten?
  • Möchtest du auf Basis von OSM-Extrakten (Files) operieren?

Auch von Interesse:

  • Erwartest du eine “pfannenfertige” Abbrage?
  • Kannst du selbst Zwischenergebnisse verarbeiten?

PS: Etwas einfacher wird es, wenn eine quadratische Box (BBOX) anstatt eines Kreises verwendet werden kann.

Bzgl. Datenbasis: Das wollte ich online abfragen. Die anderen Varianten kannte ich bis jetzt gar nicht (Neuling halt)

Erwartest du eine “pfannenfertige” Abbrage?
Erwarten kann ich das sicherlich nicht, aber freuen würde ich mich schon.

  • Kannst du selbst Zwischenergebnisse verarbeiten?
    Also parsen kann ich das schon denk ich mal.

Sorry, das ist echt komplettes Neuland für mich. Ich hatte mir das wohl zu einfach vorgstellt. Ich dachte man schickt ne spezielle Anfrage mit den Vorgaben und dem was man zurück haben möchte an den Server und bekommt die Rohdaten zurück die man dann weiter verarbeiten kann. :roll_eyes:

Wart noch etwas auf weitere Antworten. So schwer kann’s doch auch nicht sein, in einer geospatialen Datenbank :slight_smile:

Ich habe nur zu wenig Ahnung davon. Aber vielleicht schaust du mal auf https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Relative_to_other_elements_.28around.29, mit dem „around“ müsste sich doch was anfangen lassen.

–ks

Die spannende Frage ist, wie oft soll das ganze aufgerufen werden? Ist das für eine App?

Die spannende Frage ist, wie oft soll das ganze aufgerufen werden? Ist das für eine App?
Keine App. Nur ab und zu um eine Liste zu erzeugen.

Erste Gehversuche für die interaktive Datenermittlung kannst du hier durchführen: https://overpass-turbo.eu/

Selektiere einfach mal per Wizzard nach “place=*” beziehungsweise “boundary=postal_code”.
In den Ergebnisdaten, die du exportieren kannst, finden sich auch die Koordinaten der Objekte.

Noch mal für die langsamen:

Ich gebe rechts in der Karte in deer Suchbox meinen Ausgangspunkt ein.
Dann ich klicke auf den Wizzard und gebe dort “boundary=postal_code” ein und schicke das ab.

Als Ergebnis kommt folgender Code:

/*
This has been generated by the overpass-turbo wizard.
The original search was:
“boundary=postal_code”
*/
[out:json][timeout:25];
// gather results
(
  // query part for: “boundary=postal_code”
  node["boundary"="postal_code"]({{bbox}});
  way["boundary"="postal_code"]({{bbox}});
  relation["boundary"="postal_code"]({{bbox}});
);
// print results
out body;
>;
out skel qt;

Und rechts in der Karte sind einige anliegende Orte selektiert.

Wie gebe ich jetzt einen Umreis vor?
Ich hdachte eigentlichin diesem Wizzard klickt man sich zusammen was man braucht, aber irgendwie steig ich noch nicht durch.

Ich weiß nicht, in welchen Projekten und/oder Foren du sonst so aktiv bist, aber mit dem Tonfall gewinnst du hier relativ wenig Freunde …

Wenn man von anderen kostenlose Lösungen erwartet, sollte man zumindest auf Rückfragen wie „Was ist der Zweck / Anwendungsfall des Ganzen?“ eingehen. Denn die meisten helfen zwar gern einem Privatmenschen bei einem interessanten Projekt, liefern aber eher ungern einem Unternehmen kostenloses Hirnschmalz für eine Lösung, mit der dann dort ein Haufen Geld verdient wird. Soweit klar? Zweitens könnte es für dein Problem ja eventuell auch andere Lösungen geben, aber das lässt sich auch erst sagen, wenn du verrätst, wozu du die Daten brauchst und was du damit anfängst.

Für praktisch alle hier ist das Kartographieren reines Hobby, wir machen das zum Spaß in unserer Freizeit, weil wir davon begeistert sind, mit einfachen Mitteln eine aktuelle, detaillierte Geodatenbank zusammenzutragen, die sich inhaltlich (wenn auch nicht anwendungstechnisch) mit kommerziellen Produkten mehr als messen kann. Du kannst von OSM kostenlos die von uns in unserer Freizeit erfassten und bereitgestellten aktuellen und präzisen Geodaten beziehen und damit machen, was du willst. Dafür ist OSM da.

Bei allen darüber hinausgehenden Leistungen (pfannenfertige Auswertung) würde ich an deiner Stelle etwas mehr Geduld aufbringen und vor allem erstmal Leute dafür begeistern :slight_smile:

–ks

Nein, also einfach mal so “zusammen klicken was man braucht” gibt’s leider nicht … aber ich frage mich schon, wie sehr du gewillt bist, dich dort einzuarbeiten und etwas zu lernen?! Jemanden der sich interessiert wäre wohl nach dem Klick auf Wizard in dem “Abfrage-Assistent-Fenster” der Hyperlink “Wizard” aufgefallen, der zu https://wiki.openstreetmap.org/wiki/Overpass_turbo/Wizard führt. Dort findest du (fast) alles was du brauchst. Wenn ich den Eindruck habe, dass du dich eingearbeitet und belesen hast und trotzdem nicht weiterkommst, dann gibt’s natürlich gerne weitere Hilfe.

Ohjeee…hier ist jetzt aber was gewaltig daneben glaufen.
Mit “Noch mal für die langsamen:” meinte ich natürlich mich selbst, weil ich da irgendwie nicht durchsteige und nicht wirklich voran komme. Aber wenn ich mir das jetzt so durchlesen, klingt es echt missverständlich - Tausenmal SORRY! Aber das war echt nicht so gemeint :roll_eyes:

Alles gut, das sind die kleinen Nachteile der schriftlichen Kommunikation :slight_smile:

–ks

Wie wär es damit zum Start:

[out:json][timeout:25];
// gather results
(
  nwr["boundary"="postal_code"](around:5000,48.5,9.0);
);
// print results
out body;
>;
out skel qt;

Zur Erklärung siehe https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Relative_to_other_elements_.28around.29
( zu einfach soll es ja nicht sein :slight_smile: )

Prinzipiell sollte das so aussehen:

[timeout:60];
rel[boundary=postal_code][postal_code=89073];
rel(around:10000)[boundary=postal_code][postal_code];
map_to_area -> .areas;
nwr(area.areas)[place~"(village|town)"]->.places;
foreach .areas -> .a {
  nwr.places(area.a);
  convert result
          ::geom = center(geom()),
          _has_plz = a.u(t["postal_code"]),
          :: = ::;
  out geom;
}

Mit 60 Kilometer Radius wird das wahrscheinlich wg. zu langer Laufzeit abbrechen.

Und ja, in overpass turbo sieht man vom Ergebnis nichts auf der Karte. Das ist ein bekanntes Problem.

Edit: Performance verbessert