Key:road_marking

Description
Road markings, i.e. colored markings on the surface of traffic areas for providing information and guidance for traffic. Edit this description in the wiki page. Edit this description in the data item.
Group: highways
Used on these elements
may be used on nodesmay be used on waysmay be used on areas (and multipolygon relations)should not be used on relations (except multipolygon relations)
See also
Status: approvedPage for proposal

=* allows the mapping of road markings as separate geometries. These include symbols or restricted areas on the road or lane markings, e.g. at intersections.

The type and design of road markings along regular roads can in most cases be derived from other OSM tags and should therefore not be mapped with separate geometries:[note 1]

  • lane_markings=* describes whether a road has marked lanes,
  • lanes=* indicates the number of (marked) lanes,
  • overtaking=* allows conclusions about the design of the center line of a road in many countries, e.g., whether it is dashed or solid,
  • change=*, similar to overtaking=*, allows conclusions about the design of lane edges,
  • turn:lanes=* indicates the direction of travel of lanes and is usually associated with arrow markings,
  • highway=stop, highway=give_way or highway=traffic_signals indicates the presence of a stop line in many countries (the design of which can be specified with =*),
  • crossing:markings=* indicates the type and design of markings at crossings,
  • parking:side describes the presence of parking areas on the road, which may be marked (parking:side:markings=*),
  • cycleway=* and cycleway:lane=* provide information about the presence of (marked) cycle lanes and their markings.

How to map

Use =* on separately mapped geometries, i.e. not combined with other features such as the road centerline (highway=*). [note 2] Depending on the type of road marking, they are mapped either as a way line, area area, or node node.

Add =* with one of the values listed below and, if needed, additional tags, e.g. for the design of a line (stroke=*), the pattern of an area (pattern=*), the shape of an arrow (arrow=*), the representation of a symbol (symbol=*), or physical properties such as color and size. In many cases, road markings have an impact on other road properties and tags, which should always kept consistent (see the references to other tags in the last column of the table below).

If road markings are mapped in a location where the areas of roads and streets are also mapped with area:highway=*, the road markings are always mapped in addition, i.e. "on" the carriageway areas.

Typical Values

Illustration Value Geometry Description Interdependence with other tags

Describing linear markings

stop_line
stop_line
=stop_line way node

A stop line e.g. in front of a traffic signal, traffic sign or (other) junctions. Can be mapped as a line following its real location, or alternatively as a point on the highway line (then, if necessary, exceptionally together with tags such as highway=stop, highway=give_way or highway=traffic_signals).

  • Add stroke=* to specify the style of the stop line (e.g. solid or sharks_teeth).
  • If mapped on a node on the highway=* line, add direction=forward/backward to specify which direction of travel is affected by the stop line.
highway=stop
highway=give_way
highway=traffic_signals
lane_divider
lane_divider
=lane_divider way

Lane markings to demarcate individual lanes.

  • Add stroke=* to specify the style of the lane marking (e.g. dashed or double_solid).
lane_markings=*
lanes=*
change=*
overtaking=*
edge_line
edge_line
=edge_line way

Marking the edge/boundary of the carriageway.

  • Add stroke=* to specify the style of the edge marking (e.g. solid).
crossing_edge
crossing_edge
=crossing_edge way

Edge/border markings of pedestrian or cycleway crossings.

  • Add stroke=* to specify the style of the crossing marking (e.g. dashed).
crossing:markings=*

Describing areal markings

restriction
restriction
=restriction area

Neutral areas or restriction markings, like gore chevron or no-parking markings.

  • Add pattern=* to specify the style of the restriction marking (e.g. chevron or stripes).
  • Add reason=* to specify, why a restriction is marked (e.g. bus_stop, driveway or emergency).
parking:side
parking:side:restriction=*
crossing
crossing
=crossing area

The (areal) marking of a crossing to map the extent of crossing markings or colored surfaces in detail. Note: In general, tags like crossing:markings=* or surface:color=* at the highway crossing line should be sufficient to describe such markings.

  • Add pattern=* to specify the style of the crossing marking (e.g. solid). It is also possible to use the values known from crossing:markings=* (e.g. zebra), but these can be derived from any existing crossing lines and duplicate information should be avoided.
  • Add colour=* to specify the colour of the crossing markings.
crossing:markings=*

Describing symbolic markings

arrow
arrow
=arrow way

An arrow, usually to indicate turn directions, but also for indicate driving or oneway directions or overtaking hints. In contrast to other symbolic road markings, arrows are mapped as lines (instead of points) by most mappers. It is therefore recommended to map arrows as a simple line between two points corresponding to the length and direction of a single arrow with the line starting at the "foot" (base) of the arrow.

  • Add arrow=* to specify the form of the arrow, usually using values from turn=* (like left, through, through;right, merge_to_left, reverse, ...) or restriction=* tagging (like no_u_turn, no_right_turn).
