OpenStreetMap logo OpenStreetMap

pluton_od's Diary

Recent diary entries

Improving lane information on US 6

Posted by pluton_od on 17 July 2023 in English.

I want to improve/update the lane information on the US highways where I traveled (maybe I’ll come back there one day and use OSM for navigation). The first one is US 6 in Utah, a part of the route between Salt Lake City and Moab, where great Arches and Canyonlands National Parks are. Bing aerial imagery is pretty good and recent in the US, so it’s pleasant to use. It’ll be an ongoing project in between other mapping.

What I’m mapping:

  • number of lanes, turn lanes, change lanes (near intersections), placement;
  • removing note:lanes where it’s now redundant;
  • turn restrictions including implicit ones;
  • connectivity relations inferred from road markings;
  • occasionally aligning the road to the Bing aerial photos.
Location: Sky View, Utah County, Utah, United States

Contraflow HOV lanes

Posted by pluton_od on 5 July 2023 in English.

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:***/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):

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: 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

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:

  • for the HOV lane:
maxspeed=55 mph
name=Southeast Expressway HOV Lane
opening_hours=Mo-Fr 05:00-10:00
ref=I 93;US 1;MA 3

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

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.

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)
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)
hgv:backward:conditional=no @ (Mo-Fr 05:00-10:00)
hgv:lanes:forward:conditional=no|yes|yes|yes @ (Mo-Fr 05:00-10:00)
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)
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)
ref=I 93;US 1;MA 3
shoulder:backward:conditional=no @ (Mo-Fr 05:00-10:00)
trailer:backward:conditional=no @ (Mo-Fr 05:00-10:00)
turn:lanes:forward:conditional=|||merge_to_left @ (Mo-Fr 05:00-10:00)

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: North Commons, Quincy, Norfolk County, Massachusetts, 02269, United States