Fix unhandled exception when trace_route or trace_attributes when there are no continuous matches

Enhancement

Folded Low-Stress Biking Code into the regular Bicycle code and removed the LowStressBicycleCost class. Now when making a query for bicycle routing, a value of 0 for use_hills and use_roads produces low-stress biking routes, while a value of 1 for both provides more intense professional bike routes.

Bike costing default values changed. use_roads and use_hills are now 0.25 by default instead of 0.5 and the default bike is now a hybrid bike instead of a road bike.

Added logic to use station hierarchy from transitland. Osm and egress nodes are connected by transitconnections. Egress and stations are connected by egressconnections. Stations and platforms are connected by platformconnections. This includes narrative updates for Odin as well.

Release Date: 2017-07-31 Valhalla 2.3.2

Bug Fix

Update to use oneway:psv if oneway:bus does not exist.

Fix out of bounds memory issue in DoubleBucketQueue.

Many things are now taken into consideration to determine which sides of the road have what cyclelanes, because they were not being parsed correctly before

Fixed issue where sometimes a “oneway:bicycle=no” tag on a two-way street would cause the road to become a oneway for bicycles

Fixed trace_attributes edge_walk cases where the start or end points in the shape are close to graph nodes (intersections)

Set up isochrone to be able to handle multi-location queries in the future

Data Producer Updates

Fixes to valhalla_associate_segments to address threading issue.

Added support for restrictions that refers only to appropriate type of vehicle.

Navigator

Added pre-alpha implementation that will perform guidance for mobile devices.

Map Matching Updates

Added capability to customize match_options

Release Date: 2017-06-12 Valhalla 2.2.6

Bug Fixes

Fixed the begin shape index where an end_route_discontinuity exists

Guidance Improvements

Updated Slovenian (sl-SI) narrative file.

Data Producer Updates

Added support for per mode restrictions (e.g., restriction:<type>) Saved these restrictions as “complex” restrictions which currently support per mode lookup (unlike simple restrictions which are assumed to apply to all driving modes).

Matrix Updates

Increased max distance threshold for auto costing and other similar costings to 400 km instead of 200 km

Release Date: 2017-06-05 Valhalla 2.2.5

Bug Fixes

Fixed matched point edge_index by skipping transition edges.

Use double precision in meili grid traversal to fix some incorrect grid cases.

Update meili to use DoubleBucketQueue and GraphReader methods rather than internal methods.

Release Date: 2017-05-17 Valhalla 2.2.4

Bug Fixes

Fix isochrone bug where the default access mode was used - this rejected edges that should not have been rejected for cases than automobile.

Fix A* handling of edge costs for trivial routes. This fixed an issue with disconnected regions that projected to a single edge.

Fix TripPathBuilder crash if first edge is a transition edge (was occurring with map-matching in rare occasions).

Release Date: 2017-05-15 Valhalla 2.2.3

Add logic to make sure the center location remains fixed at the center of a tile/grid in the isotile.

Add a default generalization factor that is based on the grid size. Users can still override this factor but the default behavior is improved.

Add ExpandForward and ExpandReverse methods as is done in bidirectional A*. This improves handling of transitions between hierarchy levels.

Graph Correlation Improvements

Add options to control both radius and reachability per input location (with defaults) to control correlation of input locations to the graph in such a way as to avoid routing between disconnected regions and favor more likely paths.

Release Date: 2017-05-08 Valhalla 2.2.0

Guidance Improvements

Added Russian (ru-RU) narrative file.

Updated Slovenian (sl-SI) narrative file.

Data Producer Updates

Assign destination sign info on bidirectional ramps.

Update ReclassifyLinks. Use a “link-tree” which is formed from the exit node and terminates at entrance nodes. Exit nodes are sorted by classification so motorway exits are done before trunks, etc. Updated the turn channel logic - now more consistently applies turn channel use.

Updated traffic segment associations to properly work with elevation and lane connectivity information (which is stored after the traffic association).

Release Date: 2017-04-24 Valhalla 2.1.9

