Einzelne Bus-Routen nach GeoJson exportieren

Hallo zusammen,

ich suche eine Möglichkeit, einzelne Bus-Routen nach GeoJSON zu exportieren. Nur die Wege und nicht die Haltestellen. Hab schon ein bisschen mit overpass-turbo rum gebastelt und ein Beispiel gefunden das etwas ähnliches macht aber komme da überhaupt nicht weiter. Als Softwareentwickler finde ich Overpass QL furchtbar und verstehe das Konzept dahinter überhaupt nicht. Hat jemand eine Idee oder fertige Lösung?

Hm. Ich gehe zu overpass-turbo, setze eine passende BoundingBox, tippe im Wizard type:relation and ref=274 ein (zum Beispiel) und erhalte das hier. Export → GeoJSON, fertich. Oder versteh ich was falsch?

PS: Ach so, die Haltestellen müsste man noch rausfiltern, die sind bei PTv2 natürlich drin.

–ks

Ganz verkehrt ist es nicht, aber wie gesagt, noch zu viel drin. Aber jetzt verstehe ich zumindest grob wie der Wizard funktioniert. Da ist die Hilfe ja leider auch sehr dürftig.

Achja und ich möchte auch keine “type=route_master”, sondern die einzelnen “type=route”

Probiers mal damit:

[out:json][timeout:25];
// gather results
(
  // query part for: “ref=274”
  relation["ref"="274"][from="Wiesbaden Hauptbahnhof"]({{bbox}});
);
// print results
//out meta;
>; way._; out; >;
out skel qt;

Mit from selektiert man eine Richtung, way._; selektiert die ways im aktuellen Datensatz (falls es Platform Wege gibt, muss man die auch noch rausfiltern).

Hier gibt es die Anleitung zu overpass: https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL

oder hiermit ohne platform-ways

/* Fahrwege Bus */
[out:xml][timeout:25];
relation["ref"="274"][from="Wiesbaden Hauptbahnhof"]({{bbox}})->.hrr;
(way(r.hrr);
 - way(r.hrr)[public_transport=platform];);//ways ohne platform-ways
(._;>;);//Ergebnis mit Elementen
out skel qt;

Bei Routen mit “public_transport:version=1” nimmt man einfach alle ways, da PTv1 nur punktförmige Haltestellen kennt und die Rollen “sehr variabel” sind.

Ansonsten kann man am ehesten PTv2 annehmen. Da nimmt man alle Member mit leerer Rolle und bekommt damit alle Fahrwege und sonst nichts. (PTv2 garantiert nicht, dass alle Platforms “public_transport=platform” haben. Aber es ist festgelegt, dass die Rolle “platform*” oder “stop*” an einer Haltestellenangabe steht und dass die Fahrwege die leere Rolle haben)

Es gibt auch noch kaputte Routen. Für die ist es natürlich schwieriger.

Danke euch allen. Das sollte für meinen einfachen Anwendungsfall völlig ausreichen.

Eigentlich hatte ich gehofft, die so exportierten Daten bei Wikimedia Commons speichern zu können und dann in einem Projekt verwenden zu können. Leider erwartet das offenbar ein völlig anderes Format, siehe https://www.mediawiki.org/wiki/Help:Map_Data?rdfrom=commons:Help:Map_Data Gibt es verschiedene Arten von GeoJson die nicht kompatibel sind?

Kann es sein, dass es dein Projekt schon gibt ?
https://de.wikivoyage.org/wiki/Emmerich_am_Rhein#Mobilität
Ich meine user 4omni ist daran beteiligt.

Erwartet wird ein json-Format in dem inhaltlich geojson eingesetzt ist. So total anderst ist das nicht, aber nach meiner Meinung kein GeoJOSM mehr.

{ "license": "ODbL-1.0","data":
geojson-Datensatz
}

Jain. Ja ich bin nicht der erste der versucht, ÖPNV-Linien bei Wikivoyage auf einer Karte darzustellen, allerdings funktioniert das auf dieser Seite anders, als ich das vor habe. Dort werden die Linenrelationen über die Wikidata-ID adressiert und direkt von OSM bezogen. Da aber die “Kartographer-Software” keine Relationen von Relationen (master-routen) unterstützt, muss man dazu als “dirty-hack” die Wikidata-ID bei OSM an alle Linienvarianten dran schreiben. Das ist nicht wirklich Sinn der Sache. Auch kann man damit keine einzenen Linienvaranten selektieren, was ich gerne hätte, weil man dafür ja keine eigenen Wikidata-IDs vergeben kann.
Ich wollte daher zumindest testweise ausprobieren, die Daten stattdessen als GeoJSON bei Commons zu hinterlegen. Hätte auch den Vorteil, dass man die Kontrolle über die Daten behäät und keiner bei OSM einem die Relation “Unter dem Hintern wegziehen” kann.

Ok, man muss also die ganzen Daten in das “data” Element packen. Werde ich mal ausprobieren.