How to map periodic contraflow HOV lanes?

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:

  1. opening_hours= is usually not considered on roads. This may be a case where highway:conditional=motorway @ (Mo-Fr 05:00-10:00) is correct, as the separate roadway doesn’t exist outside those times. Unfortunately, you still need highway=motorway for compatibility. Furthermore, due to how overriding works, you need to specific *:conditional=no @ (Mo-Fr 05:00-10:00) for each mode, as access:conditional=no @ (Mo-Fr 05:00-10:00) or motor_vehicle:conditional=no @ (Mo-Fr 05:00-10:00) will be overrideen by hov=designated etc. So it’s still not as simple as you think, and there’s advantage in 2 except for suffixing *:backward:*=.
  2. 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!

7 posts - 4 participants

Read full topic


Ce sujet de discussion accompagne la publication sur https://community.openstreetmap.org/t/how-to-map-periodic-contraflow-hov-lanes/100893