Elevation Update

Created a new EdgeElevation structure which includes max upward and downward slope (moved from DirectedEdge) and mean elevation.

Better treatment of destination access only when using bidirectional A*.

Performance Improvement

Improved performance of the path algorithms by making many access methods inline.

Release Date: 2016-11-28 Valhalla 2.0.1

Routing Improvement

Preliminary support for multi-way restrictions

Issues Fixed

Fixed tile incompatiblity between 64 and 32bit architectures

Fixed missing edges within tile edge search indexes

Fixed an issue where transit isochrone was cut off if we took transit that was greater than the max_seconds and other transit lines or buses were then not considered.

Release Date: 2016-11-15 Valhalla 2.0

Tile Redesign

Updated the graph tiles to store edges only on the hierarchy level they belong to. Prior to this, the highways were stored on all levels, they now exist only on the highway hierarchy. Similar changes were made for arterial level roads. This leads to about a 20% reduction in tile size.

The tile redesign required changes to the path generation algorithms. They must now transition freely beteeen levels, even for pedestrian and bicycle routes. To offset the extra transitions, the main algorithms were changed to expand nodes at each level that has directed edges, rather than adding the transition edges to the priority queue/adjacency list. This change helps performance. The hierarchy limits that are used to speed the computation of driving routes by utilizing the highway hierarchy were adjusted to work with the new path algorithms.

Some changes to costing were also required, for example pedestrian and bicycle routes skip shortcut edges.

Many tile data structures were altered to explicitly size different fields and make room for “spare” fields that will allow future growth. In addition, the tile itself has extra “spare” records that can be appended to the end of the tile and referenced from the tile header. This also will allow future growth without breaking backward compatibility.

Guidance Improvement

Refactored trip path to use an enumerated Use for edge and an enumerated NodeType for node

Fixed an issue with pedestrian routes where a short u-turn was taken to avoid the “crossing” penalty.

Fixed bicycle routing due to high penalty to enter an access=destination area. Changed to a smaller, length based factor to try to avoid long regions where access = destination. Added a driveway penalty to avoid taking driveways (which are often marked as access=destination).

Fixed regression where service did not adhere to the list of allowed actions in the Loki configuration

Graph Correlation

External contributions from Navitia have lead to greatly reduced per-location graph correlation. Average correlation time is now less than 1ms down from 4-9ms.

Release Date: 2016-10-17

Guidance Improvement

Added the Hindi (hi-IN) narrative language

Service Additions

Added internal valhalla error codes utility in baldr and modified all services to make use of and return as JSON response

Added the ability to load a tar archive of the routing graph tiles. This improves performance under heavy load and reduces the memory requirement while allowing multiple processes to share cache resources.

Release Date: 2016-09-19

Guidance Improvement

Added pirate narrative language

Routing Improvement

Added the ability to include or exclude stops, routes, and operators in multimodal routing.

Service Improvement

JSONify Error Response

Release Date: 2016-08-30

Pedestrian Routing Improvement

Fixes for trivial pedestrian routes

Release Date: 2016-08-22

Guidance Improvements

Added Spanish narrative

Updated the start and end edge heading calculation to be based on road class and edge use

Bicycle Routing Improvements

Prevent getting off a higher class road for a small detour only to get back onto the road immediately.

Redo the speed penalties and road class factors - they were doubly penalizing many roads with very high values.

Simplify the computation of weighting factor for roads that do not have cycle lanes. Apply speed penalty to slightly reduce favoring
of non-separated bicycle lanes on high speed roads.

Routing Improvements

Remove avoidance of U-turn for pedestrian routes. This improves use with map-matching since pedestrian routes can make U-turns.

Allow U-turns at dead-ends for driving (and bicycling) routes.

Service Additions

Add support for multi-modal isochrones.

Added base code to allow reverse isochrones (path from anywhere to a single destination).

New Sources to Targets

