Adding turn lanes
What is a turn lane
A turn lane is an auxiliary lane demarcated on the road to specify directions to ongoing vehicles. Turn lanes serve two purposes:
- Provide directional information to the ongoing vehicles and
- Provide the lane information to be chosen for the vehicles changing their direction
Types of turn lanes
There are a total of 12 different turn lanes demarcated on the roads. They are:
Turn Lane | Representation |
---|---|
turn:lanes = left | ![]() |
turn:lanes = right | ![]() |
turn:lanes = through | ![]() |
turn:lanes = left;through | ![]() |
turn:lanes = right;through | ![]() |
turn:lanes = left;through;right | |
turn:lanes = left;right | ![]() |
turn:lanes = slight_left | ![]() |
turn:lanes = slight_right | ![]() |
turn:lanes = merge_to_left | ![]() |
turn:lanes = merge_to_right | ![]() |
turn:lanes:both_ways = * | ![]() |
road markings on the ground - © pdd.ua
Pre-requirements for mapping a turn lane in JOSM
Before mapping turn lanes activate the following preferences in JOSM to visualize the mapped turn lanes: preferences > Map Settings
-
Map Paint Styles > Lane and road attributes
-
Tagging Presets > lane attributes
-
Filter out non-road features with inverse filter:
boundary: | leisure: | landuse: | waterway: | amenity: | natural: | building:
Plugins
- Knife-tool: https://gist.github.com/jothirnadh/a10daeaef1498537ea56f0a65f7fdbc2
- TurnLanes-tagging plugin:
JOSM Preferences > Plugins > turnlanes-tagging
Mapping a turn lane
-
Check all roads in the imagery for turn lanes at junction points
-
Split the road into segments based on the total number of lanes for the segment. The easiest way for splitting the road is by using Knife_tool
-
For each road segment tag the turn lanes based on the road markings in the direction of the way. Eg.
turn:lanes=left|left;through|through
. Check OSM turn:lanes for reference. -
For bi-directional segments, use
turn:lanes:backward=
andturn:lanes:forward=
to specify turn lanes in each direction. -
Verify correct tagging using the
Lane attributes
style -
The simplest way to add turn lanes is by using turnlanes-tagging plugin
turn:lanes
and relations
We use relations for different purpose – for indicating turn restriction or collect separate ways into solid route. JOSM help us to handle them. But sometimes we are faced with not properly denoted relations. JOSM will inform about it while uploading our changes. You may ignore messages of level “Warnings” (if you only split ways and didn’t edit relations manually) but you have to fix all “Errors”.
QA for turn lanes mapping
While mapping turn lanes, there are a lot of scenarios are encountered in #153 and #144 mapping repos. All these scenarios are drafted in one place for validation purposes.
Different scenarios we came across while mapping
1. Parking lanes
In the U.S., when parallel parking spaces are marked, they are marked in one of three ways:
Here’s an example of the box marking style:
2. Counting number of turn lanes
If there are no clear cut demarcations on the road and yet cars are parked on either sides of the road, consider them as drive lanes. Case below:
3. Starting a turn lane
Turn lanes should begin exactly as per the marking in the imagery, not before or after.
4. Ending a turn lane
Turn lanes should terminate at the first highway junction after the start of the turn lane.
5. Turn lane forward
In case of bi-directional ways, the key turn:lanes:forward=* describes only the turning indications on the lanes in the same direction as the osm-way; while adding this we must view the road in the direction to the osm-way(on the direction where the osm-way arrow is pointing).
6. Turn lane backward
In case of bi-directional ways, the key turn:lanes:backward=* describes only the turning indications on the lanes in the opposite direction as the osm-way; while adding this we must view the road in the oppoiste direction to the osm-way(opposite to direction where the osm-way arrow is pointing).
Adding a turn:lanes:backward
tag
7. Adding dual carriageways:
When finding roads mapped as single carriageway while the imagery shows clear separation between roads, split the road where the physical separation starts and add dual carriageways.
When to add dual carriageway?
- Add Dual-carriage when
- you see physical separation betweens roads
- no relation is attached to the way.
- Add
turn:lanes
tag to both the ways.
8. Bicycle lanes and road shoulders
Road shoulders and bicycle lanes are ignored from the lane count. Both these roads are lanes=2
lanes=3 for the above example, ignoring the two cycle ways
-
Ignore bicycle lanes even though they are in the middle;example below:
The middle way is also a bicycle lane which is not counted while adding the
lanes
tag -
Additionally,
Strava global-heat cycle
layer can used to verify if a particular lane is a cycle-way.tms[16]:http://globalheat.strava.com/tiles/cycling/color3/{zoom}/{x}/{y}.png
9. Lane marked as a separate way
Do not add turn lanes in these cases where the only turn lane is already a mapped as a separate way.
10. Bidirectional turn lanes
These are the lanes marked with symbol representing both directions at a time.
Tag used for such lanes are turn:lanes:both_ways=*
Yellow lines on both sides of a lane also gives an indication of turn:lanes:both_ways=*
11. Mapillary Plugin to verify turn lanes
The imagery at some places is not very clear and at-times the turn-lanes are covered by cars. In situations like these Mapillary plugin
can be used. If there is Mapillary imagery coverage in that area, they can used to verify the presence of turn-lanes.
Name of the plugin: Mapillary
12. Lanes with restricted access
These are the areas on streets which are restricted for vehicular traffic.
In the above cases the areas with markings on the roads are not considered as a lane
13. Reverse direction turn lanes
These are the lanes specifically categorized to take U-turn or reverse-turn.
14. The order of the directions and valid combinations of values
-
none
itself is valid value but not in conjunction with other -
✅
turn:lanes=none|right
is equal toturn:lanes=|right
- we usenone
for “better readability” -
👎
turn:lanes=left||none|merge_to_right
- this combination of values is valid but there is mixingnone
and||
(empty) - this is not good choice. -
👍
turn:lanes=left|none|none|merge_to_right
orturn:lanes=left|||merge_to_right
-
❎
turn:lanes=none|none|none
orturn:lanes=||
- in this caseturn:lanes=*
tag is redundant, just specifylanes=3
or real number of lanes -
❎
turn:lanes=none|none;slight_right
- isn’t valid combination - “there are no turn indications” on the rightmost lane. Instead, must be used (based on https://github.com/mapbox/mapping/issues/180#issuecomment-225574666)
lanes=2
turn:lanes=none|through;slight_right
transit:lanes=continue|new_on_right
-
using *right
*left
values-
✅
turn:lanes=left|none|none
orturn:lanes=||right
orturn:lanes=merge_to_right||
orturn:lanes=left|left;through|none|slight_right|right|right
- 👍 -
❎
turn:lanes=|right|left|
orturn:lanes=none|right|left|through
orturn:lanes=none|left|none
- 👎 lanes that go in one direction should not cross with each other
-
-
using
reverse
value reverse
(u-turn) have to be on the leftmost lane for right-hand traffic or on the rightmost lane for right-hand
15.
to be continued …
Further reading:
- Mapping turn lanes: OSM wiki
- Mapping turn lanes in OpenStreetMap by Andrey Golovin
- Diary post by @Andygol : Mapping turn lanes in OpenStreetMap