Visualization can change how you view mapping, imagine that!
Posted by JPinAR on 16 August 2025 in English.Background
I’ve mapped in OSM for many years now, but more of my work and been Bike-Pedestrian related, and I’ve only just come back around to mapping streets their widths and their number of lanes as a means to start evaluating crossings in our area. This means, despite my many years of mapping, I’m pretty terrible at getting the number of lanes forward/backward/both_ways and the corresponding turns associated with them correct. It’s just not that intuitive, although I can’t think of a better option.
My solution
A while back I discovered the JOSM ‘map paint styles’ specifically the lanes and enhances lane styles and combined with some tagging presets I’ve gotten acceptable at mapping major roads and the ability to visualize if I’m doing things right is a huge benefit.
The 12m (39’) of road that once visualized, haunts me.
When mapping with visualizations, I ran across a short middle lane that is marked as not for use in either direction. Without visualizations, this section doesn’t really bother me that much. The road is 20m wide with 2 lanes each 4m in both directions. The middle part is irrelevant, as no should drive here or use it for turning.

However, turning on visualizations I realize that there really is a lane there that takes up that every 4m of space and while at the moment I have is marked as slight right just to indicate that it really shouldn’t be used and anyone there needs to move into the neighboring lane in the same direction, not completely accurate but there isn’t a “NO” option really.

