Routing on rails with OpenStreetMap Michael Reichert (Nakaner) photo: Andre de, Wikimedia Commons, CC-BY-SA 4.0
Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future
Current solutions Travic Michael Reichert (Nakaner) Current proprietary solutions OSM data Features Demo Performance Implemen- tation Future
Current solutions Mentz Michael Reichert (Nakaner) proprietary Current solutions OSM data Features Demo Performance Implemen- tation Future
Current solutions Raildar.fr Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future filtering the planet using osmfilter, routing with OSRM, rumours about tag replacement
Current solutions Signal.eu.org Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future OSRM, support of left/right track, reversing
Railway tracks in OpenStreetMap Michael Reichert (Nakaner) connected one way per track Current solutions 1 841 430 km tracks OSM data (608 055 km in Europe) Features 1 239 753 possible Demo points (634 524 in Performance Implemen- Europe) tation 289 423 points tagged Future with railway=switch (208 078 in Europe)
Railway tracks in OpenStreetMap Simple points Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future
Railway tracks in OpenStreetMap Slip points Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future double slip point ( railway=switch + railway:switch=double slip )
Railway tracks in OpenStreetMap Slip points Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future single slip point ( railway=switch + railway:switch=single slip )
Railway tracks in OpenStreetMap Slip points Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future crossing ( railway=railway crossing )
Railway tracks in OpenStreetMap Tags Michael Reichert (Nakaner) Current railway=rail / light rail / tram / solutions subway / narrow gauge OSM data gauge=* Features Demo electrified=no / yes / contact line / rail Performance voltage=* Implemen- tation frequency=* Future See Railways at OpenStreetMap at SotM 2016 for more.
Features Michael power systems Reichert (Nakaner) gauges Current preconfigured profiles solutions freight train and TGV profiles for France and OSM data Germany/Austria/Switzerland Features universal diesel train (any gauges), max. 120 kph Demo universal electric train (any gauges, any power system), Performance max. 140 kph Implemen- tation profile customization via YAML file Future reversing reduced default speeds for crossovers and other slower tracks map matching (CSV, GPX)
Demo Michael Reichert (Nakaner) Current solutions OSM data Features Demo Demo Performance Implemen- tation Future
Performance Michael Reichert (Nakaner) osmium tags-filter -o planet-rail.osm.pbf planet.osm.pbf nw/railway 6 minutes on a fast server, Current solutions 1–2 GB RAM OSM data 168 MB .osm.pbf file Features import: about 1 minute, 1200 MB RAM without Demo contraction hierarchies Performance Implemen- graph: 204 MB tation 2450 routes through Germany Future 2352 successfull routes 2 minutes 8 seconds, 1 thread average length per route: 409 km
Implementation Michael Reichert (Nakaner) com.graphhopper Current solutions GraphHopper OSM data Features Demo com.graphhopper.reader.osm Performance Implemen- de.geofabrik.railway routing tation GraphHopperOSM Future RailwayHopper + cleanUp(): void
Implementierung FlagEncoder Michael com.graphhopper.routing.util Reichert (Nakaner) ≪ interface ≫ Current solutions FlagEncoder OSM data Features AbstractFlagEncoder Demo Performance Implemen- tation Future de.geofabrik.railway routing RailFlagEncoder
Implementierung RailFlagEncoder Michael Reichert (Nakaner) Current RailFlagEncoder solutions OSM data - electrifiedValues: ArrayList < String > Features - acceptedVoltages: ArrayList < Integer > - acceptedFrequencies: ArrayList < Double > Demo - acceptedGauges: ArrayList < Integer > Performance - speedCorrectionFactor: double Implemen- tation + RailFlagEncoder(properties: PMap) Future
Implementierung RailFlagEncoder Michael Reichert (Nakaner) YAML config Current RailFlagEncoder solutions name OSM data - electrifiedValues: ArrayList < String > electrified Features - acceptedVoltages: ArrayList < Integer > voltages Demo - acceptedFrequencies: ArrayList < Double > frequencies - acceptedGauges: ArrayList < Integer > Performance gauges - speedCorrectionFactor: double Implemen- tation maxspeed + RailFlagEncoder(properties: PMap) Future speedFactor
Experiences with GraphHopper Michael Reichert + suitable for routing on any routeable OSM network (Nakaner) – introduction into FlagEncoder could be more verbose Current solutions – TurnCostExtension without good documentation → OSM data misconceptions Features – no different penalities for reversing for each FlagEncoder Demo Performance – a library for car routing only Implemen- flag encoders designed to be extensible tation addition of turn restrictions not designed to be extensible Future reading of OSM files not extensible → fork of GraphHopper + forum Read the unit tests!
Space for improvement Left/right track on double-tracked lines Michael Reichert (Nakaner) Current solutions OSM data Features direction of travel Demo Performance Implemen- tation Future
Space for improvement Tag to distinguish left and right tracks Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future railway:preferred direction=forward / backward
Space for improvement Estimation of travel times Michael Reichert (Nakaner) currently 0 . 9 · speed limit Current solutions OSM data Features Demo Performance Implemen- tation Future
Space for improvement Estimation of travel times Michael Reichert (Nakaner) currently 0 . 9 · speed limit Current solutions OSM data Comparison of timetables of nonstop IC trains using the TGV Features profile (max. 160 kph due to old infrastructure) Demo Performance Implemen- timetable routing tation Future IC Koblenz–Mainz 1:05 0:50 IC Magdeburg–Dessau 0:42 0:36
Space for improvement Specify heading direction Michael Reichert (Nakaner) Current ucken–Frankfurt solutions OSM data Features Demo Performance Saabr¨ Implemen- tation Future
Space for improvement Specify heading direction Michael Reichert (Nakaner) Current ucken–Frankfurt solutions OSM data Features Demo Performance Saabr¨ Implemen- tation Future
Missing data Gradients Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future Hansueli Krapf, Wikimedia Commons, CC-BY-SA 3.0
Missing data Gradients Michael Reichert (Nakaner) Problems Current SRTM resolution too low solutions cuttings and embankments in SRTM data OSM data narrow valleys Features vertical precision Demo Performance Implemen- tation Future
Missing data Gradients Michael Reichert (Nakaner) Problems Current SRTM resolution too low solutions cuttings and embankments in SRTM data OSM data narrow valleys Features vertical precision Demo Performance Solutions? Implemen- tation Use railway lines to correct elevation data? Future elevation profiles provided by operator of infrastructure Measure elevation profiles data ourselves?
Missing data Lines for special purpose (S-train, RER, . . . ), diesel engine bans Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future Poudou99, Wikimedia Commons, CC-BY-SA 4.0
Missing data Loading gauge Michael Reichert (Nakaner) Current solutions OSM data Features Demo Performance Implemen- tation Future Falk2, Wikimedia Commons, CC-BY-SA 4.0
Missing data Loading gauge Michael Reichert (Nakaner) Current solutions .osm.pbf file OSM data Features Demo shape file/PostGIS database Performance FlagEncoder polygons around lines Implemen- with special properties tation Future
Michael Reichert (Nakaner) The development of this software has been sponsored by Current solutions OSM data Features Demo Performance Implemen- tation Source code: Future https://github.com/geofabrik/railway_routing
Recommend
More recommend