Some major urban streets in Brazil have dedicated bus lanes with signs allowing other vehicles to enter the lane shortly before intersections in order to make a turn. This can be seen on a large sign on the right side here.¹ However, the bus lane itself is not a mandatory turn lane: buses may continue straight, and vehicles in the other lanes are also not required to turn.
If I use the yes value for the bus lane in vehicle:lanes=* in those sections, this would indicate that the lane can be used by regular vehicles for a through movement across the intersection, which is incorrect. If I leave the bus lane with its default value, a smart lane assist system may instruct the driver to make the turn from the second lane from the right, which may be dangerous.
What is the correct way to represent this?
(In this particular case, the lane is bus-only at certain times and open to all vehicles at other times. Local law also allows entering the lane to access adjacent properties, which means that the legal vehicle:lanes value for that lane is destination most of the time here.)
¹ The sign reads: “Dedicated Lane: ↱ Monday to Friday - 6 AM to 9 AM and 4 PM to 8 PM, except buses” (Portuguese: ¨Faixa Exclusiva: ↱ 2ª a 6ª - 6 às 9h, 16 às 20h Exceto ônibus")
This is enlightening. I think a complete representation (including the details) in this case would probably be like this: (using psv instead of bus to reflect that local law allows minibus and taxi in this type of lane, despite no mention in signage; forgot to mention that):
For the stretch before and after this sign:
– oneway=yes
– lanes=3
– lanes:psv=1
– vehicle:lanes=yes|yes|destination
– psv:lanes=yes|yes|designated
– lanes:psv:conditional=0 @ (Su,Sa 00:00-24:00; 20:00-06:00,09:00-16:00)
– vehicle:lanes:conditional=yes|yes|yes @ (Su,Sa 00:00-24:00; 20:00-06:00,09:00-16:00)
I am not entirely sure of the order in which the last four tags would be applied by applications. The wiki seems to suggest that turn:psv:lanes:conditional would be redundant, since turn:psv:lanes, which refers to a more specific vehicle type, would override both turn:lanes and (implicitly) turn:lanes:conditional. But I could be wrong, and in that case, if turn:psv:lanes:conditional is necessary, then I think it requires the parent turn:psv:lanes to be present.
Does this rule apply generally, or only where signed?
For example in my jurisdiction, drivers are always allowed to drive in dedicated bus lane for up to 100m for the purposes of entering or exiting a road [ref], and I interpret the “Don’t map local legislation if not bound to specific objects” guideline to mean that we don’t need to tag anything different, routing engines can be made aware of the jurisdiction traffic laws instead.
It applies generally, based on the Brazilian traffic code. Translating from Portuguese: “Chapter XV - OFFENSES. Article 184. Driving a vehicle: I - in the right lane or track, regulated as exclusively for a specific type of vehicle, except for access to adjacent properties or right turns: Infraction - minor; Penalty - fine”
(Like in OSM, in the Brazilian traffic code, “vehicle” means essentially the same as vehicle=* in OSM, covering the same child access tags/transport modes - notably, bicycles too.)
In my city, local authorities have placed those signs for clarity, as there are many tourists and drivers from nearby cities that may have never seen a dedicated bus lane before and don’t know this rule. Turning right across a bus lane is often much more dangerous than entering it in advance.
In theory, this sign uses a symbol that represents a mandatory right turn if entering the lane during times when the lane is bus-only. This may be rarely enforced though. There are different symbols to represent an optional right turn.
This doesn’t seem to be covered by the Vienna Convention, so it likely varies considerably from country to country. The UK Highway Code allows it (rule 141), while the German StVO apparently doesn’t allow it.
In the US, it appears some states/cities do allow it. If this varies from city to city or state to state, as is the case in many similar situations in OSM, explicit tagging may be required in some areas. Defining a new access value (such as turn_only) for use only in *:lanes tags would simplify the representation a little in this case by eliminating the 4 turn:*:lanes tags, but would require an additional psv:lanes:conditional.
If you have some dedicated bus lanes where you can’t enter to turn, and others that you can enter to turn within one jurisdiction and these are signposted as such, then yes I think we should tag that. But if it’s a general traffic law for that jurisdiction, then it should be set at the routing engine.
I guess you could try and tag this for each instance, I don’t think it’s harmful to do so, just it seems better to implement it in the routing engine.
Proposal:Defaults - OpenStreetMap Wiki is one way of tagging specific rules at the jurisdiction level. For example on this jurisdiction boundary Relation: New South Wales (2316593) | OpenStreetMap we have def:highway=footway;access:bicycle=no to which tags the legislation that bicycles aren’t allowed on footways by default. You can still go around and tag them as bicycle=no but this default rule makes that unnecessary.
The can cross a dedicated bus lane to turn rule could be done as a def tag like this, and/or implemented in the routing engine as a configuration setting.