Proposal:Per-lane or vehicle-based priority and signal control

From OpenStreetMap Wiki
Jump to navigation Jump to search
Per-lane or vehicle-based priority and signal control
Proposal status: Draft (under way)
Proposed by: Kovposch
Draft started: 2022-06-14


Defining give_way=* and stop=* on the stopping line and at the junction.

Approving priority=* to be organized, and expanding its usage.

Lane control signals covered together for completeness

traffic_signals:turn=* out-scope. Red-turn not covered.


highway:lanes=* vs *:lanes=* Possible mix between stop and give-way? *:lanes=* required anyway to define them. Backward compatability with the overriding control, and simplifies implementations without touching highway=*.

Potential confusion between priority on an entire lane vs along marking at junction (previous proposal wait:lanes=* requires tagging on line only, forbidding points) highway:lanes=* on the highway=* road might be confusing.

priority=* can be adapted for different modes, similar to access:*=* syntax. *=designated is often mistaken as a priority or exclusive use.

Use priority=foot and priority=bicycle to supplement living_street=yes and bicycle_road=yes / cyclestreet=yes to remove the need to define a legal status for the road class. priority:advisory=* used if non-mandatory.


Possible deficit of *:bicycle=* on crossing road without cyclepath. Eg minor road crossing major road crossing (with bikepath), who has priority?

How to handle type=traffic_signals for entire controller vs controlled movement?


Junction signal

highway=traffic_siganls + traffic_signals:lanes=*

Eg traffic_signals=continuous_green: traffic_signals:lanes=signal|signal|continuous_green


priority:*ward=*: priority=*ward is moved into the hierarchy, interpreted as priority:*ward=yes. priority=vehicle uses access:*=* modes for specific classes with priority.

give_way=*, stop=* = *=all, *=minor: Replaces highway=priority

give_way:lanes=*, stop:lanes=*: Allows for a mix

TBD: right-turn yield, straight-ahead / left-turn stop? Lane-based: give_way:lanes=no|yes + stop:lanes=yes|no Movement-based: type=stop, type=give_way

Lane control signals


Signal priority

traffic_signals:priority=*? Bus priority vs railway preemption

traffic_signals=emergency assumed for emergency vehicle.



Example without physical island separation


US lane example US no-lane example


Major road gained left lane; minor road right lane give-way to merge into middle and right lane of major road downstream

Bus bay

bus_bay=left (LHT examples)

Mandatory priority:lanes:forward=bus|none|none + give_way:lanes:forward=yes|no|no along box highway=give_way + give_way:lanes:forward=yes|no|no at give-way line

Informative priority:advisory:lanes:forward=bus|none|none + give_way:advisory:lanes:forward=yes|no|no along road

(no give_way line)


No rendering.

Features/Pages affected

External discussions

Previous proposals




Please comment on the discussion page.