Skip to content
This repository has been archived by the owner on Jul 6, 2022. It is now read-only.

Latest commit

 

History

History
26 lines (19 loc) · 1.78 KB

turn-restrictions.md

File metadata and controls

26 lines (19 loc) · 1.78 KB

How to work with Turn Restrictions

GraphHopper supports turn restrictions. Turn restrictions are crucial for correct vehicle navigation and help to avoid forbidden turns.

Without turn restrictions (the turn is not allowed):

turn without turn restrictions

With turn restrictions:

turn with turn restrictions

Turn restrictions have to be enabled on a vehicle basis. To enable it for one vehicle add |turn_costs=true in the config, for example: graph.flag_encoders=car|turn_costs=true. Turn restrictions are not available for every vehicle as they have low relevance for some vehicles like foot. To enable turn restrictions when using the 'speed mode' additional graph preparation is required, because turn restrictions require edge-based (vs. node-based) traversal of the graph. First you have to set the weightings for which the graph preparation should be run using e.g. prepare.ch.weightings=fastest, just like when you use the 'speed mode' without turn restrictions. Additionally you need to set prepare.ch.turn_costs to edge_or_node or edge_and_node (see config-example.yml for further details). At request time you need to add edge_based=true as URL parameter to enable turn restricted routing and to disable the 'speed mode' per request you can add ch.disable=true.

While OSM data only contains turn restrictions, the GraphHopper routing engine can also deal with turn costs, i.e. you can specify custom turn costs for each turn at each junction.