Bus lanes
Bus lane tagging schemes in use in OSM
There are three schemas in common use in OpenStreetMap for representing bus lanes on normal roads: the busway=* scheme, the lanes:psv=* scheme and the bus:lanes=*
schema.
For dedicated, separate bus tracks, use highway=busway.
The busway=* scheme
- Main article: busway=*
This scheme indicates the presence of at least one bus lane on one or more sides of the road. The "opposite" term indicates a contra-flow lane, i.e. one where the direction of bus traffic is opposite to the direction of other traffic. The side of the road can be indicated with :left and :right suffixes.
The lanes:psv=* scheme
- Main article: lanes:psv=*
This scheme provides a count of the lanes reserved for public service vehicles (which include buses). It can specify the bus lane's direction relative to the direction in which the way is drawn.
This scheme can denote taxi-specific lanes too: its lanes: prefix forms
The bus:lanes=* scheme
- Main article: Lanes, see also Lane dependent restrictions and *:lanes=*
This schema provides keys per lane including access restrictions, so you can identify exactly which lane is the bus lane.
Distribution overview
The busway=* scheme | Lane count information (e.g. lanes:psv=1 )
|
Access information per lane (e.g. psv:lanes=yes|designated )
| |||
---|---|---|---|---|---|
Tag | Number of uses | Tag | Number of uses | Tag | Number of uses |
busway=lane, opposite_lane, ... | lanes:psv=<count> |
psv:lanes=<list> |
|||
busway:left=lane, opposite_lane, ... | lanes:psv:forward=<count> | psv:lanes:forward=<list> | |||
busway:right=lane, opposite_lane, ... | lanes:psv:backward=<count> | psv:lanes:backward=<list> |
| ||
lanes:bus=<count> | bus:lanes=<list> |
| |||
lanes:bus:forward=<count> | bus:lanes:forward=<list> | ||||
lanes:bus:backward=<count> | bus:lanes:backward=<list> |
Examples
Photo | "busway=*" scheme | "lanes:psv=*" scheme | "bus:lanes=*" scheme |
---|---|---|---|
Oneway with exclusive bus lane |
highway=* oneway=yes lanes=3 busway=lane |
highway=* oneway=yes lanes=3 lanes:bus=1 |
highway=* oneway=yes lanes=3 access:lanes=yes|yes|no bus:lanes=yes|yes|designated |
Oneway with designated bus lane and taxi plus bicycle allowed |
highway=* oneway=yes lanes=3 busway=lane cycleway=share_busway |
highway=* oneway=yes lanes=3 lanes:psv=1 cycleway=share_busway |
highway=* oneway=yes lanes=3 access:lanes=yes|yes|no bus:lanes=yes|yes|designated bicycle:lanes=yes|yes|yes taxi:lanes=yes|yes|yes cycleway=share_busway |
Oneway with conditionally designated bus lane and several other transport modes allowed |
highway=secondary oneway=yes lanes=3 busway:conditional=lane @ (Mo-Fr 14:00-18:00) cycleway:conditional=share_busway @ (Mo-Fr 14:00-18:00) |
highway=secondary oneway=yes lanes=3 lanes:psv:conditional=1 @ (Mo-Fr 14:00-18:00) cycleway:conditional=share_busway @ (Mo-Fr 14:00-18:00) |
highway=secondary oneway=yes lanes=3 access:lanes:conditional=(yes|yes|no) @ (Mo-Fr 14:00-18:00) bus:lanes:conditional=(yes|yes|designated) @ (Mo-Fr 14:00-18:00) bicycle:lanes:conditional=(yes|yes|yes) @ (Mo-Fr 14:00-18:00) taxi:lanes:conditional=(yes|yes|yes) @ (Mo-Fr 14:00-18:00) cycleway:conditional=share_busway @ (Mo-Fr 14:00-18:00) |
Dualway with conditionally designated bus lane and several other transport modes allowed into town Monday to Friday 6 - 9 clock out of town Mon through Fri from 14 to 18 clock |
highway=secondary lanes=4 lanes:forward=2 lanes:backward=2 busway:right:conditional=lane @ (Mo-Fr 06:00-09:00) busway:left:conditional=lane @ (Mo-Fr 14:00-18:00) cycleway:right:conditional=share_busway @ (Mo-Fr 06:00-09:00) cycleway:left:conditional=share_busway @ (Mo-Fr 14:00-18:00) |
highway=secondary lanes=4 lanes:forward=2 lanes:backward=2 lanes:psv:forward:conditional=1 @ (Mo-Fr 06:00-09:00) lanes:psv:backward:conditional=1 @ (Mo-Fr 14:00-18:00) cycleway:right:conditional=share_busway @ (Mo-Fr 06:00-09:00) cycleway:left:conditional=share_busway @ (Mo-Fr 14:00-18:00) |
highway=secondary lanes=4 lanes:forward=2 lanes:backward=2 access:lanes:forward:conditional=(yes|no) @ (Mo-Fr 06:00-09:00) access:lanes:backward:conditional=(yes|no) @ (Mo-Fr 14:00-18:00) bus:lanes:forward:conditional=(yes|designated) @ (Mo-Fr 06:00-09:00) bus:lanes:backward:conditional=(yes|designated) @ (Mo-Fr 14:00-18:00) bicycle:lanes:forward=yes|yes bicycle:lanes:backward=yes|yes taxi:lanes:forward=yes|yes taxi:lanes:backward=yes|yes emergency:lanes:forward=yes|yes emergency:lanes:backward=yes|yes cycleway:right:conditional=share_busway @ (Mo-Fr 06:00-09:00) cycleway:left:conditional=share_busway @ (Mo-Fr 14:00-18:00) |
is this only a bus_bay=*? |
highway=primary busway:left=* cycleway:left=share_busway |
lanes tagging tbd |
Which scheme to use?
The purposes of these schemes are similar, and with the exception of directly capturing information about the contraflow nature of a lane, the lanes:psv scheme logically implies the entirety of the busway scheme. The directional details of these schemes are literally orthogonal. Both schemes can be used together, but for maintanability it's probably best to pick one and stick with it.
- The busway scheme is simpler, and older. It says nothing about usage of the lane by taxis or other classes of Public Service Vehicle.
- The lanes:psv scheme is broader in scope, including taxis and other classes of Public Service Vehicle if used as given. It can be limited to just buses by using an alternative tag key, lanes:bus. It does not directly capture the detail that a bus lane is contraflow, but that can be inferred from the simultaneous presence of a oneway=* tag on the way.
- More recently written pages which are kept up to date, such as lanes=*, favour the lanes:psv scheme.
- lanes:psv=* is simplier than psv:lanes=* but is not specifying which lanes are bus lanes. And not always it is the lane on outer side of the road.
Cycle lanes
When a bus lane is shared with a cycleway=*, this is denoted with cycleway=share_busway. Note that if this is a contraflow lane, make sure to also add oneway:bicycle=no to and cycleway:side:oneway=-1 to the way (with side being left for right handed traffic and right for left handed traffic).
Services
See also
- Buses - the original "buses" topic, from where some of this information was moved.
- Lanes - the new :lanes suffix, for capturing even more lane-specific information.
- bus_bay=* - for a (short) lane dedicated to picking up and/or dropping off passengers, compatible with the busway=* scheme but not the lanes:psv=* scheme.