I hope most people can see the conundrum that the visualization here creates and this begs the question instead of having only a “both_directions” option maybe we need a “neither_direction” or just “buffer space” option to indicate that there is 4m of space in the roadway no intended for any use. Something that cyclelanes already have a ‘de facto’ tag for in ‘cycleway:buffer’ to indicate the buffer between traffic lanes and bike lanes, if any exists.
Medians with turn lanes, the visualization haunting grows.
Then I tried to start mapping out a section of road that is separated by a median but has turn lanes only 80m (260’ apart), and while I’m mapping this in the back of my mind I’m thinking about my “neither way” or “buffer space” idea above and how that would play for this section of road. If I had that option, I’d not have to split the road into two direction but treat it like one way again. I’d then only need to specify that there is a barrier and it’s width between the forward and backward direction of traffic and that barriers width and type (paint only or physical separation again I think to the ‘de facto’ tag for cycling ‘cycleway:separation’ to indicate if there is physical separation between the bike lane and the traffic lanes it would simply be this but between traffic lanes.

Connecting the dots lanes
This finally got me to thinking about an intersection near me that is a perfect example of real life breaking, or at least significantly challenging, the way I think about OSM and mapping all the things between curbs within a right of way. There is a relationship that without visualization is very hard to conceptualize, just happens all the time within right of ways. This is a relationship of ‘type=connectivity’. In the example below, two lanes of traffic turns into 5 and in this relationship given the example below this gets defined as ‘connectivity=1:1,2,3|2:4,5’ or in laymen terms the first (left) lane allows drivers to enter into either the left two turn lanes or left through lane and the right lane lets users enter the right through lane or right turn lane.

Being this is all traffic lanes and and in one direction this actually isn’t that hard to follow in reality.
This brings me to the challenge that I’m presented when the present convention resists treating bike lanes as lanes of traffic only with ‘motor_vehicle=no’ and ‘bicyle=designated’ because without counting traffic lanes as part of the lane count then I can’t address the following intersection like so.

The interesting thing for me is that some of the things that the bicycle community have brought to the table could have interesting application for roads and bike lanes alike making the mapping of their combination actually more consistent and with less splitting into two ways for short sections before recombining them just because there is a short section of median.
To use the bike example above, it would be very simple if all lanes are counted as lanes to simply say there is a physical separation (“armadillo bumps” as I call them) and buffer space of .5m between lanes 2&3.
Same concept but for vehicles
If this was a 4 lane road with two lanes in each direction and a median in between that is 4m wide then you could just as easily say there is a physical barrier of curbs that are 4m wide between lanes 2&3, and the concept works consistently for bicycle and vehicle lanes alike.
Paint but not physical barrier?
To go back to my first example since the concept of physical separation and buffer zone as a paint only none physical buffer space both exist then the very first example of this post should simply have 4 lanes 2 forward and 2 backward and a 4m buffer space between lanes 2&3

How OSM vehicle lanes crossing bike lanes breaks OSM bike lanes today.
As OSM started out with traffic lanes first and bike lanes came in a bit later as something more like an afterthought and almost all bike lanes where simply lanes attached to either the right or left side of a road and would work in either forward or counter flow or combinations the easy way to add these on without having to treat them as lanes of traffic with restriction on type the idea was to slap a ‘cycleway:right=track’ or ‘cycleway:left=track’ onto an existing road and ‘oneway=no’ on to that if the lane is bi-directional, with a default assumption that they are oneway the inverse or roads.
Then this occurs…
I’m staring with the picture here because I really want for people to think about this for a moment and how would you ever hope to map this at all if ‘cycleway:right=track’ implied the bike lane is ALWAYS on the right side of the traffic lanes. (Hint: It can’t, so the real question is how would we.)
The answer here is to treat all lanes as lanes and allow traffic to for a time flow through a bike lane before it’s prohibited again. I’m not going to rehash the techincal ‘how-to’ around this concept as I have it covered in a Draft of US Cycling practices over on the OSM wiki linked here.
Conclusion
The more and more I have used tools to visualize the lanes I’m mapping as something more than a 1-dimensional line but more as a 2-dimensional object, the more and more I’ve come to the opinion that while interstates do need to be treated as two separated one way “ways” roads, however but for city streets that switch regularly between median and non-median or median with turn lane the more and more I’m thinking that instead of splitting and recombining and splitting and recombining it might make sense to borrow the ‘separation’ and ‘buffer’ concepts for physical and non-physical separations between lanes of all types. Likewise, to fully leverage the connections concept any bike-ped concept that doesn’t align to one side of a traffic lane or another, then all traffic lanes need to be counted traffic lanes even if they are ‘motor_vehicle=no’.
Buses and parking even?
This also would fix bus pull offs, and even buss pull offs that double as bike lanes. (I’m not sure if lanes that are just care parking though count as lanes similarly as a “buffer” might, but I lean toward an answer of ‘yes’ if they fall between two traffic lanes of any type, so between a traffic lane and bike lane for instance.)
Discussion
Comment from Mikhail Kuzin on 19 August 2025 at 05:31
Hi, thanks for the nice overview of your experience. We are working on intersections and their mapping and are planning to release a specialized editor with improved visualization soon.
Which also touches on the issues you raise. I made a small example of different methods, in the area you indicated. I hope this set of changes will be useful and interesting to you.
both_ways + buffer lane example
To solve one of the problems, we propose to expand the understanding of the placement tag. And then very interesting opportunities for precise mapping of lanes and their relationships open up.
placement extension
Thank you for your article.
Comment from Udarian on 19 August 2025 at 21:46
Personally I both agree but also disagree here, I personally would like lane based tagging for sections of “lanes” and more generally buffer spaces between directions of travel on bidirectional roads. I start to disagree when this is applies to actually dual carriageway roads. As I see it if there is any kind of barrier (including kerbs) between directions of travel that makes the individual carriageways different areas and thus those different areas should be represented as different ways. So in essence I would like tagging for this but only have it used if the separator is purely made of paint (paint lines on roads), once there is an actual barrier between the carriageways should be split.
Comment from JPinAR on 21 August 2025 at 00:50
Udarian: I think the ‘nuance’ is centered around when does at ‘dual carriageway’ road cease to become a ‘dual carriageway’ and become just a road with occasional traffic islands. I think it’s easy to say on the extremes.” I know one when I see one, but there is certainly a “grey/gray area” that straddles the lines and just like there are a few distinct ways to map a traffic light that vary in detail I think there can be room to give some deference in the “how” something is mapped and honestly from a routing perspective both ways give the same detail about where to get in turn lane and where to trun as their counterpart.
Mikhail: I looked at your demo for a moment before it clicked. “I know this intersection! I bike it every weekday! I know that this is maybe a big ask but I’d love to see what this would look like for a bike-ped corridor. (I get this as a huge ask because this is not only asking for the intersection for traffic to be treated as one “unit” but the crossings as well.
Comment from Mikhail Kuzin on 21 August 2025 at 09:06
It was hard to implement the logic for cars and roads correctly, but for bicycles it is still 10 times more complicated. Considering that in OSM you can tag as a
cycleway:*near a regular road or a separate path.But this does not mean that this should not be done. For now, we have not yet included the rendering of bicycle paths - since it is very unstable and glitchy.
But the pedestrian (
highway = footway + footway = crossing) part at the intersection is worked out quite well.We will get to bicycles if the editor is in demand by mappers.
Comment from Baloo Uriza on 21 August 2025 at 17:50
On that buffer with the orange hash marks, that should be turn:lanes:both_ways=none and access:lanes:both_ways=no
Comment from Mikhail Kuzin on 22 August 2025 at 06:36
Hello, Baloo Uriza!
I see that you have been mapping for a long time and a lot. And you have a lot of experience with roads and are one of the few who use relation:connectivity.
I would like to ask you, could you write your opinion about such an alternative for indicating connectivity at intersections. connect:lanes
Using this changeset as an example.
There are two viewing modes (right half) “Polygons and marking” and Connection frame - for checking connectivity.
Although these are quite old edits, but perhaps you will remember. I deleted all the relations and replaced them with these tags. There are also a number of other tags that are help a perfect rendering of the intersection.
I would be very grateful to you.
Comment from Baloo Uriza on 31 August 2025 at 14:52
I’m at a wait-and-see moment with connectivity relations to see what gets adopted and widespread editor support. Connectivity relations have some support in JOSM but none in Osmand, which tends to support the most tagging schemes. So far the one that looks most promising to me is the one that works complementary to turn lane tagging.
Also looking over the story again, looking at the Connecting the Lanes section, that one with the cycletrack and the road? I’d map those as two different parallel ways thanks to the buffer prohibiting crossing (even if they cheaped out and didn’t install physical barriers).