Proposal:Traffic signal details

From OpenStreetMap Wiki
Jump to navigation Jump to search
Traffic signal details
Proposal status: Draft (under way)
Proposed by: ManuelB701
Tagging: traffic_signal=*
Applies to: node
Definition: Detailed tagging of traffic signals
Statistics:

Draft started: 2025-06-11


Proposal

The proposal expands the way one is able to tag the individual traffic signals on OSM. Goal of it is to denote the existence of traffic signals for certain vehicle modes, which states the signals can be, which signals effect only a certain direction and alongside a couple other additions.

Rationale

The tagging for traffic signals is currently limited because one is only able to tell that a traffic signal exist and for what it's used for but not the states, directions and for which vehicles it applies.

For this reason, the proposal adds additional tags for traffic signals.

In rare cases, a signal only applies to non-general traffic such as a traffic signal which only applies for a bus but not for other vehicles (e.g. access to a bus-only road).

In addition, the tagging also is beneficial for OpenRailwayMap because multiple (tram) signals are often placed next to each other (e.g. one for each turn) and allow for tagging in greater details.


Tagging

The tagging is a mixture of turn tagging, transport mode suffixes and lane tagging.

In general. The individual signals are separated the following:

  • | is the group separator (a group being signals which affect a single lane only): Used to denote the individual signals on a per-lane basis
  • ; is the head separator (a "head" being a collection of multiple lights): Differentiates the individual signals for a single lane (or for all lanes if no group separator exists).
  • , is the unit separator: Further classifies a single signal such as which states it has or which lights are installed.

To specify, here is a list of tags to formulate:

  • traffic_signals:<traffic_mode> - Denotes which signals are designated for which traffic mode. For example, if a bicycle signal exists, you use traffic_signal:bicycle and if one for buses exist, you use traffic_signal:bus instead. traffic_signal:vehicle also is valid and is used in specific cases to tell that certain lanes lack general vehicle lights (e.g. bus-only lanes).
    Valid values are no (lack of signal) and yes (signal dedicated to a mode)—there is no designated nor only and any instance thereof should be replaced by yes if not replaced altogether.
  • traffic_signals[:<traffic_mode>]:states - Contains the different states a signal can be in (when active). Keep in mind that deactivated also is a state since not all signals are active all the time (e.g. an emergency signal which is off by default). Accepts generic values such as go, stop and off but country-specific values with their codes also are valid and may be preferred.

The individual states are comma separated.

  • traffic_signals[:<traffic_mode>]:turn - Denote the turn arrows for the individual signals with values similar to turn=*. If a single signal has multiple arrows, separate them by commas (this is because multiple signals can be placed next to each other). Default is none Note that this tagging is separate from turn lanes the signals are connected to a highway because not all signals have all turn lanes installed e.g. a general signal which effects a through and right turn lane is tagged without this key (it also simplifies the data consumption).
  • traffic_signals:fallback - Used to denote a fallback in case the signals have been disabled or is faulty and to avoid double penalties because of separately entered highway=traffic_signals and a highway=give_way / highway=stop. Possible values include none, give_way and stop. Default is country dependent.
  • In general, the need to specify a certain direction depends on the connected highway: It can be dropped if the signals are unidirectional (e.g. installed on a one-way or traffic_signal:direction=* isn’t both) or if the signals are the same for both directions. In a very unlikely situation where there are different set of lights in both directions, one can suffix the differences with :forward and :backward.

Other tags (partially inspired by OpenRailwayMap:

  • traffic_signals[:<traffic_mode>]:PT_priority=requested;off - Denotes the existence of a priority signal for buses. This should only be used on the highway=traffic_signal which can show the signal request state, not the signals which affects the signal request (see also OpenRailwayMap/Tagging Trams in Germany).

bus or psv

Depending on how the local laws, bus signals aren't exclusive to buses because they also apply to other vehicles on that lane such as taxis.

  • In Germany, bus signals also are valid for taxis if they're permitted onto a bus lane so the preferred tagging for them is psv[1]

Known limitations

This tagging only works properly on separately mapped signals and for signals on linear ways because these are unambiguous. For traffic signals which have been mapped at an intersection node, this tagging cannot work because the individual states are too ambiguous i.e. one cannot determine which tags apply to which signal.

Examples

A set of three different traffic signals, one regular for general traffic (red, yellow, green), one for buses (in the states A 1, F 1 and F 0) and one for bicycles (also red, yellow, green)
A set of three different traffic signals, the latter two because of the bus lane on that road.

Tagging:

More to come...

Features/Pages affected

External discussions

Comments

Please comment on the discussion page.

References