osrm - open source routing machine
TRANSCRIPT
OSRM
Open Source Routing Machine
SotM-France 2016Clermont-Ferrand
Frdric Rodrigo CC BySA 2016
Chemin le plus court
Algorithme de Dijkstra1959
A*1968
Dijkstra guid
https://en.wikipedia.org/wiki/File:Dijkstras_progress_animation.gifhttps://commons.wikimedia.org/wiki/File:Astar_progress_animation.gif
Chemin le plus court
Contraction de Hirarchies2008 Karlsruhe Institut fr Theoretische (KIT)
Pr-calculer les raccourcis
https://www.mjt.me.uk/posts/contraction-hierarchies/
tat de l'art
Route Planning in Transportation Networks http://arxiv.org/abs/1504.05140
Stratgie
Vitesserponse
Configurationdynamique
CHA*OSRM (KIT, MapBox)
Valhalla (Mapzen)(double A* multi-niveau)
GraphHopper
OSRM
API v4 v5
KIT
MapBox
OSRM / route
http://router.project-osrm.org/route/v1/car/-76.9964,38.89711;-77.03647,38.90840
{ "code":"Ok", "routes":[{ "legs":[{ "steps":[], "duration":323.9, "distance":4507.3 }], "geometry":"}allF`i}tMhLArDxLGhNqJj[M|HuEzEaK~[eRvx@gD@EpMuJn`@mCrIuAfBHhAx@n@?lXePA", "duration":323.9, "distance":4507.3 }], "waypoints":[{ "name":"7th Street Northeast", "location":[ -76.996167, 38.897111 ]}, { "name":"16th Street Northwest", "location":[ -77.036521, 38.9084 ]}]}
stepleg
route
OSRM / table
http://router.project-osrm.org/table/v1/car/-76.9964,38.89711;-77.03647,38.90840
{ "code":"Ok", "durations":[ [0, 323.9], [344.2, 0] ], "destinations":[{ "name":"7th Street Northeast", "location":[ -76.996167, 38.897111 ]}, { "name":"16th Street Northwest", "location":[ -77.036521, 38.9084 ]} ], "sources":...}
OSRM / match
http://router.project-osrm.org/match/v1/car/-76.9964,38.89711;-77.03647,38.90840
OSRM / trip
http://router.project-osrm.org/trip/v1/car/-76.9964,38.89711;-77.03647,38.90840;76.9878,38.8246
Problme du voyageur de commerce
{ "code":"Ok", "trips":[{ "legs":[{ "summary":"", "duration":344.2, "distance":4536.7 }, { "summary":"", "duration":323.9, "distance":4507.3 }], "geometry":"ohnlFfeeuMb\\BBw~@xCyMfD?L}M|Lse@}@{DQ_D?ilBjR?hLArDxLGhNqJj[M|HuEzEaK~[eRvx@gD@EpMuJn`@mCrIuAfBHhAx@n@?lX", "duration":668.1, "distance":9044 }],...
OSRM / tile
http://map.project-osrm.org/debug/
Mise en place
Facile!
Profils (car, bicycle, foot)
osrm-extract
osrm-contract
osrm-routed
speed_profile = { ["motorway"] = 90, ["trunk"] = 85, ["primary"] = 65, ["secondary"] = 55,
surface_speeds = { ["grass"] = 40, ["unpaved"] = 40,
properties.u_turn_penalty = 20properties.traffic_signal_penalty = 2
function node_function (node, result)
function way_function (way, result) bridge, tunnel, oneway, lanes...
OSRM en production
Rapide: beaucoup de mmoire
Un serveur OSRM par profil
Mise jour donnes sans interruption de service
Utilisable en lib sans serveurmaps.me
binding node.js
Futur
Court termeRsultat pas uniquement au plus rapide
Matrice de temps et de distance
Respect de restriction (acces=destination)
Possible long termeIsochrone
Multi-profil