How to get the service area for public transport?

Hi folks,
I am happy to join this awesome community? I have learned that administrative boundaries are mapped using relations. I have learned that public transport stops are mapped via nodes.

Is there a way to extract the service area of a public transport provider from OSM?

I could imagine to filter all stops belonging to a transport company or authority. Afterwards I am drawing a polygone on a map using the stop node’s locations. Is that realistic?

Does it makes sense to maintain the service area of public transport in OSM in the way administrative boundaries are mapped?

Are routes mapped as relations already? Could a service area be a set of all routes belonging to the same transport service provider? Is that a realistic approach?


1 Like

yes, see Public transport - OpenStreetMap Wiki


does not sound like a good idea to me


I don’t think that it would make sense to do that where I am (England), because (a) there’s considerable overlap between areas and (b) some information like this was imported years ago and was immediately out of date. See the discussion here on the local mailing list. Some still exist (example here) but add no value.


Areas do not really make sense to me, certainly not in the way administrative areas do

Just because all bus routes in ‘an area’ are operated by a particular company it does not mean that all of that area has a service.

An area served by a bus company can only be 'if within walking distance of a bus stop. The definition of walking distance is obviously very subjective.


1 Like

That is where I just learned something new about stops and routes. Those are tagged with “operator”. With a stop or a route having multiple networks or operators, that candidates are separated by semicolon.

How common is the practice of tagging all or several networks or operators at stops and routes?

I have imported an OSM extract into PostgreSQL using osm2psql . Has anyone experience how to filter stops or routes by operator or network?


I do not know if it was pure luck, but I found this

and that

link. I am wondering about the source of those boundaries? Did anyone map that boundary manually or is it just the overall set of stops and routes all belonging to the same network?


Hi! These look like manually added. I extended the first one years ago when the VBN area was extended.

I guess, in Germany, counties (Kreis/Landkreis/Stadt) (OSM: admin_level=6) are responsible for public transport, at least if they provide the (public) money/subsidies.
So, from my experiences, a set of counties get together and form a Verkehrsverbund (a public association, authority). As a consequence, the serviced area of such a Verbund (the boundaries) matches the outer boundaries of the counties.
So, the relations like the two above can easily be created.
Just zoom into the map and see the name of the counties along the line of the relation.

1 Like

I can only speak for my area:

Here the boundary does not 100% fit with admin boundaries. Some stops are part of two different networks and not only the stop closest to the border. Additionally, there are some special cases like:

I try to tag all networks, except long-distances one, for the stops and routes and all operators for the routes. Operators for the stops won’t help much as the stop is usually only operated by one authority but used by several. In my home town a city department (Garten- und Tiefbauamt) is the operator which does not even run any public transportation.

In order to get the stops used by an operator I would suggest to take the stops from the route relations the operator runs.


Well, you’re absolutely right here. This will or better should apply for all areas. Connectivity by bus, … from one county to the next would not exist w/o some overlapping.

I recently even took a “french” tram from Kehl, Germany to Strasbourg, France.

1 Like

Overpass has an example using hull, trace, and gcat Into a Flat World

I recently even took a “french” tram from Kehl, Germany to Strasbourg, France.

or there’s a French train from Munich or Stuttgart to Paris, an Austrian train from Rome to Munich or a British train from Paris to London.