Proposal:Differentiation for routes of public transport

From OpenStreetMap Wiki
Jump to navigation Jump to search
Differentiation for routes of public transport
Proposal status: Abandoned (inactive)
Proposed by: Ialokim
Applies to: relation
Definition: Distinguish between different Public Transport route scopes, types and services
Draft started: 2017-10-20


The proposal adds a standardized way to differentiate between route scopes (local, regional, national and international) and public transport route types (like express, long-distance bus service vs. urban city bus or high-speed intercity train vs. regional commuter).


As for now, there is no standardized way in OSM to tag the difference between a city bus service and an intercity bus service. Because of that, I came up with the idea to use route=coach for long-distance vs. the normal route=bus for short-distance bus services. There were many people interested in the idea, but they did not agree with this black-and-white-solution. They mentioned many more cases like (just some examples):

  • Buses connecting a city to surrounding towns and villages. These might have quite a few stops in the city itself, but fewer than city buses, and lots of stops in the surrounding region. (Alan gr)
  • express airport buses as part of the urban network (Alan gr)
  • express variants of normal city routes (Alan gr)
  • long-distance routes with both express and stopping services (Alan gr)
  • tourism bus services (AgusQui)
  • Express commuter services (SK53)
  • Shuttle services (SK53)

I then continued to search a bit through the OSM-Wiki and found this discussion on the Buses-Talkpage mentioning factory bus lines, school bus lines, buses on demand, peak-time bus lines, train-replacing bus lines and some more. There's also a similar tagging method suggested and used by mostly German railway mappers who differentiate between service=high_speed, service=long_distance, service=regional, service=commuter, service=car, service=car_shuttle, service=night and service=tourism. The non-approved Oxomoa-Scheme also suggested a way to distinguish bus services with bus=* and service=*, too, which was lost in the approved Proposed features/Public Transport scheme. However, these particular keys are already used in other circumstances: bus=yes indicates whether a bus stops at a stop position and service=* is mainly used for road stuff, so there is a need for new keys and I thought of namespacing.


Thanks to many comments on the talkpage and on the mailing list, I have elaborated this proposal adding the following more specific tagging scheme, mainly for public transport routes, but the first key is also applicable to other types of routes.

They should be present on the route_master relation and the corresponding route relations.

  • scope=* to indicate the served area of a route
The latter four values could be used instead of the corresponding network=* on hiking and cycling routes.
You can then differentiate the public_transport:type=* by adding the key exclusive=* with yes or no.
Example: School buses that are only for the school children vs. open to all public:
  • service_period=* to specify if the public transport service has a particular service period

The three latter keys shouldn't be obligatory, if there is nothing special. Renderers should assume the corresponding (default) values.

As always, feel free to contribute and improve this proposal by adding values or changing names of existing ones.


Reusing some examples given on the Talkpage of the initial proposal:


  • Buses connecting a city to surrounding towns and villages. They might have quite a few stops in the city itself, but fewer than city buses, and lots of stops in the surrounding region. (Alan gr)
Regional bus services which will stop at any stop but tend to have a fare structure which precludes local use. Typical example the Trans-Peak relation 167839 from Derby to Stockport, Krakow-Zakopane, Bellinzona-Thusis or the Glasgow-Campbeltown service. (SK53)
route_master=bus + scope=regional + stopping_pattern=all_stops
  • express airport buses as part of the urban network (Alan gr)
route_master=bus + scope=local + stopping_pattern=main_stops
  • express variants of normal city routes (Alan gr)
route=bus + scope=urban + stopping_pattern=main_stops
  • long-distance routes with both express and stopping services (Alan gr)
route_master=bus + scope=national with two children for each express and stopping services:
  • tourism bus services (AgusQui)
route_master=bus + scope=urban + public_transport:type=tourism
  • school bus service, only for school children and at peak times (Singing-Poppy)
route_master=bus + public_transport:type=school + exclusive=yes + service_period=peak
  • classical public transport line, with additional stops at the school in the morning and in the evening (Singing-Poppy, see Mobicaps 4)
type=route_master with two children for each 'normal' and 'peak-time special' routes:
  • public transport service where the full line is on demand (Singing-Poppy, see Resago R61):
type=route_master + public_transport:type=on_demand + exclusive=yes with two type=routes (optionally with public_transport:type=on_demand too) for the two directions
  • public transport service where only some stops are on demand (Singing-Poppy, see Flexo F8):
type=route_master with two type=routes for the parts that aren't on demand and two type=routes + public_transport:type=on_demand for the parts that are on demand
  • Express services between cities. Nottingham-Derby has an express bus relation 366750 with one intermediate stop operated by well-equipped coaches. (SK53)
route_master=bus + scope=regional + stopping_pattern=limited
  • Express commuter services (e.g., Oxford-London relation 164517) (SK53)
route_master=bus + scope=local + stopping_pattern=limited + service_period=commuter
  • Long-distance coach services such as those provided by National Express in Britain, Riga-Tallinn, Tallinn-Turku, Puerto Madryn-Bariloche, Geneva-Val d'Isere, Madrid-Caceres. (SK53)
route_master=bus + scope=national + stopping_pattern=main_stops


  • High-speed trains (e.g. ICE or TGV)
route_master=train + scope=national + stopping_pattern=main_stops + public_transport:type=high_speed
  • Bus service that only serves at night (e.g. relation 415766)
route_master=bus + service_period=night
  • Train service that only serves at night (e.g. relation 5969072)
route_master=train + service_period=night
  • Commuter train service (e.g. S-Bahn in Germany, see relation 37315
route_master=train + public_transport:stops=many + public_transport:type=commuter


scope=* should be used to change route-rendering at different zoom levels. There could be used different symbols for different public transport service types (e.g. a little post symbol for post buses) or even a distinction between express and normal routes based on different colours. Using service_period=night, it is very easy to render a nightliner-only map.

Features/Pages affected

The other (standard) tags on route relations would not be changed, the proposal only adds some new tags. Nevertheless, there is the need to generalize the tagging methods and therefore:

OSM-Wiki pages affected:

External discussions


Please comment on the discussion page.