Overpass - Abfrage von Haltestellen innerhalb einer bestimmten Stadt

Schönen guten Tag meine Damen und Herren,

ich bin gerade dabei, eine Abfrage mit Overpass zu konstruieren, die mir sämtliche Haltestellen (sowohl Straßenbahn- als auch Bushaltestellen)
innerhalb einer bestimmten Stadt bzw. im Umkreis dieser Stadt anzeigt.

Einen ersten Ansatz habe ich bereits. Dieser sieht wie folgt aus:

node
[“railway” = “station”]
(48.5956,8.2359,49.1,8.8);
out body;

node
[“railway” = “tram_stop”]
(48.5956,8.2359,49.1,8.8);
out body;

node
[“highway” = “bus_stop”]
(48.5956,8.2359,49.1,8.8);
out body;

node
[“railway” = “stop”]
(48.5956,8.2359,49.1,8.8);
out body;

Die Frage ist jetzt die, ob es eine andere Möglichkeit gibt, um eine bestimmte Region mittels Koordinaten einzuschränken ?

Vielen Dank vorab!

Mit freundlichen Grüßen

erstmal herzlich willkommen im Forum!

ja, das sollte gehen. Man kann die Administrativen Grenzen (z.b. Stadtgrenzen) oder auch PLZ-Grenzen als Area angeben.
Da ich kein “Overpassisch spreche”, kann ich dir die Syntax nicht sagen. suche mal nach “area”.

Gruss
walter

Hallo Walter,

vielen Dank für Ihre Antwort. Ich habe mal nach der Variante mit “area” geschaut und habe dazu folgende Overpass-Syntax kreiert.


area[name = "Karlsruhe"];
node (area)
  ["railway" = "tram_stop"];
out;

area[name = "Karlsruhe"];
node (area)
["highway" = "bus_stop"];
out;

area[name = "Karlsruhe"];
node (area)
["railway" = "stop"];
out;


Das Ergebnis ist ganz erfreulich aus. Nur ist das Problem, dass unter Umständen manche Straßenbahnhaltestellen nicht unter “railway = tram_stop” gepflegt sind, sondern unter “railway = stop”. Deswegen habe ich das nachträglich noch hinzugefügt. Ich hoffe, dass ich damit 90 % der Haltestellen abdecke.
Vielen Dank nochmals für den Tipp!

Mit freundlichen Grüßen

Dazu kommen noch Nodes mit “public_transport=stop_position” und Nodes, Ways und Relations (MPs) mit “public_transport=platform”.

(Wenn Du auf der Suche nach Fehlern bist, dann kannst Du auch noch alle als Haltestellen benutzte Objekte aus den Relationen friemeln. Die dann noch dazu kommen sind bestimmt falsch gemappt.)

frohes Mappen
Weide

Hallo Weide,

auch bei Ihnen bedanke ich mich für den Tipp. Ich bin noch relativ neu in der Thematik von OpenStreetMap und habe bisher
nur mit der "Overpass-API “gespielt”. Ich kenne zwar die Grundelemente Node, Way und Relation, allerdings waren
meine bisherigen Abfragen nur auf Nodes gewesen.

Da ich nur einzelne Punkte gebraucht habe, habe ich Node verwendet und Relation nicht berücksichtigt.
Sie haben Recht was public_transport = stop_position angeht. Das sollte ich definitiv in meiner ABfrage ergänzen.

Was ich aber nicht ganz kapiert habe ist, wie ich alle als Haltestellen benutze Objekte aus den Relationen ermittle.

area[name = "Karlsruhe"];
node (area)
  ["railway" = "tram_stop"];
out;

area[name = "Karlsruhe"];
node (area)
["highway" = "bus_stop"];
out;

area[name = "Karlsruhe"];
node (area)
["railway" = "stop"];
out;

area[name = "Karlsruhe"];
node (area)
["public_transport" = "stop_position"];
out


Die oben dargestellte Abfrage sollte rein theoretisch alle Haltestellen abdecken oder?

Mit freundlichen Grüßen

Sicherheitshalber würde ich das aber nicht auf Nodes beschränken. Und mach das doch einfach im Wizard mit:

railway=tram_stop or highway=bus_stop or railway=stop or public_transport=stop_position in Karlsruhe

Ob damit alle angezeigt werden hängt davon ab ob alle eingetragen sind und dann auch noch ob mit diesem Schema. :wink: Auf jeden Fall aber wirst du mehrfach Angaben erhalten. Pro “normaler” Haltestelle können so wohl schon mal drei Nodes zusammen kommen.

Leicht OffTopic:

Wenn Du in einer Gemeinschaft geduzt wirst, heisst das nicht, dass die Leute Dich geringschätzen, sondern das Gegenteil: Du bist ein Teil der Gemeinschaft.

Man wird damit fast alle Halte finden. Aber es ist möglich, dass irgendwo nur der Steig gemappt wurde und dass der als Fläche oder Linie dargestellt ist. In dem Fall gäbe es dort keinen Punkt. Es wäre ein Way oder eine Relation.

Weide

Hallo Weide,

vielen Dank für deine Hilfe.
Deine Tipps haben mir sehr weitergeholfen.

Nun hätte ich eine andere Frage…

Gibt es bei Overpass die Möglichkeit, eine Haltestelle anhand von Koordinaten zu finden?


node
  ["railway" = "tram_stop"]
  (48.988,8.435,49.010,8.447);
 out body;

Ich habe hier beispielsweise eine Ausgangshaltestelle aus OSM gewählt, mir die Koordinaten genommen und jeweils um +/- 0.006 die Unter- bzw. die Obergrenze dadurch bestimmt. Nachdem Ausführen der Abfrage bekomme ich meine Zielhaltestelle. Ist das der einzige Weg, um mittels Koordinaten zu suchen oder könnte ich tatsächlich nur Längen- und Breitengrad angeben?

Danke!

Gruß
caka1011

Es gibt noch around, das funktioniert so: http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide#Something_near_something_else

Ich benutze für die Übersicht in overpass-turbo.eu

/* scan Bus- und Bahnhalte im Ort -Auszug alle-*/
[out:xml][timeout:25];
(   area[name="Karlsruhe"];
)->.searchArea;
( node[highway=bus_stop](area.searchArea); 
  node[railway=tram_stop](area.searchArea);
  node[railway=halt](area.searchArea);
  node[railway=station](area.searchArea))->.hnb;
( way[public_transport=platform](area.searchArea); 
  way[railway=platform](area.searchArea))->.hwp;
( node[public_transport=stop_position](area.searchArea);
  node[railway=stop](area.searchArea))->.hns;
node[public_transport=platform](area.searchArea)->.hnp;
rel[public_transport=stop_area](area.searchArea)->.hra;
((((.hwp; node(w.hwp)); .hns); .hnp); .hnb)->.hnd;//scan alle
(.hnd; .hra); // Ergebnis mit stop_areas
out qt;//Ausgabe normal
//out meta qt;//Ausgabe gross und josm

Hallo axelr,

danke für die Hilfe. Da wäre noch etwas, worauf ich momentan noch keine präzise Antwort gefunden habe.

Wieso benutzt du bei way nur die Attribute

public_transport = platform

und

railway=platform

und bei relation nur

public_transport = stop_area

?

Wäre es auch möglich, beispielsweise bei relation,

railway = tram_stop

zu verwenden?

Ich hätte alle Haltestellenattribute, die oben zu finden sind, in Kombination mit Nodes, Ways und Relations gesetzt.

Vielen Dank vorab!

Mit freundlichen Grüßen

Sorry für die Leichenfledderei, aber das Thema taucht ja eh immer wieder mal auf. @axelr anscheinend hat sich die Syntax ein wenig geändert. Habe die Query mal gefixt:

/* scan Bus- und Bahnhalte im Ort -Auszug alle-*/
[out:xml][timeout:25];
(   area[name="Karlsruhe"];
)->.searchArea;
( node[highway=bus_stop](area.searchArea); 
  node[railway=tram_stop](area.searchArea);
  node[railway=halt](area.searchArea);
  node[railway=station](area.searchArea);)->.hnb;
( way[public_transport=platform](area.searchArea); 
  way[railway=platform](area.searchArea);)->.hwp;
( node[public_transport=stop_position](area.searchArea);
  node[railway=stop](area.searchArea);)->.hns;
node[public_transport=platform](area.searchArea)->.hnp;
rel[public_transport=stop_area](area.searchArea)->.hra;
((((.hwp; node(w.hwp);); .hns;); .hnp;); .hnb;)->.hnd;//scan alle
out qt;//Ausgabe normal
//out meta qt;//Ausgabe gross und josm

Danke nochmal dafür.