Hi.
I’ve manually replaced deprecated hov=lane
tags with hov:lanes=*
in the US over time, please see pluton_od's Diary | Contraflow HOV lanes | OpenStreetMap for more information. And I now have the last, most complicated case. I’m reposting a part of that diary here in order to consult the community how to map this in the best way.
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: overpass turbo. 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 Changeset: 138024161 | OpenStreetMap.
I see two ways of mapping the HOV lane:
1. 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:
- Once in the HOV lane, drivers do not have access to exits
Tagging is simpler with this approach:
- for the HOV lane:
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.
2. As conditional
tags on the interstate
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 trying out the first approach locally, carefully mapping and tagging the HOV lanes separately. I can upload the .osm
file somewhere with what I have if anyone is interested how it looks.
Comments
User Kovoschiz in the comments adds this:
opening_hours=
is usually not considered on roads. This may be a case wherehighway:conditional=motorway @ (Mo-Fr 05:00-10:00)
is correct, as the separate roadway doesn’t exist outside those times. Unfortunately, you still needhighway=motorway
for compatibility. Furthermore, due to how overriding works, you need to specific*:conditional=no @ (Mo-Fr 05:00-10:00)
for each mode, asaccess:conditional=no @ (Mo-Fr 05:00-10:00)
ormotor_vehicle:conditional=no @ (Mo-Fr 05:00-10:00)
will be overrideen byhov=designated
etc. So it’s still not as simple as you think, and there’s advantage in 2 except for suffixing*:backward:*=
.hov:minimum:conditional=2 @ (Mo-Fr 05:00-10:00)
is not required.hov:minimum=2 @ (Mo-Fr 05:00-10:00)
is always true.
Due to the overriding (I don’t know much about this), there may be a need to add extra tags to the separate lane: tag access=no
(always) and hov:conditional = designated @ …
(during certain times).
There are a few other comments there: pluton_od's Diary | Contraflow HOV lanes | OpenStreetMap.
What is the best way to map these HOV lanes?
Thanks!