Relation:restriction
![]() |
Description |
---|
Used for a set of tags and members to represent a turn restriction. ![]() |
Group: Restrictions |
Members |
|
Wikidata |
Search Wikidata |
Status: de facto |
|
Tools for this tag |
|
A turn restriction at a junction is represented by a relation that has a set of tags describing the type of turn restriction. This turn restriction relation is not limited to turns, but can also be used for instance if you are only allowed to go straight on. A bus gate is another example of a use of the turn restriction relation as an alternative to barrier=bus_trap. At the junction passage from one side to the other is restricted (except for buses of course).
There are a number of important things that need to be taken into account when creating a turn restriction.
- There may be several turn restrictions at a junction, represented by separate relations.
- There is no need to restrict turning into the wrong way of a one way street. This is taken for granted.
- Turn restrictions do not apply to pedestrian unless the type or key is restriction:foot.
- Don't map turn restrictions that are the default for a given jurisdiction and are not signed. It is much better to ensure that routing engines embody the regional rule rather than mapping every occurrence as a turn restriction. This applies particularly to unsigned U-turns in Brazil, where using turn restrictions will require hundreds or thousands of restrictions and micro-segmentation of all roads which in turn make editing data hard.
Contents
Tags
![]() |
Todo: Both conditional restrictions and day_on /day_off /hour_on /hour_off are currently in use. Should one be preferred over another, or both be allowed to co-exist? Clarify at tagging mailing list |
Key | Value | Explanation | ||
---|---|---|---|---|
type | restriction | Relation type for restriction relations. | ||
restriction | no_right_turn / no_left_turn / no_u_turn / no_straight_on / only_right_turn / only_left_turn / only_straight_on / no_entry / no_exit |
If the first word is "no_", then no routing is possible from the "from" to the "to" member. If it is "only_", then you know that the only routing originating from the "from" member leads to the "to" member. This distinction is also shown in the examples section of this page. | ||
restriction:hgv, restriction:caravan, restriction:motorcar, restriction:bus, restriction:agricultural, restriction:motorcycle, restriction:bicycle, restriction:hazmat | no_right_turn / no_left_turn / no_u_turn / no_straight_on / only_right_turn / only_left_turn / only_straight_on / no_entry / no_exit | Restriction refers only to appropriate type of vehicle. (you can use type=restriction:<type> + restriction= or type=restriction + restriction:<type>=[1]) | ||
except | psv / bicycle / hgv / motorcar / emergency | The restriction does not apply to these vehicle types (more than one: except=bicycle;psv) | ||
| ||||
restriction[:<transportation mode>]:conditional | <restriction-value> @ <condition>[;<restriction-value> @ <condition> ...] | Restriction that only exists under certain conditions, such as time. The restriction value is one of the ones listed above, e.g. no_right_turn. Multiple values (along with their condition) can be separated by semicolons. See conditional restrictions for details. | ||
| ||||
type | restriction:hgv / restriction:caravan / restriction:motorcar / restriction:bus / restriction:agricultural / restriction:bicycle / restriction:hazmat | Restriction refers only to appropriate type of vehicles, replaces the type=restriction tag. (you can use type=restriction:<type> + restriction= or type=restriction + restriction:<type>=[1]) | ||
day_on | day of week | for example, no right turn in the morning peak on weekdays might be day_on=Monday;day_off=Friday;hour_on=07:30;hour_off=09:30 | ||
day_off | day of week | |||
hour_on | time of day | |||
hour_off | time of day |
Members
Way or node | Role | Recurrence | Discussion |
---|---|---|---|
![]() |
from | 1 1 or more |
A way from which restriction starts (e.g., no right turn from here).[2] A no_entry restriction can have one or more from ![]() ![]() |
![]() |
to | 1 1 or more |
The other end of the restriction.[2] A no_exit restriction can have one or more to ![]() ![]() |
![]() ![]() |
via | 1 node 1 or more way(s) |
The via member(s) connect the beginning and end ways representing the allowed or restricted maneuver.
As shown to the left, a turn restriction can either have one The |
![]() |
Turn Restriction with a single node as the via member. |
Turn Restriction with multiple ways as via members. |
Road signs
The sign number in the US MUTCD is given in parentheses. There are slight differences of these roadsigns from country to country. Images of turn-signs all around the world can be found on Wikimedia Commons
Note: The symbols for restrictions displayed in editors are not authoritative; tagging must not rely on them. E.g., a no_right_turn in JOSM displays either symbol 2a (straight ahead and left) even if there is no left turn. The relation members and restriction value are the important part.
Sign | Restriction | Remark | Sign | Restriction | Remark | ||
---|---|---|---|---|---|---|---|
1a | ![]() |
restriction=no_left_turn | Germany, Italy, Japan, The Netherlands, Russia, Ukraine, Romania (restricts U-turn as well) | 1b | ![]() |
restriction=no_left_turn | Australia, Brazil, France, Ireland, Philippines, Poland, Russia, Spain, Switzerland, UK, Ukraine, US (R3-2; R3-18 combined with no U-turn) |
2a | ![]() |
restriction=no_right_turn | Germany, Italy, Japan, The Netherlands, Russia, Ukraine, Romania | 2b | ![]() |
restriction=no_right_turn | Australia, Brazil, France, Ireland, Spain, Philippines, Poland, Russia, Switzerland, UK, Ukraine, US (R3-1) |
3a | ![]() |
restriction=no_straight_on | Germany, Israel, Japan, The Netherlands[4], Poland, Russia, Switzerland, Ukraine | 3b | ![]() |
restriction=no_straight_on | Brazil, US (UK and France never use such signs; you would usually be facing a no entry sign in such a situation, or if it's two-way ahead you might see adjacent left-turn-only and right-turn-only signs). Formerly used in Ireland. |
4a | ![]() |
restriction=no_u_turn | Brazil, France, Germany, Israel, Japan, The Netherlands, Philippines, Poland, Spain, Switzerland, Russia, Ukraine, US (R3-4) | 4b | ![]() |
restriction=no_u_turn | Australia, UK |
5a | ![]() |
restriction=only_right_turn | Typically on the approach to a junction.
In the US, a white rectangular sign is used for this situation and the case where one lane on a multi-lane road must turn (R3-5R). In the Philippines, it is mainly used before a junction or sometimes in a junction, either on a standalone blue circular sign with a white arrow or a blue circular sign on a white rectangle with text, usually "ALL TRAFFIC". Ukraine (just before a junction). |
5b | ![]() |
restriction=only_right_turn | Typically at the junction.
In the US, a white rectangular sign is used for this situation and the case where one lane on a multi-lane road must turn (R3-5R). In the Philippines, it is mainly used on a junction with a one-way road, either on a standalone blue circular sign with a white arrow or a blue circular sign on a white rectangle with the text "ONE WAY". |
6a | ![]() |
restriction=only_left_turn[5] | Typically on the approach to a junction.
In the US, a white rectangular sign is used for this situation and the case where one lane on a multi-lane road must turn (R3-5L). Ukraine (just before a junction). |
6b | ![]() |
restriction=only_left_turn | Typically at the junction.
In the US, a white rectangular sign is used for this situation and the case where one lane on a multi-lane road must turn (R3-5L). |
7 | ![]() |
restriction=only_straight_on | Used in Russia, in Ukraine and in the UK; usually seen just before a junction or on the approach to a junction.
In the US you'll see the text "NO TURNS" in a white square (R3-3; R3-5a is usually used only in the case where one lane on a multi-lane road must turn). | ||||
8 | ![]() |
restriction=no_entry | Used for not one-way roads, where entering across some point (member node with role via) is prohibited. Relation can have several from members[2] and one to member.
In Ukraine is used for opposite-direction one-way road entries, and for roads that even residents are not allowed to drive. |
9 | ![]() |
restriction=no_exit | Used for not one-way roads, where exiting across some point (member node with role via) is prohibited. Relation can have one from member and several to members.[2] |
Obviously, the above table can't be complete; e.g., Swedish road signs use a yellow background instead of the white one. However, with the above signs it should be easy to find the corresponding restriction=xy value for most countries.
In Brazil all signs in this category (no_turn or only_turn) are red circular signs with an arrow pointing in the corresponding direction. only_turn signs do not have the diagonal bar, while no_turn signs do (similar to 1-3b, but also for 5-7).
Examples
There is a clear distinction between two types of turn restrictions. There is the mandatory restriction type and there is the prohibitory restriction type. Different ways will have to be selected for each of these restriction types.
Mandatory restriction
This restriction type sets the way where one is only allowed to go to. Going to other ways from the via point is forbidden with this relation. The turn restriction relation is tagged with the following two tags:
- way a has role 'from'
- way b has role 'to'
- node N has role 'via'
Prohibitory restriction
For the prohibitory restriction type the way where one is not allowed to go to is set. The restriction relation can be tagged with the following tags:
- way a has role 'from'
- way b has role 'to'
- node N has role 'via'
Turning to other directions is not forbidden with this restriction. If there are other restrictions at the crossing, these will have to be defined separately.
The via point of the turn restriction doesn't have to be a node, it can also be a via way. This is the case for the example on the right. This turn restriction is set with the following tags:
- way a has role 'from'
- way b has role 'via'
- way c has role 'to'
Editors
To create a turn restriction different editors can be used. Some do not support all functionality explained above, natively!
iD
The OpenStreetMap web editor iD has (almost) complete in-editor turn restriction support.
- For turn restrictions whose 'via' member is a node or a way: Native editor support exists. These can be added by selecting the node of the intersection where you want the turn restriction. Then select the way entering the turn and toggle between restricted and unrestricted turns by clicking the red or green icons (iD includes a built-in help for further instructions on how to do this).
JOSM
JOSM has partial in-editor Restriction support, with the use of a plugin.
- The Turnrestrictions plugin can be downloaded to create and edit turn restrictions which have a node as its 'via' member.
- Node as 'via' restrictions, or those with a way as the 'via' member, can also be added by manually creating a new relation.
See JOSM Relations and Turn Based Restrictions for further information.
Potlatch 2
Potlatch 2 has partial in-editor Restriction support. Restrictions which require a node as its 'via' member can be edited natively, as shown in the wiki article Potlatch 2/restrictions. Those with a way as the 'via' member must be manually edited using Potlatch 2's relation editing functions.
Vespucci
Vespucci, the OSM Android editor, supports editing of Restriction relations including interactive turn restriction function.
Vespucci supports creation of and editing of Restriction relations (both node-as-'via' and way-as-'via' types). Once a Restriction relation exists and is selected, its members (or tags on the relation) are edited via dropdowns.
Errors
Missing turn restrictions or errors in turn restrictions can be reported by different error reporting tools. To check if turn restrictions are properly applied, a routing test can be performed using different routing engines such as OSRM.
There are several data sources that can be used to find missing turn restrictions or errors in turn restrictions:
- Mapillary has the possibility to show traffic signs on a map that have been recognized in crowdsourced street view photos.
- The ScoutSigns JOSM plugin can show recognized traffic signs as a layer in JOSM. The data originates from the camera mode feature in the GPS Navigation & Maps App.
- The ImproveOsm plugin has a Turn Restriction layer that points at probably missing turn restrictions.
Tools
- Relation Check A tool to generate a graphical display of relations, including restrictions, from a local .osm file
- OSM Restriction Validator Shows unnecessary restrictions and restrictions that block access to streets
- keepright checks 8 different types of turn restriction errors, worldwide.
- OSM Navigation Map helps to explore restriction signs detected from Mapillary and map them
See also
- Jughandle
- Michigan Lefts
- Barriers
- Routing
- See Lanes if you are mapping complex intersections
- Different tagging (not ways but nodes for from and to) used at enforcement
References
- ↑ 1.0 1.1 The restriction:hgv=only_straight_on style matches the approved Conditional restrictions syntax. But because of an unresolved bug in some widely used software, it can lead to incorrect routing - restriction:hgv=only_straight_on is treated as if the relation was tagged restriction=no_*. As a result, some mappers use type=restriction:hgv + restriction=only_straight_on as a workaround.
- ↑ 2.0 2.1 2.2 2.3 The "from" and "to" members must start/end at the via node or the via way(s), otherwise split it!
- ↑ Notice: Processing of turn restrictions which contain one or more
way(s) in the via role is more complicated than if a single
node is used for the via role. As a result some routing software works only with turn restrictions that contain a single
node in the via role. This should be fixed by the software, however if you have a straight choice whilst tagging the restriction, please consider using just a single
node within the via role.
- ↑ RVV 1990, sign D7
- ↑ If tag restriction=only_left_turn wrongly prohibits u-turn in such crossing, where u-turn is allowed, we should use relations restriction=no_straight_on and restriction=no_right_turn instead.
|