After months of work this release is the first to feature an additional routing algorithm next to Contraction Hierarchies. It's based on a Multi-Level Dijkstra approach partitioning the road network and allowing for incredible fast weight updates. This is a trade-off between processing time and query speed: MLD based queries are about a factor two to three slower then queries on a full CH (still in the milliseconds range).
The new algorithm is still experimental and we are working on feature parity with Contraction Hierarchies: so far the route
and match
plugins are supported. For a continental sized network we expect partitioning to take in the order of minutes and fully updating weights under a minute.
- Here is a replay for a route between Munich and Berlin (wait for it to explore the search space)
- Here is a example partition on Germany
Quickstart:
osrm-extract data.osm.pbf
osrm-partition data.osrm
osrm-customize data.osrm
osrm-routed --algorithm=MLD data.osrm
Node.js Bindings
We merged the Node.js bindings node-osrm
into the osrm-backend
repository, with the hopes of an easier development workflow. You can build them using CMake via
cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=On -DENABLE_MASON=On
or just use npm install osrm
for pre-built packages.
Map Matching
New option gaps=split|ignore
to enable / disbale track splitting.
New option tidy=true|false
to simplify traces automatically and remove blobs.
Use this option or tidy your noisy traces (e.g. with geojson-tidy) can increase the Map Matching's quality.
Profiles
Important in case you're using the segment function: we added a force_split_edges
flag to the global properties which - when set to true - guarantees that the segment function will be called for all segments, but also doubles memory consumption in the worst case.