Added a new Matrix Service action that allows you to request any of the 3 types of time-distance matrices by calling 1 action. This action takes a sources and targets parameter instead of the locations parameter. Please see the updated Time-Distance Matrix Service API reference for more details.

Release Date: 2016-08-08

Service additions

Latitude, longitude bounding boxes of the route and each leg have been added to the route results.

Added an initial isochrone capability. This includes methods to create an “isotile” - a 2-D gridded data set with time to reach each lat,lon grid from an origin location. This isoltile is then used to create contours at specified times. Interior contours are optionally removed and the remaining outer contours are generalized and converted to GeoJSON polygons. An initial version supporting multimodal route types has also been added.

Release Date: 2016-06-08

Bug Fix - Fixed a bug where edge indexing created many small tiles where no edges actually intersected. This allowed impossible routes to be considered for path finding instead of rejecting them earlier.

Guidance Improvements

Fixed invalid u-turn direction

Updated to properly call out jughandle routes

Enhanced signless interchange maneuvers to help guide users

Data Producer Updates

Updated the speed assignment for ramp to be a percentage of the original road class speed assignment

Updated stop impact logic for turn channel onto ramp

Release Date: 2016-05-19

Bug Fix - Fixed a bug where routes fail within small, disconnected “islands” due to the threshold logic in prior release. Also better logic for not-thru roads.

Release Date: 2016-05-18

Bidirectional A* Improvements - Fixed an issue where if both origin and destination locations where on not-thru roads that meet at a common node the path ended up taking a long detour. Not all cases were fixed though - next release should fix. Trying to address the termination criteria for when the best connection point of the 2 paths is optimal. Turns out that the initial case where both opposing edges are settled is not guaranteed to be the least cost path. For now we are setting a threshold and extending the search while still tracking best connections. Fixed the opposing edge when a hierarchy transition occurs.

Travel mode based instructions - Updated the start, post ferry, and post transit insructions to be based on the travel mode, for example:

Drive east on Main Street.

Walk northeast on Broadway.

Bike south on the cycleway.

Release Date: 2016-04-12

Guidance Globalization - Added logic to use tagged language files that contain the guidance phrases. The initial versions of en-US, de-DE, and cs-CZ have been deployed.

Updated ferry defaults - Bumped up use_ferry to 0.65 so that we don’t penalize ferries as much.

Release Date: 2016-03-31

Data producer updates - Do not generate shortcuts across a node which is a fork. This caused missing fork maneuvers on longer routes. GetNames update (“Broadway fix”). Fixed an issue with looking up a name in the ref map and not the name map. Also, removed duplicate names. Private = false was unsetting destination only flags for parking aisles.

Release Date: 2016-03-30

TripPathBuilder Bug Fix - Fixed an exception that was being thrown when trying to read directed edges past the end of the list within a tile. This was due to errors in setting walkability and cyclability on upper hierarchies.

Release Date: 2016-03-28

Improved Graph Correlation - Correlating input to the routing graph is carried out via closest first traversal of the graph’s, now indexed, geometry. This results in faster correlation and gaurantees the absolute closest edge is found.

Release Date: 2016-03-16

Guidance language - If the language option is not supplied or is unsupported then the language will be set to the default (en-US). Also, the service will return the language in the trip results.

Update multimodal path algorithm - Applied some fixes to multimodal path algorithm. In particular fixed a bug where the wrong sortcost was added to the adjacency list. Also separated “in-station” transfer costs from transfers between stops.

Release Date: 2016-02-22

Use bidirectional A* for automobile routes - Switch to bidirectional A* for all but bus routes and short routes (where origin and destination are less than 10km apart). This improves performance and has less failure cases for longer routes. Some data import adjustments were made (02-19) to fix some issues encountered with arterial and highway hierarchies. Also only use a maximum of 2 passes for bidirecdtional A* to reduce “long time to fail” cases.

Added verbal multi-cue guidance - This combines verbal instructions when 2 successive maneuvers occur in a short amount of time (e.g., Turn right onto MainStreet. Then Turn left onto 1st Avenue).

