Do routing engines account for nearby traffic signals?

I am currently working on traffic signals along US Highway 280, and there are a lot of intersections marked like this:

I have been changing intersections like this to have one traffic signal node on each incoming way. However, the wiki says that the existing notation might be acceptable. From the wiki (https://wiki.openstreetmap.org/wiki/Tag:highway%3Dtraffic_signals#Tag_all_crossings): “It is up to the routing software to count nearby signals as one for timing purposes.”

Is this behavior widely supported? I believe the best practice is to map the traffic signals individually for each incoming way, to avoid confusion in the case that there are two independent traffic lights at nearby intersections. However, if the most common routing engines can handle this scenario, it would be nice not to have to keep redoing intersections.

Interesting question to which I don’t know the answer, other than this very much the common way of mapping a signal controlled intersection of dual carriageways. Given that stop lines can be tagged highway=stop and traffic signals are tagged highway=traffic_signals there is a high likelihood that remapping signals to stop lines may create other issues.

A relatively simple way to compress these to a single entity would be using an operator like st_cluster in postgis, but one has to make base assumptions about minimum distance between adjacent sets of traffic lights, which are likely to be wrong.

What is clear is that routers do have to take account of examples such as yours.

One to ponder on.

One approach when building garmin maps with mkgmap is to apply a penalty (-1) to the road speed in those segments, and I haven’t found noticiable difference ot travel times between traffic lights mapped in the intersection or in the incoming way; probably because the segments are very short to influence the estimated times.

Wouldn’t this impose two penalties at intersections where there should only be one?

Yes, doing what SK53 describes isn’t how it should be mapped.

highway=stop isn’t intended to map the stop line at a highway=traffic_signals; it’s for a place where “a physical stop is required by law”. This would usually be at a stop sign, but may just be a line painted on the road where a stop is required. However, the stop line at a traffic signal is completely different because a stop isn’t required if the light is green (it’s more like a conditional highway=stop). Having both highway=traffic_signals and highway=stop means there’s both a traffic signal and a stop sign at the same intersection, which would be ridiculous and extremely confusing to drivers.

To really find out the answer, you either have to study the code of routers (OsmAnd’s code is open source), or ask the developers.

[Edit:] I went ahead and contacted the makers of MagicEarth. I keep you posted.