Buses
Feature : Buses |
Description |
A form of public transport |
Tags |
Buses, coaches and trolley buses are forms of public transport that operate mainly on the road network. The system consists of bus routes calling at bus stops and bus stations and have a number of related features.
Stops and bus stations
Bus stops
The common way to map bus stops is using a node with highway=bus_stop beside the highway at the point where passengers would wait immediately prior to boarding the vehicle. This may be in a suitably positioned bus shelter, or by the bus stop pole. It might be a few meters from the point where one enters the vehicle. Add the name of the stop (as it appears on the stop, or on a timetable) using name=*. Many mappers also add public_transport=platform, which can also be used for all types of public transport.
Bus/public transport stations
Bus stations are represented by using a node or area tagged with amenity=bus_station[1]. One may add also public_transport=station[2]. Some mappers add bus=yes if they use public_transport=station alone.
Bus routes
Bus services are mapped by marking all elements that belong to a route on members of a relation. This includes all the road segments (ways) the bus runs along and the bus stops (nodes or sometimes polygons) the route serves.
Use one relation per direction (also called variant) of a service route, tagged with type=route+route=bus/route=trolleybus.
Route master relations
To hold the variant bus relations together, another relation is used with type=route_master+route_master=bus/route_master=trolleybus.
To identify a bus service as part of a bus network, use operator=* and network=* tags.
Bus lanes and tracks
- Main article: Bus lanes
Buses generally run on normal highway=*[3] roads, but sometimes have special provision made for them.
There are two schemas in common use in OpenStreetMap for representing bus lanes on normal roads: the busway=* (or bus_bay=*) scheme which indicates the presence of at least one bus lane (or bay) on one or more sides of the road, and the lanes:psv scheme which provides a count of lanes reserved for public service vehicles (which include buses) and their directions. Both schemes are compatible with cycleways. Both can be used at the same time; for more information see Bus lanes.
The two commonly used schemas suffice for most maps. However lane-specific information applicable to bus lanes can be captured too with the advanced :lanes suffix.
It is useful to provide access=* and maxheight=* tags for ways which include bus lanes, where appropriate. For Trolley buses the wires should be included using trolley_wire=yes.
For dedicated, separate bus tracks, use highway=busway. Example
Adding a bus route to OpenStreetMap
Step 1 - Make sure that each bus stop in the route has been added to OpenStreetMap
Bus stops should, for more simplicity and ease, be added as a node at the location of the pole or shelter. Some stops have been added as ways or polygons, which is completely valid, however, adding the stops as nodes keeps the route cleaner and easier to maintain.
Some people use stop position nodes on the way covered by the route as well as using a node beside the road. Using a public_transport=stop_position node on the highway can be useful in some rare cases, but is usually unnecessary. The simple and encouraged way to add a bus stop is as a node at the location of the pole or shelter.
If a bus station is present with several stops all part of the same station, a stop area relation should be used to indicate that the stops are all part of the same station. Only the individual stops, and not the stop area relation, should be added to bus routes.
Add the following tags to the bus stop:
Tag | Importance | Description | Examples |
---|---|---|---|
highway=bus_stop | ! Required | Describes this feature as a bus stop. Most common tag. | highway=bus_stop |
public_transport=platform | ? Optional | For describing that this feature is a public transit platform, serving public transport routes. This is an approved tag to use for bus stops, even though it is not used in the same way as in common English. Less common, but approved tag. | public_transport=platform |
name=* | ‽ Recommended | Name of the bus stop, especially when there exists no public_transport=stop_area. If a stop area relation exists, then this tag can include the numbering of the platform in addition to the bus stop name. | name=Martin Luther King Junior Boulevard at Stateside Drive |
ref=* | ‽ Recommended | Reference code of the bus stop. | ref=3154 |
local_ref=* | ‽ Recommended | The reference of a bus stop in a bus station. If a bus station has a large number of buses arriving, many smaller bus stops, each with their own local_ref=* , will be present. This tag is usually only needed in bus stations with several bus stops.
|
local_ref=C |
network=* | ‽ Recommended | The network of the bus stop. This can either be an abbreviation or full name, depending on the network. Check other bus routes or bus stops near the one being mapped to find out how the network should be tagged in the area. | network=CHT, network=London Buses, network=NYC Buses, network=TNSW |
operator=* | ‽ Recommended | Name of the company operating the buses that stop at the bus stop. If several different operating companies serve the stop, use a semicolon (;) to separate the different operators in the value of the tag. | operator=Arriva |
shelter=* | ‽ Recommended | 'yes' if the stop is protected from the rain by a shelter. 'no' if it is not. | shelter=no |
departures_board=* | ‽ Recommended | This tag indicates the type of departures board present at the bus stop. This could be a paper timetable, a live information display, neither, or something else.
departures_board=no indicates none. |
departures_board=timetable |
bench=* | ‽ Recommended | 'yes' if a bench for riders to sit on is present at the stop. 'no' if not. | bench=yes |
bin=* | ‽ Recommended | 'yes' if there is a trash can at the bus stop. 'no' if not. | bin=no |
tactile_paving=* | ‽ Recommended | 'yes' if tactile paving (small bumps at the edge of the platform to alert visually impaired riders when they are walking into the road) are present. 'no' if not. | tactile_paving=no |
layer=* | ! Required in multi-level bus stations. | For where the associated road is not at ground level. Essential with complex multi-level situations where there would otherwise be doubt as to which road (or stop_position) it was associated. | layer=-1 |
lit=* | ‽ Recommended | 'yes' if the bus stop is lit up at night. 'no' if not. | lit=yes |
surface=* | ‽ Recommended | The surface of the ground where the bus stop is located. | surface=concrete |
This table is a wiki template with a default description in English. Editable here.
After ensuring that each bus stop is present, move on to step 2.
Step 2 - Create the new bus relations
According to the PTv2 schema, one relation must be created for each variation of the route. For example, a bus route with both Northbound and Southbound buses should be mapped as two separate relations. If the bus route is a loop, only one relation is needed. If the bus route has some buses that start out half way through, serving only the second half of the route, but following the same route as other buses, a separate relation is needed for that variation.
To create the bus route relation for one of the directions the bus travels, select the first stop that the bus stops at and create a new relation from it.
To create a bus route for the weekend/weekday variation of the route, use the opening_hours=* key to differentiate between the variations.
Add the following tags to the new relation:
Tag | Importance | Description | Examples |
---|---|---|---|
type=route | Mandatory | For indicating that the relation is a route. | type=route |
route=bus | Mandatory | For indicating that the route is a bus route. | route=bus |
ref=* | Very important | For indicating the reference code of the route. If none exists, the name=* tag is required instead. The bus route must have some identifier to be useful. | ref=29C |
public_transport:version=2 | Important | This tag is useful for users of OSM transport data, because it lets them know that the route has been added according to the new system PTv2. It makes parsing and validating easier. | public_transport:version=2 |
operator=* | Recommended | The name of the company or organization that operates the bus route. | operator=Triangle Transit Authority |
network=* | Recommended | The network of the bus route. This can either be an abbreviation or full name, depending on the network. Check other bus routes or bus stops near the one being mapped to find out how the network should be tagged in your area. | network=CHT, network=London Buses, network=NYC Buses, and network=TNSW |
opening_hours=* | Recommended | The opening hours of the bus route. Use this tag for differentiating between a weekend and weekday routes. This should include the time between the first bus of the day starting out (in the direction being mapped - different directions can have different opening hours) to the time of the last bus of the day arriving at the last stop of the route. | opening_hours=Mo-Fr 07:23-18:44 |
interval=* | Recommended | The time between arrivals at any given stop along the route. Also known as the service frequency. Use HH:MM:SS, H:MM:SS, HH:MM, H:MM, MM, or M format. The example on the right is for a bus route that operates every 6.5 minutes. | interval=00:06:30 |
duration=* | Recommended | The duration of the bus route, or the time between the bus leaving the first stop and arriving at the last stop. The example on the right states that the bus runs for 31 minutes from end to end. Use HH:MM:SS, H:MM:SS, HH:MM, H:MM, MM, or M format. | duration=00:31 |
fee=* | Recommended | 'yes', if a fee is required for riding the bus route, and an optional (but still important) charge=* for the amount of the fee. 'no', if no fee is required. | fee=yes+charge=2.25 USD |
bicycle=* | Recommended | 'yes' if bicycles are permitted on the bus. Buses that permit bicycles often have racks on the front for storing them. | bicycle=yes |
wheelchair=* | Recommended | 'yes' if wheelchairs are accommodated. 'no' if not. Routes that accommodate wheelchairs have special ramps that can be laid down for wheelchairs to enter the bus. There will be a dedicated area in the bus for wheelchairs that may have straps or a cushioned pad that the wheelchair can the reversed up to and the brakes applied to hold a wheelchair in place. | wheelchair=yes |
from=* | Recommended | The name of the location where the bus is coming from. This does not have to be the name of the bus stop. | from=Southern Village |
via=* | Recommended | The name of an important stop along the route (for example, the turning point of a loop line). Many bus routes do not have an important via stop, so in the case of trying to add such a route, don't use this tag. | via=Franklin Street |
to=* | Recommended | The name of the destination of the bus. Many buses display a banner across the top of the bus with the destination. | to=Eubanks Road Park and Ride Lot |
name=* | Recommended | This article or section contains questionable, contentious or controversial information. See the talk page for more information. Descriptive naming is generally frowned upon. This recommendation has attracted criticism many times over the years. The 'name' of a bus route should follow a specific format and is not the official name of the bus route. This tag is more of a description of the route than the actual name of the route. To add the name, use the following format: "name"="Bus <ref>: <from> => <to>". If the bus route has a "via", you can use "name"="Bus <ref>: <from> => <via> => <to>", however using via in the name is optional. Note that "->", "-->", or "→" can be used instead of "=>". Use which ever style you like. As long as the ref=*, from=*, and to=* tags are filled out, data users can create their own names however they prefer. If the bus route is a round trip, the "to" and "from" tags will be the same, causing a rather silly bus route name to be tagged (eg. Bus 27B: Downtown => Brightley => Downtown). In the case of such a bus route, you can choose to use "Bus <ref>" as the name. Example: name=Bus 27B. |
name=Bus 405: UNC Hospitals => Downtown Durham Transit Center |
official_name=* | Recommended | For describing the name of the bus route as used on official maps. Most routes have only a reference number and not a name, so for those cases, don't use this tag. | official_name=Bull City Connector |
colour=* | Recommended | The colour of the bus route on official maps. Many bus routes do not have an "official colour", so for those routes, simply don't use this tag. The colour should be in hex format, however, using HTML colour codes will work as well.
Note that the British English word "colour" is used for this key rather than the American English "color". |
colour=#58912F |
roundtrip=* | Optional | To specify whether the relation is a round trip. For most routes, the value is 'no'. Routes that complete a loop and are therefore only added with one relation should have the value 'yes'. This is optional because it can be inferred from the relation itself. | roundtrip=no |
Adding bus stops to the relation
The next step is to add each bus stop to the bus route relation in the correct order with the role "platform".
To add a bus stop to the route, select that bus stop, and then click the plus symbol near the bottom under All relations. Then, choose the relation that you have just created, add the stop to the relation, and set the role to platform.
It is very important that the stops be added to the route relation in the order that the bus stops at them. If the bus stops at a stop twice, add that stop to the relation twice. Each stop must have the role "platform" in the route relation. Although many people use the role "stop" for the bus stops, the role is now discouraged. Use "stop" for stop positions instead.
If the stops or roads have been added in the wrong order, they can be dragged and dropped into the correct order.
Some platforms / bus stops have entry only/exit only restrictions. For those cases, use the roles "platform_exit_only" and "platform_entry_only" instead of the role "platform" (resp. "stop_exit_only" and "stop_entry_only" for "stop").
Adding streets to the relation
The final step is to add the streets covered by the bus route in the correct order with empty role "".
Many data consumers, including OsmAnd, are able to use bus routes without any streets added to the relation - only stops. Adding the streets is recommended, but not mandatory.
To add streets to the relation properly, select the first street that the bus drives over after leaving the first stop in the route. You may need to split the street to only select the part of it that is covered by the bus route. Add the first street covered by the bus route to the relation with an empty role. Then, add the next street covered by the route, and then the next, in order as for the stops. Using the roles "forward", "backward", "both", "North", "South", "twice", or any other role is not supported in the original PTv2 proposal. Each street must be added with an empty role ("") except for sections of the route where one can board or leave the bus at any point along the road by giving a sign to the driver instead of waiting for the next stop which can be marked with hail_and_ride.[4] For PTv2 routes the direction that the bus travels on the way can very easily be found by a computer (if there are no gaps), and using roles other than an empty role for streets covered by the bus route is usually redundant.
The relation is now finished.
Step 3 - Create a route master relation
No route master relation is needed if the bus route is a loop, and therefore only mapped with one relation (and given the tag roundtrip=yes).
Route master relations represent all variations of a single bus route, not a network of bus routes.
Now that each direction of the bus route has been added as a separate relation, they should be connected with a route master relation. The route master relation should include both directions of the route, as well as any variations of the route. For example, if a bus route operates normally Monday through Friday, but has a different route and different opening hours on weekends, then the weekend routes (both directions) should be added as separate relations, for a total of four relations. All relations that are part of the same route should be added to the route master relation.
Add the following tags to the route master relation:
Tag | Importance | Description | Example |
---|---|---|---|
type=route_master | Mandatory | To specify that this relation is a route master. | type=route_master |
route_master=bus | Mandatory | To specify that this route master is a bus route master. | route_master=bus |
ref=* | Mandatory | If no ref exists, you must use official_name=* instead. | ref=800 |
name=* | Recommended | This article or section contains questionable, contentious or controversial information. See the talk page for more information. Descriptive naming is generally frowned upon. This recommendation has attracted criticism many times over the years. As is true with the individual bus relations, this value should not be the "official" name of the bus route. Use the following format: "Bus <ref>". |
name=Bus 800 |
operator=* | Recommended | Name of the company that operates this bus route. | operator=Transport for London |
network=* | Recommended | The network of the bus route master. Look to other public transport features in your area to see what the common value of the network=* tag is for your local transit network. | network=London Buses |
wheelchair=* | Recommended | 'yes' if wheelchairs are accommodated. 'no' if not. Routes that accommodate wheelchairs have special ramps that can be laid down for wheelchairs to enter the bus. There will be a dedicated area in the bus for wheelchairs that may have straps or a cushioned pad that the wheelchair can the reversed up to and the brakes applied to hold a wheelchair in place. | wheelchair=yes |
bicycle=* | Recommended | 'yes' if bicycles are permitted on the bus. Buses that permit bicycles often have racks on the front for storing them. | bicycle=yes |
official_name=* | Recommended, if one exists. | For the name of the bus route as it appears on official maps. If no official name exists, don't use this tag. | official_name=Bull City Connector |
ref:<qualifier>=* | Important, if several refs exist. | The reference by which an operator or network, specified by <qualifier>, refers to the route or service. Important, where the reference code of the bus route is known by two or more different refs depending on which operator is contacted. | ref:OPT=OCH & ref:TTA=420 |
Add the child bus route relations to the route master.
After adding the necessary tags to the route master relation, add each of the individual routes to the route master with an empty role, or ("").
Network Relations
- Main article: Relation:network#Public transportation networks
A network relation can be used to link each member of a network together. The network relation represents existing networks (i.e. a common fare system). Network relations can be hard to work with, and have therefore been deprecated in some places (for example Germany). Using network=* on each bus route and route master relation is preferred over network relations.
Example bus route
London Buses route 12: route master relation
Removing a bus route from OpenStreetMap
When entire lines disappear their route_master and route relations are deleted. Unless the bus stops have also been physically removed, they should not be deleted. If they are renamed and/or their identifier changes and it's obvious that it's all based on an already mapped predecessor, you could 'reuse' the relations. There is no good way to indicate when the new situation starts or the old situation ceases.
Bus maps
The following sites render bus routes (based on relations data)
- Öpnvkarte (http://öpnvkarte.de/ or alternatively http://www.openbusmap.org/ or OSM Inspector Public Transport - Network) Worldwide public transportation maps.
- Transport Map layer created by Andy Allan showing public transport lanes worldwide. Wiki page.
- Overpass Turbo request:
- Overpass API route map: http://overpass-api.de/public_transport.html
- Openmap.lt : rendering close to the one of openbusmap.org. Only renders features in Lithuania.
- OrganicMaps: supports bus navigation in some regions.
Bus routes by country
See also
- Public transport
- Tag:route=bus
- Relatify (bus route editor)
Proposals
- Proposed features/Public Transport (PTv2) - accepted, in use.
- Hail and ride proposal - approved
References
- ↑ https://taginfo.openstreetmap.org/tags/amenity=bus_station - over 50k uses
- ↑ This more complicated schema introduced by PTv2 remains to be less used by mappers - see https://taginfo.openstreetmap.org/tags/public_transport=station#combinations - over 10k uses, significantly lower usage than simpler amenity=bus_station
- ↑ any type of motor car roads in the class "highway" like primary/secondary/tertiary/unclassified/residential/etc.
- ↑ Hail and ride proposal approved in April 2018
|