Releases: Project-OSRM/osrm-backend
OSRM v5.7.0
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.
OSRM v5.6.0
The 5.6 release includes some great new features:
Most importantly we now support the infamous issue #77: Routing on generic weights, not only the duration. The car profile makes use of this new feature by penalizing turns onto restricted streets (HOV-only, access=destination
) heavily. This makes sure we don't route through them but still support starting/stopping from them. This increased our resource usage quite a bit, so if you are running global deployments make sure you have enough headroom before upgrading.
We also dropped our dependency on Luabind and replaced it with the awesome sol2 that we can bundle as header-only library.
The trip plugin also saw some improvements with regard to allowing you to do non-roundtrips and explicitly selecting the first / last node as start and end-points.
Tags
- Never route over
highway=steps
in the car profile even if access tags allow it. This is a case of Wiki vs real-data where we pick the sensible solution for users. See #3435 and #3668. - Support
destination:street
tag. See #3543. - Support
surface=sett
for the bike profile. See #3657. - We now respect
access=destination
and only route there when the start/destination is on that road. - We now route over hov-only roads, when the start point is already on one.
API
- Added an option
generate_hints
(true
by default) which allows to prevent the engine to generate hints. If there is no need for hints use this to make the response considerably smaller. See #3456. annotations
now also supports a list of specific values likedistances,nodes,speeds
to only include data selectively.- The trip plugin supports two new parameters
round_trip={true,false}
andsource={first,any}
anddestination={first,any}
.
Infrastructure
- We disabled Link-Time Optimization by default when building from source as it lead to complications with old compilers and binutils. If your system is recent enough and you know what you are doing pass
-DENABLE_LTO=ON
to CMake. See #3524. - Updated to the latest libosmium version which allows us to skip PBF metadata improving parsing speed up by 10-20%. If you need metadata on OSM Objects (think: a way object's version) use
osrm-extract --with-osm-metadata
. See #3373. - Luabind is no longer required. We removed Luabind completely and vendor sol2 for bindings now. See #3382.
- We refactored the car / bike and foot profile. They should be more readable and easier to get into now. Thanks Emil Tin for your efforts here.
Tools
- We re-wrote the
osrm-components
tool: it generates a GeoJSON small components layer now. See #3570. - There is a new tool
osrm-extract-conditionals
for processing conditional tags (opening hour grammar). See #3414 and #3415.
OSRM v5.5.4
Bugfix release which includes the following changes from v5.5.3:
- PR #3561 - added missing backwards speeds for cycleways in bicycle profile
- PR #3515 - adjusted number of
nodes
inannotation
- Ticket #3430 - Fix possible division by zero by clamping latitude to +/- 85.05
- PR #3555 - Fix an error that occurs when a road forks immediately after exiting a ferry
- PR #3575 - Don't emit invalid turn types for obvious turns at sliproads and roundabouts.
OSRM v5.5.2
This is a bugfix release. We reverted #3184 as it had a major performance impact on dense graphs (i.e. the walk and bike profiles).
OSRM v5.5.1
Bugfix release to correct a deadlock using osrm-datastore
in combination with multiple reader processes.
The bug in question is #3455
OSRM v5.5.0
Tags
- Added a more accurate weight penalty for ways tagged with
oneway=alternating
. These tags are for narrow bridges or tunnels on which the direction of traffic alternates everyn
minutes and are sometimes traffic light controlled. - Brought guidance support in line with guidance on roundabouts for
junction=circular
tagged junctions. These junctions can be thought of as roundabouts where traffic within the roundabout does not always have right of way (examples [1], [2]). - Support for
destination:forward
,destination:backward
,destination:ref:forward
,destination:ref:backward
also in combination withoneway=-1
tags.
Guidance
- Polished up turn angle classification by detecting offsets due to lanes and minor variations due to data modelling inaccuracies. Turn angles now better resemble what users experience.
- More accurate classification of sliproad scenarios (examples [1], [2]). When the maneuver is obvious, we now emit a single instruction for turning onto and then immediately off of sliproads.
- Improvements to the name change heuristic reduce new name announcements.
API
- We now support precision 5 (default) and 6 polyline geometries with the new parameter,
geometries=polyline6
.
Infrastructure
- Improvements to the Hilbert space filling curve contribute to improvements to geospatial lookup performance.
- The ever useful Debug Map now displays turn penalties at higher zoom levels.
- We now provide online documentation for the API (requests, responses, examples).
- Shared memory now supports multiple clients (multiple instances of libosrm).
- Improved error reporting, especially for I/O and file loading.
OSRM v5.4.0
With OSRM v5.4.0 we continued our focus on Guidance and improved lane support which was introduced in v5.3.
Some additional highlights:
- Better classification for Roundabout Turns and roundabouts in general
- Improved sliproad detection
- Improved turn penalty function fit to real data
- Support for Lane Access Tags
- Designated HOV Lanes
- Improved Lane Anticipation for subsequent quick lane changes
- Name change detection heuristic reducing the number of instructions
- Eliding instructions for quick turns in Staggered Intersections
- More aggressive instruction collapsing
- Limiting merge instructions to Motorways