|Traffic signs give instructions or provide information to road users.|
|Used on these elements|
|Status: de facto|
|Tools for this tag|
The traffic_sign=* tag is used to map traffic signs such as city-limit signs or any other traffic signs.
- 1 Description
- 2 How to map
- 3 Tagging
- 4 Editor support
- 5 See also
Traffic signs give instructions or provide information to road users. Some signs are only relevant at the place where they're mounted (like e.g. a stop sign - called point-related signs from now on), while others affect a section of the road (like e.g. a "no overtaking" sign - called section-related signs).
How to map
Point-related signs can be mapped by tagging a node, while section-related signs can be mapped by tagging a way (or area). You may also map a section-related sign by tagging it as a node if you only know where the section begins or if you just want to explicitly specify its physical location. Keep in mind that additional tagging is necessary to indicate the end of the section in this case.
The implications of a traffic sign should always be tagged on the concerned section of the road itself as well. When mapping a speed limit sign for example: always add a maxspeed=* and a source:maxspeed=sign tag to the road itself.
It is possible to use a node which is part of a way, or to create a separate node beside the road. While both methods are used in practice, if you put the node aside the way the direction of the sign usually becomes clear and the position typically is more accurate. If you put it on the highway, information about these properties is lost in both cases, but the way it belongs to is explicitly given.
As part of a way
Create a new node within the relevant way next to the sign. This method allows software algorithms which operate on ways (like e.g. routing algorithms) to consider the sign, but makes it impossible to know the exact position of the sign. A renderer can at best assume that the sign is located somewhere next to the road.
To indicate the direction affected by a traffic sign relative to the highway=* way, three different tags are in use. forward means the same direction as the
highway=* way and backward the opposite direction.
- The oldest of the three tags.
- Different from the other two tags, this pair of tags isn't used in addition to
traffic_sign=*but in place of it. Thus, a post with different traffic signs for each direction can be mapped on a single node.
- The newest of the three tags, introduced by the iD editor in September 2018 because the editor couldn't handle traffic_sign:forward=*/traffic_sign:backward=*. This tag is equivalent to
direction=*. (It is unknown why the key
direction=*, which was also already in use, wasn't used instead.)
The affected direction can only be specified by using nodes which are part of exactly one way . Avoid junction nodes and nodes between two ways as well (where they have been split, but are connected by a node). If in doubt, better simply insert a new node into the way instead of using an existing one.
As a separate 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.
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.
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).
You may use traffic_sign:forward=* to specify that this particular sign affects vehicles moving in the same direction as the way, or traffic_sign:backward=* to specify that the opposite direction is affected.
It is common to use both human-readable values (like city_limit) as well as national traffic sign IDs (like DE:310) where they exist.
Multiple signs can be tagged by using different separators. Traffic signs which are unrelated to each other (like e.g. speed limit and no parking) are separated by semicolon
;. Related signs (like e.g. no entry plus except buses) are separated by comma
|Value||Element||Sign||Comment||Additional tags on the way|
|city_limit||City or village sign.||source:maxspeed=DE:urban (inside) and source:maxspeed=DE:rural if not overridden by other maxpseed source (or with other appropriate country code)
|maxspeed||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. Add maxspeed=* to specify the sign.||maxspeed=* + source:maxspeed=sign|
|stop||Stop sign. Usually tagged implicity on a node of the highway with highway=stop instead.||highway=stop (on a node)|
|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)|
|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)|
|overtaking||No overtaking sign.||overtaking=no|
|maxwidth||Maximum width sign.||maxwidth=*|
|maxheight||Maximum height sign.||maxheight=*|
|maxweight||Maximum weight sign.||maxweight=*|
|stop_ahead||Stop ahead sign in North America. As this isn't a global traffic sign it likely makes more sense to use the traffic sign IDs instead (e.g. traffic_sign=US:W3-1 in the USA).|
|yield_ahead||Yield ahead sign in North America. As this isn't a global traffic sign it likely makes more sense to use the traffic sign IDs instead (e.g. traffic_sign=US:W3-2 in the USA).|
|signal_ahead||Signal ahead sign in North America. As this isn't a global traffic sign it likely makes more sense to use the traffic sign IDs instead (e.g. traffic_sign=US:W3-3 in the USA).|
Traffic sign IDs
Signs specific to a particular country should be mapped by the country-indicating prefix followed by a colon and then the traffic sign.
- The country prefix should be the
:from the sign
. This prefix is separated by a colon
- 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 value, you can supply it after the ID using brackets
[value]. The value may contain a dot
.as decimal separator and a minus
-for negative values.
Lists of IDs per country
The following table links to resources for looking up sign IDs specific to each country or country subdivision (in some cases where country subdivisions have their own sign standards).
|Prefix||Country or region||OSM Wiki||Wikipedia||Wikipedia en||Wiki Commons||External source|
|AR||Argentina||available (es)||—||—||www.bmargentina.com pdf (es)|
www.agvp.gov.ar pdf (es)
|BY||Belarus||—||(be-tarask)||—||adrive.by pdf (ru)|
|BO||Bolivia||—||—||—||—||www.abc.gob.bo pdf (es)|
|BA||Bosnia and Herzegovina||—||—||—||www.automotivecenter.ba pdf (bs)|
|BR||Brazil||available (pt)||(pt)||—||www.pmf.sc.gov.br pdf (pt)|
|BG||Bulgaria||—||(bg)||—||—||www.mvr.bg pdf (bg)|
|CL||Chile||—||(es)||www.conaset.cl pdf (es)|
|CO||Colombia||available (es)||—||www.mintransporte.gov.co pdf (es)|
|HR||Croatia||—||(hr)||—||—||www.mppi.hr pdf (hr)|
|CZ||Czechia||available (cs)||(cs)||www.zakonyprolidi.cz pdf (cs)|
|EC||Ecuador||—||—||—||—||www.normalizacion.gob.ec pdf (es)|
|FR||France, Monaco||available (fr)||(fr)||—||www.gouv.fr pdf (fr)|
|GE||Georgia||—||(it)||—||—||mes.gov.ge pdf (ka)|
|DE||Germany||available (de)||(de)||www.bast.de (de)|
|GR||Greece||—||(el)||www.yme.gr pdf (el)|
|IL||Israel||—||(he)||—||media.mot.gov.il pdf (he)|
|IT||Italy, San Marino, Vatican City||available (it)||(it)||—|
|MX||Mexico||—||(es)||—||http://www.sct.gob.mx (es) (pdf)|
|NL||Netherlands||available (nl)||(nl)||www.rijksoverheid.nl pdf (nl)|
|PE||Peru||available (es)||—||—||—||www.gob.pe pdf (es)|
|PL||Poland||available (pl)||(pl)||sejm.gov.pl pdf (pl)|
|PT||Portugal||available (pt)||—||—||—||www.ansr.pt pdf (pt)|
|PR||Puerto Rico||dtop.gov.pr (es)|
|RU||Russia||available (ru)||(ru)||—||www.avtobeginner.ru (ru)|
|SK||Slovakia||available (sk)||(sk)||—||justice.gov.sk pdf (sk)|
|SI||Slovenia||available (si)||(de)||—||—||www.pisrs.si (10-2019) pdf (sl)|
|CH||Switzerland, Liechtenstein||—||(de)||www.gesetze.li pdf (de)|
|(it)||www.admin.ch pdf (it)|
|TR||Turkey||available (tr)||(it)||—||—||www.kgm.gov.tr pdf (tr)|
|UA||Ukraine||available (ua)||(ua)||—||pdd.ua (ru)|
|GB||United Kingdom||available||—||www.gov.uk pdf|
|US||United States||available||—||2002 chart|
2014 Revision 2 Chart
|US:CA||United States: California||dot.ca.gov|
|US:DE||United States: Delaware||deldot.gov|
|US:IL||United States: Illinois||idot.illinois.gov|
|US:IN||United States: Indiana||in.gov|
|US:KY||United States: Kentucky||transportation.ky.gov|
|US:MI||United States: Michigan||mdotjboss.state.mi.us|
|US:MD||United States: Maryland||apps.roads.maryland.gov|
|US:MN||United States: Minnesota||dot.state.mn.us|
|US:MO||United States: Missouri||epg.modot.org|
|US:NY||United States: New York||dot.ny.gov|
|US:TX||United States: Texas||ftp.dot.state.tx.us|
|US:OH||United States: Ohio||2012 chart|
|US:OR||United States: Oregon||oregon.gov|
JOSM has an icon for the value city_limit and also renders icons for the keys maxspeed=*, maxweight=*, maxheight=* and some more if tagged together with traffic_sign=*. While for maxspeed the actual value is shown, the other keys use a generic icon, which always shows the same value independent from the actual value specified in the respective tag.
The style Lane and Road Attributes currently renders traffic signs for maxspeed and overtaking. For maxspeed the icon shows the actual value specified in the tag.
The following table list some examples together with the actual rendering result in JOSM.
|Tags||Description||Rendering result in JOSM|
|Speed limit of 50 km/h|
|End of speed limit|
|Speed zone with 30 mph|
|Overtaking forbidden and a speed limit of 70 km/h|
|End of speed limit and overtaking is allowed.|
Presets, styles, libraries, statistics and maps with traffic signs with IDs per country
The following table links to the presets and styles for JOSM that recognises these signs with IDs specific to each country or country subdivision (in some cases where country subdivisions have their own sign standards). Also you can find maps, statistics at taginfo and renders 3D in Kendzi 3D's JOSM plug-in.
- RoadSigns plugin for the JOSM editor
- destination=* and Relation:destination_sign - destination signs for vehicles
- information=guidepost - destination signs for hiking/cycling/skiing routes
- highway=speed_display - dynamically changing electronic sign that displays the speed of passing vehicles
- Sophox query for U.S. traffic signs by series and color based on this key and cross-referencing Wikidata