[OSRM-talk] Released OSRM 5.7.0
Patrick Niklaus
patrick.niklaus at student.kit.edu
Mon Apr 24 16:44:26 UTC 2017
Hey!
this release features some exiting new improvements: A new routing algorithm.
===== Core =====
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.
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.
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](https://github.com/mapbox/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.
===== Full changelog =====
- Changes from 5.6
- Bug fixes:
- Fixed 505: Invalid distance value for distance as routing weight.
- Fixed 3958: Fix traffic light penalties for non-turns
- Fixed 3933: crash when collapsing instructions
- Algorithm:
- OSRM object has new option `algorithm` that allows the
selection of a routing algorithm.
- New experimental algorithm: Multi-Level Dijkstra with new toolchain:
- Allows for fast metric updates in below a minute on
continental sized networks (osrm-customize)
- Plugins supported: `match` and `route`
- Quickstart: `osrm-extract data.osm.pbf`, `osrm-partition
data.osrm`, `osrm-customize data.osrm`, `osrm-routed --algorithm=MLD
data.osrm`
- NodeJs Bindings
- Merged https://github.com/Project-OSRM/node-osrm into
repository. Build via `cmake .. -DCMAKE_BUILD_TYPE=Release
-DENABLE_NODE_BINDINGS=On -DENABLE_MASON=On`.
- `OSRM` object has new option `algorihtm="CH","CoreCH","MLD"`
- Internals
- Shared memory notification via conditional variables on Linux
or semaphore queue on OS X and Windows with a limit of 128 OSRM Engine
instances
- Files
- .osrm.datasource_index file was removed. Data is now part of
.osrm.geometries.
- .osrm.edge_lookup was removed. The option
`--generate-edge-lookup` does nothing now.
- `osrm-contract` does not depend on the `.osrm.fileIndex` file anymore
- `osrm-extract` creates new file `.osrm.cnbg` and `.cnbg_to_ebg`
- `osrm-partition` creates new file `.osrm.partition` and `.osrm.cells`
- `osrm-customize` creates new file `.osrm.mldgr`
- Profiles
- Added `force_split_edges` flag to global properties. True
value guarantees that segment_function will be called for all
segments, but also could double memory consumption
- Map Matching:
- new option `gaps=split|ignore` to enable/disbale track splitting
- new option `tidy=true|false` to simplify traces automatically
More information about the OSRM-talk
mailing list