Proposal:Extended traffic signs tagging
Extended traffic signs tagging | |
---|---|
Proposal status: | Draft (under way) |
Proposed by: | yopaseopor |
Tagging: | traffic_sign=* traffic_sign:id=* |
Applies to: | |
Definition: | An extended and advanced scheme to tag all kind of traffic signs |
Draft started: | 2017-02-05 |
RFC start: | 2024-02-17 |
Rationale
Traffic signs are one of the most important kind of elements you can find... in the "road world". They are extended all over the world and there are so many kinds of them. But it was a minor tag in OSM (few elements, few tags related, few values...until now). It is important to structure a complete scheme which answers all the meanings of a traffic sign, not only the meaning for the road but also the element itself.
Present:Different approaches
By key
Highway.The classics
In 2006 we can find the first traffic sign tag, stop, with its main key, highway. From then there's an approximation with nodes with the same key: highway=give_way, highway=traffic_signals, and highway=stop.
Value | Element | Sign | Comment | Additional tags on the way |
---|---|---|---|---|
highway=stop | Stop sign. Usually tagged as highway=stop instead. Text of the wiki has changed so the proposal is based on this version | highway=stop (on a node) | ||
highway=give_way | Give way sign. Usually tagged as highway=give_way instead. | highway=give_way (on a node) | ||
highway=traffic_signals | Traffic signal. | highway=traffic_signals (on a node) |
Human-readable values
Tags | Element | Sign | Comment | Tags for affected highways | |
---|---|---|---|---|---|
traffic_sign=city_limit +
name=* (name of city/village) |
City/village sign. By default it is assumed there is an end of city/village sign on the back for drivers in the opposite direction; add city_limit=begin if this is not the case. | source:maxspeed=DE:urban if not overridden by other speed limit source (or with other appropriate country code)
zone:traffic=DE:urban | |||
traffic_sign=city_limit +
name=* (name of city/village) |
End of city/village sign. | source:maxspeed=DE:rural if not overridden by other speed limit source (or with other appropriate country code) | |||
traffic_sign=maxspeed +
maxspeed=* (the speed limit) |
Maximum speed sign. Like all traffic signs these should be tagged as a node. Usually not part of the highway, so the direction can be inferred. | maxspeed=* + source:maxspeed=sign | |||
traffic_sign=maxspeed + | End of maximum speed sign. | ||||
traffic_sign=stop | Stop sign. Usually tagged implicitly on a node of the highway with highway=stop instead. Text of the wiki has changed so the proposal is based on this version | highway=stop (on a node) | |||
traffic_sign=give_way | Give way sign. Equivalent to the United States yield sign. Usually just highway=give_way is tagged instead. | highway=give_way (on a node) | |||
traffic_sign=variable_message | Electronic Variable Message Sign, also known as Dynamic Message Signs. Remotely programmed to give traffic information such as expected travel times to destinations, temporary speed limits, incident warnings etc. Usually combined with man_made=gantry. (Example photo) | ||||
traffic_sign=overtaking + | No overtaking sign. | overtaking=no | |||
traffic_sign=overtaking + | End of no overtaking sign. | ||||
traffic_sign=maxwidth | Maximum width sign. | maxwidth=* | |||
traffic_sign=maxheight | Maximum height sign. | maxheight=* | |||
traffic_sign=maxweight | Maximum weight sign. | maxweight=* | |||
traffic_sign=stop_ahead | Stop ahead sign. Can be a standard yield sign plus additional plate containing STOP and distance (as in most of Europe) or a red triangle or yellow diamond with an image of a stop sign elsewhere. | ||||
traffic_sign=yield_ahead | Yield/give way ahead sign. Can be a standard yield sign plus additional plate with distance (as in most of Europe) or a red triangle or yellow diamond with an image of a yield/give way sign elsewhere. | ||||
traffic_sign=signal_ahead | Signal ahead sign. | ||||
traffic_sign=hazard | A hazard to motorists. | Combined with hazard=* to indicate the type of hazard. |
Traffic signs by national ID
Signs specific to a particular country should be mapped by the country/region prefix followed by a colon and then the traffic sign.
- The country/region prefix should be the ISO 3166-1 alpha-2 country code or ISO 3166-2 country subdivision code (always uppercase). This prefix is separated by a colon
:
from the sign. Additional colons can be included within the prefix to create a hierarchy of further custom subdivisions. - Traffic signs should be represented by their official ID (if such IDs are assigned).
- Multiple unrelated signs should be separated with a semicolon
;
. If traffic signs are related, the additional sign IDs should be separated from the main sign by comma,
. - Where the traffic sign requires a numeric or textual value, you can supply it after the ID using brackets
[value]
. This can be repeated for signs that require multiple parameters. For numeric parameters, use a dot.
as decimal separator and a minus-
for negative values (if needed). - In case of multiple signs separated by commas or semicolons, the prefix should appear only once at the beginning (except if signs from different prefixes are combined).
Examples
traffic_sign=GB:956 | |
traffic_sign=GB:616,954 | |
traffic_sign=GB:523.1[-10] | |
traffic_sign=BE:F4a | |
traffic_sign=DE:260,1020-30;265[3.8] | |
traffic_sign=US:CA:SW-59 | |
traffic_sign=NL:H01d[Merum][Maerem][Roermond];A0150 |
Here it is a table with most of them Key:traffic sign#Lists of IDs per country
By way of mapping them
Also there are three ways of mapping them: as a separated node, as part of way or on a way. Numbers says except highway=stop and highway=give_way there are three methods of mapping. Each of them has its own numbers (more or less 50% - 50%) so there is not a majority method of doing that.
On a way or area
When tagged on a way or an area, the traffic_sign=* tag describes the traffic sign(s) that apply to that way or area. The tag is not meant to mark the actual position of the sign in this case, but the affected way or area instead. It should however be assumed that the physical location of the sign is at the beginning and / or the end of the affected section (but note that the affected section may be comprised of multiple ways within OSM). It would be difficult to know where is the traffic sign itself.
Separated node
Create a separate node beside the road at the position of the actual sign. This allows to map the exact physical position of the sign, but it is impossible to reliably deduce the affected road or travel direction in this case. Software algorithms which operate on ways will thus generally not be able to consider the traffic sign, but only the tags of the way instead. Probably you will need a relation to unite the way with the node like highway=speed_camera and the relations of enforcement.
You can use the direction=* tag to describe the facing orientation of the sign by using an angle or cardinal direction.
Note that the sign is facing against the direction of travel. So if you encounter a traffic sign when traveling north, then the sign is facing south. So you can add direction=180 or direction=S. Likewise, when traveling west, signs are facing east, so you tag them with direction=90 or direction=E.
Node in a way
As a part of the way you can use the direction=* with the values direction=forward, direction=backward, direction=90 direction=270 , to show the direction the same it is the way inside in. It is easy for renders to assume being part of the way traffic signs affect that way but it is difficult to assume the exact position of the traffic sign.
Conclusion: node in a way
There are two different keys and three ways of mapping traffic signs. It is complicated for a newbie mapper to know how to map the possible different values and their order. Every code has its place. And mapping direction is not easier, when you have a node alone you need to put the facing direction or the cardinal direction. This proposal is about node in a way because it is the method you can have better information with extended mapping with less complexity. It is true that when you have the node in a way you have to put forward or backward relative to the way it is. But others alone would need a relation with the way they are near to work entirely with all the information like speed camera (if you want the direction relative it is), and mapping properties in a way it is not to map "A clearly visible object, generally flat, bearing a short message in words or pictures".
Aim of this proposal
The aim of this new scheme for traffic_signs is to unite the different approaches for mapping traffic sign as it is. It uses the most complete parts of the existing schemes. It uses the "categories" you can find in traffic signs law from Europe or US, like hazard with a node per traffic sign and with a human readable value,using existing OSM tags to his when possible and marking the position with a numbered subtag :2 or :3...This avoid misinterpretation errors from the tags and also the multi-value problems. Also permits the correspondence between some tags each other. And to be more specific you can use the tag traffic_sign:id=* to specify the code of this traffic sign per country if you know the value. It uses the traffic ID national code you can find in the traffic sign law of each country to mark which traffic sign is and also gives the entire importance as states do in their laws (we know it because when you ask a government e.g. Spanish government, for the database of traffic signs in their roads each traffic sign has a unique ID with its position and code.) There are so convenience to not fit more than three traffic signs at the same pole to make easier the readability for human eye at the reality. This proposal does not deprecate any method but establishes a scheme how you can map a traffic sign in a more specific mapping method.
This proposal establishes:
- traffic_sign:id for the specific picture with the national id of the traffic_sign
- traffic_sign for categories
- categories for human-readable values , with a scalable scheme (not which categories and which human-readable values)
- direction
- side
- position
-Other existing things will not change (the tagging of highway=stop and highway=give_way is so massive and so controversial than it does not fit in this proposal).
How it works. How to map
The mapping method is a node part of the way using human-readable values (more of them used in OSM), the possibility of specify the national id for every traffic sign (to get the exact picture) , and explaining its direction and side relative to the way. Also it mention its position if there is more than one together.
- First you say the type of the traffic sign with human-readable categories and values. Here it is some examples of approximation of readable values and "subkeys" applied to the traffic_sign key (in this proposal we NOT propose any value or category, all of them will be proposed in others proposals, here I'm only propose the way of mapping traffic signs). : Warning (Hazard in OSM),Regulatory (new)(all the maxspeed,maxwidth,maxheight,maxweight,maxaxleload,overtaking...),Information (new) (includes city_limit traffic_signs) ,Complementary (new)or Others. Stop and give_way uses highway (existing) key until community decide to unify all the traffic signs with one key (no changes for present situation, I mean).
- Then you apply the subkey for this type (as hazard).
- Do you know the id of the traffic sign in its country? Use traffic_sign:id=* (new). The country/region prefix should be the ISO 3166-1 alpha-2 country code or ISO 3166-2 country subdivision code (always uppercase). This prefix is separated by a colon
:
from the sign. Additional colons can be included within the prefix to create a hierarchy of further custom subdivisions. Then it should be represented by their official ID (if such IDs are assigned).
Position
When there is a second traffic sign you use the subtag 2: to traffic_sign=* tag and/or traffic_sign:id=* so on
(e.g. traffic_sign:2=maxspeed and/or traffic_sign:2:id=DE:206).
Direction
The mapping method is a node , mainly part of the way, using the values explaining its direction relative to the way. Here there are the possible directions.
Tag=value | Comment |
---|---|
direction=forward | Forward to the way. It is relative to the orientation you draw a way, as rivers |
direction=backward | Backward to the way. It is relative to the orientation you draw a way, as rivers |
direction=90 (clockwise) | 90º to the way. It is relative to the orientation you draw a way, as rivers |
direction=270 (clockwise) | 270º to the way. It is relative to the orientation you draw a way, as rivers |
direction=* (clockwise) | other directions relative to the way |
Side
It is completed with a tag side that marks the side of the way traffic sign is in if you use the direction you say it before.
Tag=value | Comment |
---|---|
side=right | the right side of the way . It is relative to the orientation you draw a way, as rivers |
side=left | the left side of the way. |
side=both | the left and right sides at the same time. |
side=up | all elevated traffic signs or traffic panels. |
side=down | all traffic road marks. |
Final example
Here we have a final example. Let's remember the steps:
- 1- type of the traffic sign: Warning (Hazard in OSM),Regulatory (new)(all the maxspeed,maxwidth,maxheight,maxweight,maxaxleload,overtaking...),Information (new) (includes city_limit traffic_signs) ,Complementary (new)or Others. Stop and give_way uses highway (existing) key until community decide to unify all the traffic signs with one key (no changes for present situation, I mean).
- 2-Apply the subkey for this type (as hazard).
- 2B-If you know the national id for this traffic sign use traffic_sign:id=* (new)
- 3-Direction relative to the way: direction=forward, direction=backward, direction=90 direction=270 .
- 4-Side of the way the sign is located.
- 4B If there is a second traffic sign you might use the subtag 2: to traffic_sign tag and traffic_sign:id or whatever can exist conflict
e.g. :
See also
Examples of possible traffic signs human readable values
If this proposal is accepted, then there will be other specific proposals about the specific human-readable values and its categories (following national traffic laws and most OSM used values)
Tag=value | Comment |
---|---|
highway=traffic_signals | Traffic signal. |
highway=stop | Stop sign. Usually tagged implicitly on a node of the highway with highway=stop to unify all the human readable values for this. Left as present situation. This proposal does not touch this value. Text of the wiki has changed so the proposal is based on this version |
highway=give_way | Give way sign. Usually tagged as highway=give_way to unify all the human readable values for this. Left as present situation. This proposal does not touch this value. |
traffic_sign=hazard | A hazard is a potential source of damage to health, life, property, or any other interest of value (see Hazard). Hazards include natural features of the environment as well as those of human origin. |
traffic_sign=maxspeed
traffic_sign=maxspeed:advisory traffic_sign=implicit (new) traffic_sign=access (new) traffic_sign=regulatory(new) traffic_sign=restriction(new) traffic_sign=mandatory (new) |
These signs marks the regulation. They can be prohibitive, mainly give a positive (mandatory) instruction ,mainly give a positive advisory instruction, can mark the end of that prohibition. And also here you have all the restrictions of max* or min*. |
traffic_sign=information (new)
traffic_sign=lanes (new) traffic_sign=services (new) |
Here you have all the signs you can find about information instructions. |
traffic_sign=complementary(new) | These are all the signs that accompany all the other traffic signs to clarify or adjust the meaning or the situation that applies the main traffic sign. |
traffic_sign=destination (new)
traffic_sign=ref_id (new) traffic_sign=boundary(new) |
All the traffic signs about orientation, destination and confirmation. Not only the plate itself. |
traffic_sign=* | All common values according to taginfo. |
When there is a second traffic sign you use the subtag 2: to traffic_sign tag and so on (e.g. traffic_sign:2=maxspeed and/or traffic_sign:2:id=DE:206 (new)).
One category exists. A good start. Traffic_sign=hazard
Due to the approval of hazard in 2020 there were born the first category for traffic signs as it. Hazard (the initial version of this proposal was talking about warning traffic signs.As you can see in this table all Vienna convention and MUTCD has similar items to specify these situations. It is interesting to use existent tagging in OSM so probably would not have any big change rather than some new proposals of human readable values.
In this other table you will see image of the two main styles of pictures Worldwide accepted: Vienna convention and MUTCD. They can change a little by countries but they are similar. Then you have the national id for some traffic signs as an example.
Key | Human readable value | Usage count | Element | Description | traffic_sign:id
Vienna |
traffic_sign:id
MUTCD |
---|---|---|---|---|---|---|
hazard | damaged_road | A section of damaged road where it is recommended to reduce speed |
ES:P15 DE:112 |
CO:SP-24 | ||
hazard | traffic_signals | A section of road approaching near traffic lights where it is recommended to reduce speed |
ES:P3 DE:131 |
US:W3-3 CO:SP-23 | ||
hazard | animal_crossing | A place where animals are known to appear unexpectedly, presenting a collision hazard to motorists. |
ES:P24 DE:142-20 |
US:W11-3 (deer) US:W11-4 (cows) US:W11-16 (bears) US:W11-17 (sheep) US:W11-18 (bighorn sheep) US:W11-19 (donkeys) US:W11-20 (elk) US:W11-21 (moose) US:W11-22 (wild horses) | ||
hazard | bump | A bump in the road which may be hazardous to motorists. |
ES:P15a |
US:W8-1 CO:SP-25A | ||
hazard | crossroad | Crossing of two roads. |
ES:P2 DE:102 |
traffic_sign:id=US:R1-1 traffic_sign:2:id=US:W4-4P traffic_sign=US:R1-2 traffic_sign:2:id=US:W4-4P US:W2-11 CO:SP-11 | ||
hazard | children | A place where children are known to play in the roadway, presenting a collision hazard to children and motorists. |
ES:P21 DE:136-10 |
| ||
hazard | cyclist | An area where cyclists share a roadway with motor vehicles |
ES:P22 DE:138-10 |
traffic_sign:id=US:W11-1 traffic_sign:2:id=US:W16-1P traffic_sign:id=US:W11-1 traffic_sign:2:id=W16-1aP CO:SP-59 | ||
hazard | dangerous_junction | A junction or intersection that has a high rate of traffic collisions. |
US:W1-7 US:W1-10L US:W1-10R US:W1-10aL US:W1-10aR US:W1-10bL US:W1-10bR US:W1-10cL US:W1-10cR US:W1-10dL US:W1-10dR US:W1-10eL US:W1-10eR US:W2-1 US:W2-2L US:W2-2R US:W2-3L US:W2-3R US:W2-3aL US:W2-3aR US:W2-4 US:W2-5 US:W2-7L US:W2-7R US:W2-8L US:W2-8R US:W10-2L US:W10-2R US:W10-3L US:W10-3R US:W10-4L US:W10-4R | |||
hazard | dip | A dip in the road which may be hazardous to motorists. |
ES:P15b |
US:W8-2 CO:SP-26 | ||
hazard | emergency_vehicles | A section of road approaching near a intersection with road for emergency vehicles where it is recommended to reduce speed. |
US:W11-8 CO:SP-72 | |||
hazard | falling_rocks | An area in which rocks, dirt, or other natural materials may fall unexpectedly from cliffs above, or may have fallen, presenting a hazard. |
ES:P26 DE:101-25 |
US:W8-14 CO:SP-42 | ||
hazard | fog | An area where fog tends to form more frequently than surrounding areas. |
ES:P33 |
US:W8-22 | ||
hazard | frail_pedestrians | A place where frail or disabled pedestrians are likely to cross a road |
ES:P21b |
US:W11-9 | ||
hazard | frost_heave | An area where the road is known to bulge because of ice underneath the roadway. | ||||
hazard | ground_clearance | A place (usually a hill or incline) where vehicles with long wheelbases risk being grounded. |
US:W10-5 traffic_sign:id=US:W10-5 traffic_sign:2:id=US:W10-5P | |||
hazard | horse_riders | An area where horse riders share a roadway with motor vehicles. |
DE:101-13 |
traffic_sign:id=US:W11-7 traffic_sign:2:id=US:W16-1P traffic_sign:id=US:W11-7 traffic_sign:2:id=US:W16-1aP | ||
hazard | ice | An area where ice tends to form more frequently than surrounding areas. |
ES:P34 DE:101-51 |
traffic_sign:id=US:W8-5 traffic_sign:2:id=US:W8-5aP US:W8-13 (on bridges only) | ||
hazard | landslide | An area where landslides, mudslides or rockslides are known to occur. |
ES:P26 DE:101-15 |
US:W8-14 CO:SP-42 | ||
hazard | loose_gravel | An area along the road where rocks and stones may be present, presenting a hazard to motorists. |
ES:P28 DE:101-52 |
US:W8-7 CO:SP-71 | ||
hazard | low_flying_aircraft | An area where low flying aircraft are known to appear. |
ES:P12 DE:101-20 |
|||
hazard | pedestrians | An area where pedestrians share a roadway with motor vehicles |
ES:P20 DE:133-10 |
traffic_sign:id=US:W11-2 traffic_sign:2:id=W16-1P traffic_sign:id=US:W11-2 traffic_sign:2:id=W16-1aP CO:SP-46 | ||
hazard | queues_likely | An area which frequently experiences a queue of cars backed up on the roadway |
ES:P31 DE:124 |
US:W3-4 (due to traffic signals) US:W3-6 (due to drawbridge) US:W26-1 | ||
hazard | road_narrows | A place where the road narrows immediately following the sign. |
ES:P17 DE:120 |
US:W5-1 CO:SP-28 | ||
hazard | roundabout | A section of road approaching near a roundabout where it is recommended to reduce speed. |
ES:P4 |
US:W2-6 CO:SP-20 | ||
hazard | school_zone | An area near a school where special traffic laws apply. |
ES:P21 DE:136-10 |
US:S1-1 CO:SP-47 | ||
hazard | side_winds | An area which frequently receives high winds that present a danger to people. |
ES:P29 DE:117-20 |
US:W8-21 CO:SP-73 | ||
hazard | slippery | An area or stretch of roadway which is slippery, or slippery under certain conditions, presenting a hazard to motorists |
ES:P19 DE:114 |
US:W8-5 CO:SP-44 | ||
hazard | curve | A section of road which presents a risk to motorists due to a single curve. |
ES:P13a DE:103-20 |
US:W1-2L US:W1-2R US:W1-8L US:W1-8R US:W1-10 US:W1-10aL US:W1-10aR US:W1-10bL US:W1-10bR US:W1-10cL US:W1-10cR US:W1-11L US:W1-11R US:W1-15 CO:SP-03 | ||
hazard | curves | A section of road which presents a risk to motorists due to multiple curves. |
ES:P14a DE:105-20 |
US:W1-4L US:W1-4R US:W1-4bL (2 lanes) US:W1-4bR (2 lanes) US:W1-4cL (3 lanes) US:W1-4cR (3 lanes) US:W1-5L US:W1-5R US:W1-10dL US:W1-10dR US:W1-10eL US:W1-10eR US:W24-1L US:W24-1R US:W24-1aL US:W24-1aR US:W24-1bL US:W24-1bR CO:SP-10 | ||
hazard | turn | A section of road that turns sharply |
ES:P13a DE:103-20 |
US:W1-1L US:W1-1R US:W1-6L US:W1-6R US:W13-10 US:W13-11 CO:SP-02 | ||
hazard | turns | A section of road that turns sharply two times, in opposite directions |
ES:P14a DE:105-20 |
US:W1-3L US:W1-3R CO:SP-05 |
Stop and give_way
Key | Human readable value | Usage count | Element | Description | traffic_sign:id
Vienna |
traffic_sign:id
MUTCD |
---|---|---|---|---|---|---|
highway | stop | A sign of stop. Text of the wiki has changed so the proposal is based on this version |
ES:R2 DE:206 |
US:R1-1 US:R1-5bL US:R1-5bR US:R1-5cL US:R1-5cR US:R1-5eL US:R1-5eR US:R1-6a US:R1-6c US:R1-6e US:R1-9a US:R1-9c CO:SR-01 | ||
highway | give_way | A sign of give_way / yield |
ES:R2 DE:205 |
US:R1-2 US:R1-5L US:R1-5R US:R1-5aL US:R1-5aR US:R1-5dL US:R1-5dR US:R1-6 US:R1-6b US:R1-6d US:R1-7 US:R1-7a US:R1-9 US:R1-9b CO:SR-02 |
traffic_sign=max* ,min or advisory
Key | Human readable value | Usage count | Element | Description | traffic_sign:id
Vienna |
traffic_sign:id
MUTCD |
---|---|---|---|---|---|---|
maxspeed | * | A sign of maxspeed. Specifies the maximum legal speed limit on a road, railway or waterway. |
ES:R301 CO:SR-30 DE:274 |
US:R2-1 US:R2-4a | ||
maxspeed:advisory | * | A sign of advisory maxspeed. Specifies the recomended speed limit on a road, railway or waterway. |
ES:S7 |
US:W13-1P US:W13-1aP US:W13-2 US:W13-3 US:W13-6 US:W13-7 US:W13-8 US:W13-9 US:W13-10 US:W13-11 US:W13-12 US:W13-13 | ||
minspeed | * | A sign of minspeed. Specifies the minimum legal speed limit on a road, railway or waterway. |
ES:R411 DE:275 |
US:R2-4P US:R2-4a | ||
maxheight | * | The legal maximum height |
ES:R205 CO:SR-32 DE:265 |
US:W12-2 (ahead) US:W12-2a (overhead) | ||
maxwidth | * | The legal maximum width |
ES:R204 CO:SR-33 DE:264 |
|||
maxweight | * | The legal maximum weight |
ES:R204 CO:SR-31 DE:262 |
US:R12-1 US:R12-4 US:R12-5 US:R12-6 | ||
maxaxleload | * | The legal maximum axleload weight |
ES:R202 DE:263 |
US:R12-2 US:R12-4 | ||
maxlength | * | The legal maximum length |
ES:R203 DE:266 |
|||
overtaking | no | A sign of no overtaking |
ES:R305 CO:SR-26 DE:276 |
US:R4-1 US:W14-3 | ||
overtaking:hgv | no | A sign of no overtaking for HGV. |
ES:R305 CO:SR-17 DE:277 |
|