HOV lanes
According to wiki, hov=lane
is
“Deprecated and nonstandard. If seen on a way, this value should be removed; instead, hov:lanes=*
is the preferred tagging for HOV access restrictions per lane.”
This makes sense as with this value, it’s not clear which lanes require HOV. There were ~8k road segments with the value, all in the US. I’ve systematically replaced them with the more specific hov:lanes
, here’s a history graph: https://taghistory.raifer.tech/?#***/hov/lane. Some of the ways already had hov:lanes
, so I removed hov=lane
; the majority had a comment in note:lanes
like “left lane is hov” (probably from an import), so I used it to set the lanes; and for the rest, I checked the images (Bing/Mapbox/Mapillary) to set the correct lanes. All the changes were done manually (often in bulk).
One more complicated case was in Alexandria, VA where two streets have their right lanes designated to HOV during certain times. Mapillary allowed me to update those correctly with a tag like hov:lanes:forward:conditional = ||designated @ (Mo-Fr 16:00-18:00)
: https://www.openstreetmap.org/changeset/137988567.
Contraflow HOV lanes near Boston
The last 80 segments are the most complicated yet. They are for a part of I-93 south of Boston, MA: https://overpass-turbo.eu/s/1wXB. The complication comes from this: note:lanes = during rush hours, 5 lanes (left one hov) in peak direction and 3 in off-peak direction
. This is confirmed by Southeast Expressway HOV lane, whereas Boston I-93 HOV Lane has an image of it.
I’ve mapped the permanent barriers between the directions in https://www.openstreetmap.org/changeset/138024161.
I see two ways of mapping the HOV lane:
As a separate way along the interstate
but in the opposite direction. Even though it’s one lane of the already mapped road (in the opposite direction), there is always a physical separation (present when the lane is open), so it makes sense to map it separately; also there is no interaction of these two directions. Tagging is simpler with this approach:
bus=designated
change=no
hgv=no
highway=motorway
horse=no
hov:minimum=2
hov=designated
lanes=1
maxspeed=55 mph
maxweight=5
motorcycle=designated
name=Southeast Expressway HOV Lane
oneway=yes
opening_hours=Mo-Fr 05:00-10:00
ref=I 93;US 1;MA 3
shoulder=no
trailer=no
— opening_hours
is important; I’m not sure how else to indicate that this lane is present only during certain hours.
- the regular road needs to indicate fewer lanes, meaning if it has
hgv:lanes=no|no|yes|yes|yes
lanes=5
turn:lanes=||||merge_to_left
it now also needs
hgv:lanes:conditional=no|yes|yes|yes @ (Mo-Fr 05:00-10:00)
lanes:conditional=4 @ (Mo-Fr 05:00-10:00)
turn:lanes:conditional=|||merge_to_left @ (Mo-Fr 05:00-10:00)
These new lanes need to be mapped accurately parallel to the road and added to the road relations, which is not a fast process. Yes, the result would look unusual — two extra roads in the opposite direction along the highway.
This is simpler in mapping, but would create a lot of extra conditional
tags because the road wouldn’t be one way and the extra, HOV tags would be mapped as *:backward:conditional
. An example segment would go from 23 to 35 tags:
attribution=Office of Geographic and Environmental Information (MassGIS)
bicycle=no
bus:backward:conditional=designated @ (Mo-Fr 05:00-10:00)
change:lanes:backward:conditional=no @ (Mo-Fr 05:00-10:00)
change:lanes:forward:conditional=not_left|yes|yes|yes @ (Mo-Fr 05:00-10:00)
condition=good
foot=no
hazmat=designated
hgv:backward:conditional=no @ (Mo-Fr 05:00-10:00)
hgv:lanes:forward:conditional=no|yes|yes|yes @ (Mo-Fr 05:00-10:00)
hgv:lanes=no|no|yes|yes|yes
hgv=designated
highway=motorway
horse=no
hov:backward:conditional=designated @ (Mo-Fr 05:00-10:00)
hov:minimum:conditional=2 @ (Mo-Fr 05:00-10:00)
lanes:backward:conditional=1 @ (Mo-Fr 05:00-10:00)
lanes:forward:conditional=4 @ (Mo-Fr 05:00-10:00)
lanes=5
massgis:way_id=152796
maxspeed=55 mph
maxweight:backward:conditional=5 @ (Mo-Fr 05:00-10:00)
motorcycle:backward:conditional=designated @ (Mo-Fr 05:00-10:00)
name=Southeast Expressway
oneway:conditional=no @ (Mo-Fr 05:00-10:00)
oneway=yes
placement=right_of:2
ref=I 93;US 1;MA 3
shoulder:backward:conditional=no @ (Mo-Fr 05:00-10:00)
source=massgis_import_v0.1_20071009092358
surface=asphalt
trailer:backward:conditional=no @ (Mo-Fr 05:00-10:00)
turn:lanes:forward:conditional=|||merge_to_left @ (Mo-Fr 05:00-10:00)
turn:lanes=||||merge_to_left
width=61.0
I doubt that any program would parse all this information, and it would be confusing to humans too.
I’m going to follow the first approach, carefully mapping and tagging the HOV lanes separately. Please comment if you have any ideas about this.
Location: