From OpenStreetMap Wiki
Jump to: navigation, search
Available languages — Tag:highway=traffic_signals
Public-images-osm logo.svg highway = traffic_signals
Led traffic lights.jpg
A traffic signal for regulating circulation.
Group: Highway
Used on these elements
may be used on nodesshould not be used on waysshould not be used on areasuse on relations unspecified
Useful combination
Status: Approved


Traffic signals, also known as traffic lights, traffic lamps, signal lights and stop lights are signalling devices positioned at road intersections, pedestrian crossings and other locations to control competing flows of traffic.


Traffic signals for cars

Key Value Element Comment
highway traffic_signals Node Required. Indicates traffic signals for cars.
ref * Node Reference number or code.
traffic_signals * Node Additionally used to indicate special types of traffic signals.
traffic_signals:direction forward / backward Node Applies only when tagging traffic signals separately for each direction. Tells whether this particular signal affects cars moving in the same direction as the way (=forward) or in the opposite direction (=backward).

Traffic signals for pedestrians

Add the following tags in addition to highway=traffic_signals for pedestrian crossings if the entire crossing is represented by a single node, or to each highway=crossing nodes if the pedestrian crossings are tagged on their own (strongly recommended).

Key Value Element Comment
crossing traffic_signals Node Required. Indicates traffic signals for pedestrians.
button_operated yes / no Node Used to indicate that the traffic signals need to be activated by pressing a button.
traffic_signals:sound yes / no Node Whether there are sound signals for visually impaired people.
traffic_signals:vibration yes / no Node Whether there are vibrating signals for visually impaired and deaf people.
traffic_signals:arrow yes / no Node Whether there is a tactile arrow available at the traffic light pole to indicate for blind persons in which direction the pedestrian crossing leads.
traffic_signals:minimap yes / no Node Whether there is a small tactile map at the traffic light pole to indicate the crossing layout for blind persons.
traffic_signals:floor_vibration yes / no Node Whether there is a device that lets the floor vibrate at walk signal. Often used near homes of deaf-blind persons.

How to map

The mapping of traffic signals is an abstraction that the particular junction or way is regulated by traffic lights.
It is not a representation of a particular device.
Thus, because traffic signals can affect routing decisions, it is important that they are attached to the ways to which they apply, and not placed beside the way.

Simple intersections

Mapnik traffic signals.png

For simple intersections, just tag the intersection node. The same applies to traffic signals which are not part of any intersection, e.g. before tunnels.

Complex intersections

Consider the following intersection:

Traffic signals example 1.png

The horizontal ways are actually one large way, represented by two one-way streets. The problem now is that traffic signals should ideally be applied to each way exactly once. As of now, there is no well established convention on how this problem should be ideally solved, but possible taggings which are currently in use are listed below.

Further discussion is welcome on the discussion page.

Tag all crossings

Traffic signals example 2.png

Add traffic signals to the common nodes in the junction. This will create two separate traffic signals for the vertical way. It is up to the routing software to count nearby signals as one for timing purposes. Many junctions are tagged this way due to simplicity.

Tag all incoming ways

Traffic signals example 3.png

Instead of putting a traffic signal on each crossing, put a traffic signal on all incoming ways of a junction. Traffic signals added to dual-ways need to be tagged with either traffic_signals:direction=forward or traffic_signals:direction=backward to indicate the affected direction. In the given example this applies to the vertical way only, as the horizontal way is mapped with one-ways anyhow.

Tag all incoming one-ways

Traffic signals example 4.png

As before, put a traffic signal on all incoming ways of a junction, but split each incoming dual-way into two separate one-ways before. This avoids usage of the traffic_signals:direction=* tag, but might only be appropiate if each connected way should actually be represented as two separate one-ways (you probably shouldn't split a dual-way into two one-ways just because of traffic signals).

Advanced example showing the "tag all incoming one-ways" approach, including the traffic signals of intersecting cycleways.

Named traffic signals/traffic signal systems (Japan... )

Traffic signal with name “Rokuchonome” in Sendai, Japan.

In some countries (such as Japan), people orient themselves in the local area using the names of traffic signals or traffic signal systems rather than the names of streets. While street names may also exist, they are less important for orientation. See “Named spots instead of street names” for details. Note that Korea and Nicaragua used named intersections, but these are tagged as junction=yes and reference_point=* respectively, not highway=traffic_signals.

For simple intersections (single node) or for single traffic signals on the open road (single node) simply use highway=traffic_signals together with a name=* tag.

Note: Do not use junction=yes at all if you have a named traffic signals. junction=yes is only for named junctions (which means that if a node is tagged with highway=traffic_signals + junction=yes + name=*, the tag "name" is the junction name).


Mapnik Osmarender OpenCycleMap BlindMap [1]
Mapnik traffic signals.png Rendering-traffic singals.jpg Cmaprenderlight.png Blindmap Traffic Signals Pedestrian with sound.JPG
Pedestrian traffic signals with sound

See also