Relation:manoeuvre
manoeuvre |
Description |
---|
overrides the router's classification of a given manoeuvre |
Group: routing |
Members |
Requires |
Useful combination |
See also |
|
Status: in use |
Tools for this tag |
|
A manoeuvre (maneuver) relation overrides a router's classification of a particular manoeuvre at a junction. It is a last-resort hint for when a router cannot reasonably infer the correct turn instruction at a complex junction based on common heuristics like the turn angle or number of connecting ways.
Usage
Despite this relation type, tagging that caters to the idiosyncracies of a particular router is discouraged. Manoeuvre relations can be seen as less harmful than contorting the road geometry or adding fake streets, which can be detrimental to accurate rendering. [1][2] Before resorting to a manoeuvre relation, check whether routers produce the correct guidance instruction for the manoeuvre. If one router produces suboptimal guidance while the others produce acceptable guidance, it may be a bug in that one router – be sure to report the issue to the router's developers.
How to map
Members
The members of the manoeuvre relation describe where you want to modify a routing instruction. As with a turn restriction relation, the relation's members should include the ways that approach and lead away from the junction, along with the node at which the manoeuvre is performed. 'Via ways' are also supported, but unlike turn restrictions, you must still include a 'via node' to indicate the position where the override applies.
Role | Element | Occurrence | Explanation |
---|---|---|---|
from | way | ! 1 | The way where the route is coming from. |
via | way | ? 0+ | Any number of ways in the route between the 'from' way and the 'to' way, if any. |
to | way | ! 1 | The way where the route is going to. |
via | node | ! 1 | The node between the 'from' way and the 'to' way where the routing instruction is to be overridden. |
Tags
The tags of the manoeuvre relation indicate what the routing instruction will be:
Key | Value | Explanation |
---|---|---|
type | The relation type. | |
manoeuvre | continue | Instruct the driver to continue following the road in a direction. The direction in which to continue is indicated by direction=*. |
turn | Instruct the driver to go straight or make a turn (other than a u-turn). The turn to make is indicated by direction=* or going straight is indicated by direction=straight. | |
uturn | Instruct the driver to make a u-turn. | |
fork | Instruct the driver to keep a side at a fork/diverge. The side to keep is indicated by direction=*. | |
suppress | Do not give any instruction to the driver. | |
direction | sharp_left | The direction to include in the instruction to the driver (if relevant for the manoeuvre=*). |
left | ||
slight_left | ||
straight | ||
slight_right | ||
right | ||
sharp_right |
Note that the possible directions differ from valid turn=* values: uturn
instead of reverse
, straight
instead of through
.
Examples
The OSRM repository contains several examples of how manoeuvres need to be mapped and how they change the generated routing instructions: https://github.com/Project-OSRM/osrm-backend/blob/master/features/guidance/maneuver-tag.feature
Software support
This relation type is intended as an override of routing engine behaviour. OSRM 5.16.0 added support for type=maneuver relations, using the American spelling. [3] OSRM 5.17.0 added support for the type=manoeuvre and type=maneuvre spellings, the former of which is now preferred by OSRM. [4] In the future, more support for turn=* in OSRM may make some manoeuvre relations unnecessary. [5]
There is no preset for manoeuvre relations in iD, but you can create a turn restriction relation using the mini-editor, then replace type=restriction restriction=* with type=manoeuvre manoeuvre=* direction=*.
Tagging errors
The British spelling manoeuvre=* is preferred, but OSRM also supports the American spelling maneuver=* and a common misspelling, maneuvre=*:
See also
- not:=* another tool for overriding software behaviour
- turn=*
- junction=*
- Relation:connectivity
External links
- Manoeuvre override tag – full details, illustrations, and rationale at the OSRM wiki
- Turn instruction override – an analogous concept used by Waze mappers