Projekte
Eisenbahn-Routing
Für die französische Staatsbahn SNCF hat die Geofabrik auf Basis der Routingengine GraphHopper einen Eisenbahnrouter
entwickelt, der Routen über die in OpenStreetMap erfassten Eisenbahngleise berechnet.
GraphHopper diente dabei als Java-Bibliothek, von der Klassen abgeleitet wurden, um die Straßen-spezifischen
Besonderheiten zu ersetzen. Oberflächlich könnte man meinen, dass es genügen sollte, alle highway
durch railway
zu ersetzen. Für eine einfachen Prototypen wäre das ausreichend, für ein nützliches
Eisenbahnrouting jedoch nicht, denn das Bahnwesen hat einige Besonderheiten,
auf die Rücksicht genommen werden muss:
- Anders als im Straßenverkehr kann ein Zug nicht an jedem Knoten im Graphen (bei der Bahn sind das die Weichen,
bei Straßen die Kreuzungen) in alle Richtungen abbiegen. Es kann nur stumpf abgebogen werden. Dazu werden die
Abbiegewinkel an allen Knoten im Graphen berechnet und Abbiegebeziehungen außerhalb eines freigegebenen Intervalls
als „verboten“ eingetragen.
- Gleiskreuzungen bedürfen einer Sonderbehandlung. Über sie kann nur gerade hinweggefahren werden.
Während des Iterierens über alle Knoten im Graphen sind Weichen nicht von Kreuzungen unterscheidbar, da das
Attribut
railway=railway_crossing
, das in den OpenStreetMap Kreuzungen kennzeichnet, schon vor diesem
Verarbeitungsschritt verworfen wurde. GraphHopper ist nicht als Bibliothek entworfen worden, weshalb
der Eisenbahnrouter eine modifizierte Variante der GraphHopper-Engine benutzt, die sich leichter erweitern lässt.
- Wendezeiten spielen bei der Routenberechnung eine große Rolle. Im einfachsten Fall genügt es bei Fahrtrichtungswechsel,
dass der Triebfahrzeugführer ans andere Ende des Zuges geht und von dort die Fahrt fortsetzt. Im Güterverkehr muss die Lokomotive den Zug jedoch meist
noch umfahren, um am anderen Ende angekuppelt zu werden. Diese Prozedur dauert häufig mehr als 15 Minuten. Umwege, die
Fahrtrichtungswechsel vermeiden, können sich daher schnell lohnen.
- Verschiedene Spurweiten und Stromsysteme sind zwei von vielen weiteren Gründen, die einen universellen Einsatz
von Fahrzeugen verhindern. Der Eisenbahnrouter kann über eine Konfigurationsdatei um spezielle Profile für einzelne Fahrzeugbaureihen
erweitert werden, die nur bestimmte Stromsysteme oder Spurweiten nutzen können.
Neben der reinen Routenberechnung wird auch das Map-Matching von GPS-Aufzeichnungen auf das Gleisnetz in verschiedenen Formaten
(GPX, CSV, Shapefiles) unterstützt.
Alle Komponenten dieses Projekts wurden als Open-Source-Software veröffentlicht.
Zurück