Release Date: 2016-02-19

Data producer updates - Reduce stop impact when all edges are links (ramps or turn channels). Update opposing edge logic to reject edges that do no have proper access (forward access == reverse access on opposing edge and vice-versa). Update ReclassifyLinks for cases where a single edge (often a service road) intersects a ramp improperly causing the ramp to reclassified when it should not be. Updated maximum OSM node Id (now exceeds 4000000000). Move lua from conf repository into mjolnir.

Release Date: 2016-02-01

Release Date: 2016-01-26

Added capability to disable narrative production - Added the narrative boolean option to allow users to disable narrative production. Locations, shape, length, and time are still returned. The narrative production is enabled by default. The possible values for the narrative option are: false and true

Added capability to mark a request with an id - The id is returned with the response so a user could match to the corresponding request.

Added some logging enhancements, specifically [ANALYTICS] logging - We want to focus more on what our data is telling us by logging specific stats in Logstash.

Release Date: 2016-01-18

Data producer updates - Data importer configuration (lua) updates to fix a bug where buses were not allowed on restricted lanes. Fixed surface issue (change the default surface to be “compacted” for footways).

Release Date: 2016-01-04

Fixed Wrong Costing Options Applied - Fixed a bug in which a previous requests costing options would be used as defaults for all subsequent requests.

Release Date: 2015-12-18

Fix for bus access - Data importer configuration (lua) updates to fix a bug where bus lanes were turning off access for other modes.

Fix for extra emergency data - Data importer configuration (lua) updates to fix a bug where we were saving hospitals in the data.

Release Date: 2015-11-23

Fixed Open App for OSRM functionality - Added OSRM functionality back to Loki to support Open App.

Release Date: 2015-11-13

Improved narrative for unnamed walkway, cycleway, and mountain bike trail - A generic description will be used for the street name when a walkway, cycleway, or mountain bike trail maneuver is unnamed. For example, a turn right onto a unnamed walkway maneuver will now be: “Turn right onto walkway.”

Release Date: 2015-11-3

Enhance bi-directional A* logic - Updates to bidirectional A* algorithm to fix the route completion logic to handle cases where a long “connection” edge could lead to a sub-optimal path. Add hierarchy and shortcut logic so we can test and use bidirectional A* for driving routes. Fix the destination logic to properly handle oneways as the destination edge. Also fix U-turn detection for reverse search when hierarchy transitions occur.

Data Producer Release Date: 2015-11-2

Updated logic to not create shortcut edges on roundabouts - This fixes some roundabout exit counts.

Release Date: 2015-10-20

Bug Fix for Pedestrian and Bicycle Routes - Fixed a bug with setting the destination in the bi-directional Astar algorithm. Locations that snapped to a dead-end node would have failed the route and caused a timeout while searching for a valid path. Also fixed the elapsed time computation on the reverse path of bi-directional algorithm.

Release Date: 2015-10-16

Through Location Types - Improved support for locations with type = “through”. Routes now combine paths that meet at each through location to create a single “leg” between locations with type = “break”. Paths that continue at a through location will not create a U-turn unless the path enters a “dead-end” region (neighborhood with no outbound access).

Update shortcut edge logic - Now skips long shortcut edges when close to the destination. This can lead to missing the proper connection if the shortcut is too long. Fixes #245 (thor).

Per mode service limits - Update configuration to allow setting different maximum number of locations and distance per mode.

Fix shape index for trivial path - Fix a bug where when building the the trip path for a “trivial” route (includes just one edge) where the shape index exceeded that size of the shape.

Release Date: 2015-09-28

Elevation Influenced Bicycle Routing - Enabled elevation influenced bicycle routing. A “use-hills” option was added to the bicycle costing profile that can tune routes to avoid hills based on grade and amount of elevation change.

“Loop Edge” Fix - Fixed a bug with edges that form a loop. Split them into 2 edges during data import.

Additional information returned from ‘locate’ method - Added information that can be useful when debugging routes and data. Adds information about nodes and edges at a location.