Wednesday, March 2, 2011

Dual Carriageways

When I first started editing OSM, I was mostly doing residential roads and bike trails. Eventually I worked my way to major roads. Some of them had dual carriageways. In my case these were also US/State highways. Somehow I got the two mixed up in my head and thought that mapping any dual carriageway road required relations. Since I didn't know much about relations at the time I was kind of scared to touch them. Turns out relations ARE used to describe highways however they are not required for dual carriageway roads.

Since I've recently been working on "dualizing" roads in the Kansas City area, I thought I would throw up a quick post about the process. It has probably already been done (I seem to recall a "TIGER fixup" tutorial that described the process) but here is my version.

To Start off with, let's define a dual carriageway road. There may be some difference of opinion (there usually is in OSM) but in general it is any road where the opposing streams of traffic are separated by a physical barrier. A grass median (think interstates) or a strip of trees in the middle of a boulevard are prime examples. Sometimes the barrier is just a small strip of raised pavement or bricks. Regardless, it is something that would make your car go "bump" or even cause damage if you were to try and drive through/over it.

The Census TIGER data that was imported for all of the US just has a single centerline for any given road. The Census Bureau doesn't care about routing topology. They just want basic road centerlines that they can use to carve the country up into their tracts for statistical purposes. There is a tiger:separated tag that I presume is supposed to indicate dual carriageway roads but I have only seen this set to yes a handful of times so as far as I am concerned, that tag can be ignored.

So why bother splitting things up? Well for interstates it is pretty obvious. The ways are far enough apart from each other that you really need to be able to distinguish between the two ways for navigation purposes. They may also be part of different routes (where highways overlap interstates) or have other differentiating characteristics. But even on smaller roads, it can be important detail. For example, see this intersection in Overland Park (part of the Kansas City metro area):

This is obviously going to cause problems for routing and is likely to set off a flurry of annoying "recalculating" messages in navigation devices if you are trying to go east from that residential road.

Medians in the middle of roads are also a visual navigation aid for drivers so having the map show where the road is split is a good thing.

Here is another short section of road that I will convert to a dual carriageway. In this case it won't really affect routing very heavily but if we are going to have the best map in the world then we need details!

The first task is to split the way at the beginning and end of the dual carriageway section and mark the section as a one-way street using the oneway=yes tag. Now adjust the geometry to fit into one lane or the other.

You will see that JOSM (as of the style update last week!) puts black arrows along the way to indicate its one-way-ness. Potlatch does something similar. You may need to reverse the direction of the way to make sure the arrows are pointing in the right direction.

The next step is to draw in the other side of the road. Then copy the highway=* classification as well as the name and the oneway=yes tag (and possibly other tags, as appropriate) from the old way to the new one. To reduce typo errors, I usually just copy the old way and then paste the tags onto the new one using CTRL+SHIFT+V in JOSM. Then I remove any tags I don't want to duplicate, like all the tiger: tags since my new way is not TIGER data.

You will notice that they look slightly different. The old way still is still tagged with tiger:reviewed=no but the new one doesn't have a tiger:reviewed tag. JOSM renders an extra casing around unreviewed TIGER roads to highlight them. I usually only remove this tag if I have done a thorough survey on the ground. In this case I am just using aerial imagery so I will leave it alone. I also usually try to tag the new way I created with a source tag (source=bing in this case) to indicate where I got this information from. That way if someone has a source that they know is better or more up to date than bing, they can update my work in the future.

Finally, I need to fix the connecting road so that the topology is still correct. In this case it actually involves dualizing that road as well.

In this case I brought the intersecting road to a point on the north way. Depending on the situation I sometimes do this or leave them straight and have two intersection points instead of one. Here I felt like using a single node more closely matched the path a car would actually take to turn from one street onto the other. There is always a balance to be struck between topology, geometry and level of detail.

And that's it. Nothing too complicated really. TL;DNR:

  • Split way, tag with oneway=yes
  • Draw new way
  • Copy name, highway and oneway tags to new way
  • Fix intersecting roads
  • PROFIT! (optional)
On the miles long roads I've been working on in Kansas City I often make several passes back and forth, mapping additional things like traffic lights (highway=traffic_signals) which can be identified from pavement markings and shadows on the ground (obviously only if imagery is good enough).

Some intersections take a bit of work. Here is a pretty complex one involving US 69, College Boulevard, on/off ramps and a couple of bridges for good measure.

Here is a simple one but it involves a smaller road that splits right before it intersects the big road:

And as the last image for this post, I give you the rendered version of the area I used as an editing example:

That's all!

No comments:

Post a Comment