I feel like the current way of tagging traffic lights is fairly limited to what we can map. It’s particularly notable because the equivalent for railway signals is quite extensive, particularly these of trams which also use (their own) traffic lights.
Denoting the states of traffic signals
Most traffic lights come in three states: Red, yellow and green but it also is common to have only red and yellow or even yellow and green (a more controlled version of right-on-red so to speak).
Some of it can be implied by some traffic_signals
values but others aren’t so much, not to mention the same signal type can use different states.
Another important point is that normal traffic signals can also have special states which aren’t universal e.g. a user on the shared_green thread noted that some vehicle lights for pedestrian crossings in Spain blink amber after some time (with the intention that cars can proceed but still give way to pedestrians).
Multiple traffic signals laterally
There also is the issue that multiple traffic signals can be placed next to each other which can be either different signals for different lanes or for different vehicles.
Highways aren't the only ones which can benefit from this
Tramways traffic lights can also come up like this i.e. the same position has two separate signals with their own phases (e.g. a signal for turning left and another for moving straight right with a side effect that some states are duplicated). This image is one such example and there doesn’t seem to be a good way to denote these on ORM either.
No differentiation for lanes
This is a classic example: Each lane has its own signal.
My preferred idea is that to use the *:lanes
suffix even if it’s unusual to use it for nodes but the justification here is that you can read the lanes on the connected highway
but it also only works if each signal is mapped separately.
Signals for certain vehicles
Related to get into the detail, the current tagging is mostly focused on traffic lights for vehicles with support for pedestrian signals (mostly in the context of crossings). However, bicycles and buses can have their own signal too, sometimes on the same lane.
Buses are particularly notable because they share these with trams rams signals (which do have an aforementioned detailed way of tagging) in many countries and in case where they’re shared, it’s only possible to do so if the highway is drawn over the railway (like single-lane and oneway) but otherwise can’t share nodes.