Hey, we just released the 5.5.0 release of OSRM featuring a lot of refactoring and bug fixes. Here are the highlights:
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 every `n` 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 - Support for `destination:forward`, `destination:backward`, `destination:ref:forward`, `destination:ref:backward` also in combination with `oneway=-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 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 [1] now displays turn penalties at higher zoom levels. - We now provide online documentation [2] for the API (requests, responses, examples). - Shared memory now supports multiple clients (multiple instances of libosrm). However there is a known bug when doing frequent data switches, see #3455 - Improved error reporting, especially for I/O and file loading. The detailed changelog can be found at the end of this email. As always this is accompanied by a new node-osrm package. Cheers, Patrick # 5.5.0 - Changes from 5.4.0 - API: - `osrm-datastore` now accepts the parameter `--max-wait` that specifies how long it waits before aquiring a shared memory lock by force - Shared memory now allows for multiple clients (multiple instances of libosrm on the same segment) - Polyline geometries can now be requested with precision 5 as well as with precision 6 - Profiles - the car profile has been refactored into smaller functions - get_value_by_key() is now guaranteed never to return empty strings, nil is returned instead. - debug.lua was added to make it easier to test/develop profile code. - `car.lua` now depends on lib/set.lua and lib/sequence.lua - `restrictions` is now used for namespaced restrictions and restriction exceptions (e.g. `restriction:motorcar=` as well as `except=motorcar`) - replaced lhs/rhs profiles by using test defined profiles - Handle `oneway=alternating` (routed over with penalty) separately from `oneway=reversible` (not routed over due to time dependence) - Handle `destination:forward`, `destination:backward`, `destination:ref:forward`, `destination:ref:backward` tags - Properly handle destinations on `oneway=-1` roads - Guidance - Notifications are now exposed more prominently, announcing turns onto a ferry/pushing your bike more prominently - Improved turn angle calculation, detecting offsets due to lanes / minor variations due to inaccuracies - Corrected the bearings returned for intermediate steps - requires reprocessing - Improved turn locations for collapsed turns - Sliproad classification refinements: the situations we detect as Sliproads now resemble more closely the reality - Trip Plugin - changed internal behaviour to prefer the smallest lexicographic result over the largest one - Bugfixes - fixed a bug where polyline decoding on a defective polyline could end up in out-of-bound access on a vector - fixed compile errors in tile unit-test framework - fixed a bug that could result in inconsistent behaviour when collapsing instructions - fixed a bug that could result in crashes when leaving a ferry directly onto a motorway ramp - fixed a bug in the tile plugin that resulted in discovering invalid edges for connections - improved error messages when missing files during traffic updates (#3114) - For single coordinate geometries the GeoJSON `Point` encoding was broken. We now always emit `LineString`s even in the one-coordinate-case (backwards compatible) (#3425) - Debug Tiles - Added support for turn penalties - Internals - Internal/Shared memory datafacades now share common memory layout and data loading code - File reading now has much better error handling - Misc - Progress indicators now print newlines when stdout is not a TTY [1] http://map.project-osrm.org/debug/#15.93/52.5145/13.3516 [2] http://project-osrm.org/docs/v5.5.0/api _______________________________________________ OSRM-talk mailing list OSRM-talk@openstreetmap.org https://lists.openstreetmap.org/listinfo/osrm-talk