PT v3 some thoughts

Posted by Polyglot on 21 December 2017 in English (English)

There is some talk about a new scheme for mapping public transport on the German forum.

I'll try to list some requirements such a scheme should have:


  • It should be easier to map than the mess v2 has become.
  • Simple for simple cases
  • Scalable to more complex cases, without the need to convert nodes to ways or relations.
  • Details like ref, route_ref, operator, network, zone should only appear on a single object.
  • By looking at this object it is immediately clear on which side of the road the stop is located.


  • The object that represents a stop for a single direction of travel only appears once in the route relations.
  • easy to understand, for anybody who bothers to look inside the relation
  • straightforward to process for map rendering
    • This means that a scheme with 'hints' about the routes, using reference points along the way, is not suitable.
  • one route relation per variation of the itinerary

It doesn't really matter that highway=bus_stop, railway=*, highway/railway=platform are used in combination with public_transport tags. Rendering doesn't seem to be able to go without the 'deprecated' tags. Mapping (using JOSM) is more convenient when using public_transport style tags (roles are set automatically for example).

From the above requirements the only logical solution is to use a node to represent the bus stops. highway=bus_stop / railway=tram_stop bus=yes / tram=yes public_transport=platform

If an actual platform is present where passengers can wait, it can be mapped as a way/area using highway=platform and/or railway=platform. No need for public_transport=platform on these areas, lest someone might say we're mapping platforms twice. And no need for adding these objects to the route relations. They can be added to stop_area relations. My personal preference would be one such stop_area relation per direction of travel, or per platform in bus stations.

I'm preparing a proposal here:

Comment from Zverik on 21 December 2017 at 13:44

Why PTv3 and not an iterative improvement and explanation of PTv2?

Comment from Mr_Brown on 24 December 2017 at 21:08

I am not fluent in German, but has there been any discussion about accommodating timetables in this new scheme?

Comment from Polyglot on 24 December 2017 at 22:08

Hi Mr_Brown,

There hasn't. It would be very hard to accomplish technically and most mappers' opinion is that timetables don't belong in OpenStreetMap. Even if we would come up with a scheme, it would be really hard for contributors to keep those timetables up to date in OSM.

Ilya privyet,

The version number isn't all that important. I'm indeed trying to get everybody to map the same way, but I'd like to see it done in a scalable mapping scheme that is simple enough for anybody to understand, but expressive enough to go very deep in detail where needed/wanted.


Comment from Zverik on 25 December 2017 at 08:55

Thanks for answering, Jo. I've looked through your proposal draft, and some things I do like very much. For example, getting rid of stop positions: that concept, to me, was redundant from the beginning, just an attempt to include railway=tram_stop. I'd suggest going a step further: renaming "platform" to "stop", so there is no difference in mapping stop at a platform or in a road. This would remove issues with tram_stops not being platforms.

What I don't like is that again roads/railways are mandatory, and stops are not. Which means, the proposal is again targeted at rendering and experienced mappers, instead of routing and literally everyone who can add objects into relations. When you have just stops, you can use a route relation for navigation, you can interpolate points into lines for displaying, and you know many properties of a route, including "from" and "to" stations. When you have just lines, all you can do with the route is render it. And few people will bother with splitting ways, tracing underground parts of routes and so on.

I propose to fix this mistake in the PTv2 proposal and make stops mandatory, and ways optional.

Comment from Polyglot on 25 December 2017 at 09:13

User Weide is proposing something along those lines. For buses just the stops is still ambiguous though, so he wants to add nodes at crossings along the way, to give an indication of the route the bus follows. I don't like that too much, because it moves the burden of calculating and recalculating the which ways belong to the routes to the renderers over and over again. This means it won't be possible to fetch itineraries in a convenient way.

It may be a bit more practical for mappers, but it's a lot less useful for renderers.

Comment from Zverik on 25 December 2017 at 09:20

No, I don't propose to add stop_positions back. In my metro processing script, I calculate these by projecting platforms on lines, and anybody who needs these could do the same. I just propose to change the name from "platform" to something more universal. Otherwise people would complain that railway=tram_stop is not a platform and requires different treatment.

Are you making a schema for renderes, or for practical usage? You can render routes without highway/railway lines, by interpolating through stops (that's what we do in, but you cannot get stops using just lines. Which means, you can both render and route when you have just stops, but you can at most look at the line, and not get anything useful from it (e.g. know if it stops near you), when you have just lines.

Comment from SelfishSeahorse on 28 December 2017 at 15:57

Nice proposal!

However, I think the mess will stay for as long as there are two different tagging schemes. Therefore I suggest to abandon either highway=bus_stop and railway=tram_stop/halt/station or public_transport=platform.

My preferred solution would be to:

  • Abandon public_transport=platform and continue to use highway=bus_stop and railway=tram_stop/halt/station, because it's clearer what these tags mean and they are easier to map
  • Map railway=tram_stop beside the road, where passengers wait for the tram
  • Only add highway=bus_stop and railway=tram_stop/halt/station to route relations
  • Map actual platforms with highway=platform or railway=platform (same as your proposal)

Comment from Zverik on 28 December 2017 at 16:00

That is actually quite sensible, thanks SelfishSeahorse. Time to abandon that clusterwreck of public_transport=platform/stop_position and return to the roots.

Comment from clementroux on 5 January 2018 at 22:15

I agree with this proposal draft particularly the abandon of duplicated stops. But in my opinion there is another point to improve in the transport sheme : route variants.

For the moment, we have to separate different route variants in different relations. But we can't do any difference between for example the main route and a route that is used maybe twice a day. (give a look to the Buses discussion.)

On the same discussion I've proposed a simple tagging sheme for that; let me know your opinion...

Login to leave a comment