From OpenStreetMap Wiki
Jump to: navigation, search
Available languages — Buses
· Afrikaans · Alemannisch · aragonés · asturianu · Aymar aru · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · bamanankan · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · kurdî · Latina · latviešu · Lëtzebuergesch · lietuvių · Limburgs · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tagalog · Tiếng Việt · Türkçe · Türkmençe · Vahcuengh · vèneto · walon · Wolof · Yorùbá · Zazaki · isiZulu · српски / srpski · авар · Аҧсшәа · башҡортса · беларуская · български · қазақша · Кыргызча · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · भोजपुरी · मराठी · संस्कृतम् · हिन्दी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 中文(繁體)‎ · 吴语 · 粵語 · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
Logo. Feature : Buses
One example for Feature : Buses
A form of public transport
The bus route relation 36052 example(marked in blue) where all bus stops are not part of ways, but beside the way. This bus route is inside London and its bus number is 12.

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

The simplest way to map bus stops is using a node or polygon tagged with public_transport=platform and bus=yes 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).

Bus stations are represented by using a node or area tagged with public_transport=station and bus=yes.

If you like your bus stops to render on the main page, tag them additionally with highway=bus_stop. There is some talk about adding rendering for public_transport=platform, but it has not happened yet due to conflicting interests.

Stopping positions and platforms

To map a bus stop more exactly one can additionally use a node on the way tagged public_transport=stop_position which represents the position where the bus stops on the main carriageway or in a bus_bay=*. To combine the stop position and the platform to one bus stop, a relation public_transport=stop_area is used. This relation contains all the information about the stop like name, references, operator and network. Using stop position nodes can be useful in some situations, but is not required.


Bus services (e.g., No. 38) 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.

To hold the variant-relations together, another relation is used with type=route_master+route_master=bus/route_master=trolleybus. It only contains the variant-relations and information that is relevant for the whole service like ref=38.

Öpnvkarte.de (or openbusmap.org) shows bus routes, as well as rail and tram e.g. here in Köln

To identify a bus service as part of a bus network, use an operator=* and/or a network=* tag.

Bus lanes and tracks

Main article: Bus lanes

Buses generally run on normal highway=*[1] 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=service, access=no, psv=designated (or psv=yes). Example

Adding a bus route to OpenStreetMap

This method follows the Public Transport version 2 (PTv2) tagging schema.

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 can be very useful in some 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.

Each bus stop must have the following tags:

If you would like the bus stops to render on the main OpenStreetMap page, consider adding the following tag:

Although it is not needed, adding the following tags to each bus stop is strongly encouraged:

Tag Description Examples
name=* 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=* Reference code of the bus stop. ref=3154
network=* 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=* 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=* 'yes' if the stop is protected from the rain by a shelter. 'no' if it is not. shelter=no
passenger_information_display=* 'yes' if the stop has a real time electronic passenger information display. 'no' if not. Paper schedules do not count as passenger information displays. passenger_information_display=yes
bench=* 'yes' if a bench for riders to sit on is present at the stop. 'no' if not. bench=yes
bin=* 'yes' if there is a trash can at the bus stop. 'no' if not. bin=no
tactile_paving=* '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. 'not' if not. tactile_paving=no
layer=* 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=* 'yes' if the bus stop is lit up at night. 'no' if not. lit=yes
surface=* The surface of the ground where the bus stop is located. surface=concrete

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 direction the bus travels. 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.

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 and new relation. This should be the first stop of the route direction being mapped. The new relation must have the following tags:

Adding the following tags to the route is encouraged, although the route can still function without them:

Tag Description Examples
operator=* The name of the company or organization that operates the bus route. operator=Triangle Transit Authority
network=* 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=* The opening hours of the bus route. 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
duration=* The duration of the bus route, or the time between the bus leaving the first stop and arriving at the last stop. Use HH:MM format. The example on the right states that the bus runs for 31 minutes from end to end. duration=00:31
bicycle=* 'yes' if bicycles are permitted on the bus. Buses that permit bicycles often have racks on the front for storing them. bicycle=*
wheelchair=* '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
fee=* 'yes', if a fee is required for riding the bus route, and an optional charge=*for the amount of the fee. 'no', if no fee is required. fee=yes+charge=$2.25
from=* 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=* The name of an important stop along the route. 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=Downtown Chapel Hill
to=* 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
roundtrip=* 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'. roundtrip=no
name=* 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", use "name"="Bus <ref>: <from> → <via> → <to>". name=Bus 405: UNC Hospitals → Downtown Durham Transit Center
official_name=* For describing the name of the bus route as used on official maps. Many 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=* The color of the bus route on official maps. Many bus routes do not have an "official color", so for those routes, simply don't use this tag. The color should be in hex format, however, using HTML color codes will work as well. colour=#58912F

The next step is to add each bus stop to the bus route relation in the correct order. 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.

The next step after adding the stops to the route relation is to add the physical route of the service. To do this, 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, all in the correct order. Adding the streets in the correct order is just as important as it is for the stops. Using the roles "forward", "backward", "both", "North", "South", "twice", or any other role is invalid. Each street must be added with an empty role (""). The direction that the bus travels on the way can very easily be found by a computer (as long as the member ways are connected), and using roles other than an empty role for streets covered by the bus route is therefore both unnecessary and invalid.

After adding both the streets and bus stops covered by the route, the relation is finished.

Step 3 - Create the route master relation.

Now that each direction of the bus route has been added as a separate relation, they should be connected with a route master relation. If the bus route is a loop, and is therefore only mapped with one relation, no route master is needed. 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.

To create a route master relation, select one of the route relations and create a new relation from it. The following tags must be added to the route master relation:

The relation should also have the following tags, although these are not as important:

  • ref:<qualifier>=* The reference by which an operator or network, specified by <qualifier>, refers to the route or service. Important, where the service changes the reference number when crossing the network's border. Example: Have both ref:OPT=OCH and ref:TTA=420.
  • name=* As is true with the individual bus relations, this value should not be the "official" name of the bus route. Follow the following format: "Bus <ref>". Example: "ref"="Bus 405"
  • official_name=* For the name of the bus route as it appears on official maps. If no official name exists, don't use this tag.
  • operator=*
  • network=*
  • colour=*Hexadecimal color code for "official" route color or HTML color code. Example: #3F639E.

After adding the necessary tags to the route master relation, add each of the individual routes to the route master with an empty role. The bus route is now finished!

Network Relations

This method is derived from how the London Buses network relation has been mapped.

After creating several bus routes in the same network, you may want to connect them with a network relation. A network relation is a relation that includes all bus routes in the same system of buses. For example, every bus in the London metro area is part of the London Buses network, and has therefore been added to the London Buses network relation. To create a network relation select one of the route master relations and create a new relation. The relation must have the following tags:



You can also add the following tag:


The operator should be the name of the company operating the routes of the network. This can either be a private company or a public organization. If several operators exist, use a semicolon to separate the operators. Example: operator=Arriva;FirstGroup.

Next, add each bus route to the network relation. If a bus route has a route master, add only the route master to the bus route using an empty role, and not the child relations of that route master. If the route has no route master, add the route to the network relation, using an empty role. After all bus route have been added to the network relation, the relation is complete.

Example bus routes

Chapel Hill Transit NS: route master relation

London Buses route 12: route master relation

Example network relations

Chapel Hill Transit: network relation

London Buses: network relation

Bus maps

The following sites render bus routes (based on relations data)

Bus routes by country

See Category:Bus routes by country.
See also Category:Public transport by country.

See also



  1. any type of motor car roads in the class "highway" like primary/secondary/tertiary/unclassified/residential/etc.