turn:lanes=*
traffic_sign
traffic_sign
=traffic_sign node

An equivalent of a traffic sign applied as a road marking.

traffic_sign=*
maxspeed=*
hazard=*
text
text
=text node

Lettering on the road surface like "BUS", "SLOW" or "King St.".

lanes=* (like lanes:bus=*)
access=* (like bus:lanes=*)
hazard=*
symbol
symbol
=symbol node

A symbol or pictogram applied as a road marking.

  • Add symbol=* to specify the shown pictogram.
e.g. cycleway=*

Additional attributes

Stroke, pattern and symbol styling

Use the tags stroke=* (for ways), pattern=* (for areas), arrow=* (for arrows) and symbol=* (for symbols) to further describe the design of road markings:


way stroke=*

Use stroke=* to describe the style of linear road markings.

Some line attributes like stroke=sharks_teeth are "directed" and therefore dependent on the line direction. In this case, the stroke elements are considered to "point to the right" from the line direction (in case of shark's teeth, the tips of the teeth point to the right).

Double lane markings with different stroke styles on each side can be specified with stroke:left=* and stroke:right=* (seen in the line direction).

area pattern=*

Use pattern=* to describe the style of areal road markings.

way arrow=*

Use arrow=* with the common values known from turn=* to specify the form of an =arrow (like left, through, through;right, merge_to_left, reverse, ...). In rarer cases, arrow markings may also show icons known from restriction=* (like no_u_turn, no_right_turn).

Examples:

node symbol=*

Use symbol=* to describe the style/form of symbolic road markings (=symbol). Use a generic term such as bicycle, pedestrian, hov (see hov=*) or airport (see also destination:symbol=*).

Examples:

Other additional attributes

There is a bunch of tags that can provide additional information describing the size or other physical properties of road markings:

  • width=*, especially for linear road markings to distinguish narrow from wide markings,
  • colour=*, e.g. whether there are white or yellow markings,
  • direction=* on nodes to specify where the markings are facing to,
  • length=* on nodes to specify the size of symbolic road markings (beside width=*).

Examples

Shark's teeth stop lines at a junction.

waynode =stop_line
+ stroke=sharks_teeth

Neutral area at an exit ramp forming a theoretical gore.

area =restriction
+ pattern=stripes

Marking at a bus stop to raise attention and prevent cars from stopping.

area =restriction
+ pattern=zigzag
+ reason=bus_stop

A pattern on a junction that can be driven over but it is not allowed to stop within it (see also box junction).

area =restriction
+ pattern=crosshatch
+ reason=junction

Colored road surface on a foot- and bike path, intended as a warning indicator on a crossing.

area =crossing
+ pattern=solid
+ colour=red

Wavy lane markings around a zebra crossing.

way =lane_divider / edge_line
+ stroke=zigzag

Turn lanes marked with arrows...
way =arrow + arrow=through/arrow=right

...and two different neutral areas
area =restriction + pattern=chevron/pattern=stripes

Destination markings (arrow, text, symbol) near an intersection.

way =arrow + arrow=through
node =text + inscription=TRIER
node =symbol + symbol=motorway

Possible tagging mistakes

An earlier documented but undiscussed version of =* included numerous unstructured values, most of which can be reclassified to one of the values listed above.

If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =give_way ‒ Replace with =stop_line
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =left ‒ Replace with =arrow + arrow=left
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =right ‒ Replace with =arrow + arrow=right
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =through ‒ Replace with =arrow + arrow=through
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =solid_lane_divider ‒ Replace with =lane_divider + stroke=solid
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =dash ‒ Replace with =lane_divider + stroke=dashed
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =gore_chevron ‒ Replace with =restriction + pattern=chevron
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =solid_crossing_edge ‒ Replace with =crossing_edge + stroke=solid
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
  • =solid_road_edge ‒ Replace with =edge_line + stroke=solid
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!

Footnotes

  1. A proposal for the use of styling attributes on highway=* lines is still pending, but could be developed based on the =* schema (e.g. lanes=2 + lane_markings=yes + lane_markings:stroke=dashed + lane_markings:colour=yellow).
  2. An exception to this are stop lines if there is already a node with highway=stop, highway=give_way or highway=traffic_signals at their location. Although the stop line can also be mapped exactly as a separate line with =stop_line, some mappers prefer a simpler variant only mapping a node on the highway=* line at the location of the stop line with =stop_line and, if necessary, additional attributes such as stroke=sharks_teeth.

See also

  • lane_markings=* to indicate whether there are marked lanes along a road
  • lanes=* for the number of lanes for motorized traffic
  • turn=* to indicate turning lanes
  • overtaking=* for information on whether overtaking is permitted or not
  • change=* to indicate whether lane changes are permitted or not
  • crossing:markings=* to indicate the design of crossings for pedestrians and cyclists