Proposal:Public Transport map all stops as nodes

From OpenStreetMap Wiki
Jump to navigation Jump to search
Public Transport mapping made accessible to anyone
Proposal status: Draft (under way)
Proposed by: Polyglot
Draft started: 2018-04-05


Mapping public transport should be in everyone's reach. In OpenStreetMap it is more complex than it should be though. We should adopt a scheme that is simple and straightforward for the simple cases and that leaves room for expansion to map all the more complex cases in full detail, where needed.

At present the wiki page seems to say that every stop needs to be represented twice in the route relations. These route relations contain itinerary variations and there are a lot of them. Typically 2 per line, but there are lines with up to 50 such variants.

Having 2 objects per stop in these route relations makes maintaining them harder than it should be.


What is the bare mimimum we need to describe public transport stops and the vehicles' itineraries?

  • 1 object per stop containing all the stop's properties
  • route relations containing a sequence of stops, followed by a continuous string of ways

When extending from this basic foundation, no transformations (node -> way/area) should be needed.

This does not impede extending these stops with platforms in full geometric detail and stop_position nodes, shelters, electronic displays, etc.

What I'm proposing hinges on mapping all stops as NODE objects, next to the road.

  • nodes are convenient to work with and move, if needed, also using mobile apps
  • nodes have coordinates directly, no extra calculation required
  • nodes are easy to work with using MapCSS, showing all the details from the tags around the node, using offsets, to the upper right, lower left and so on
  • making comparison of location and tags with external sources is straightforward
  • using nodes for the waiting area/platform/pole for the lifetime of the stop means more stability in the data

Once we have these nodes containing details like name, ref, route_ref, local_ref, zone, bus=yes/tram=yes, operator, network, we can add them to the route relations.

There is then no need to add stop_position nodes or platform ways to these route relations and if these aren't added to the route relations, there is no need anymore to add details like name to the stop_position nodes or the platform ways/areas.

This way we have all the pertinent information on one object for the whole lifetime of that stop.

A stop and how it fits in the route relation

When looking at a rendering of the route relations, it is immediately clear on which side of the street the stops are located.

The proposal doesn't say that it's not possible to map the actual platforms as ways or areas in ADDITION to that node, if they are actually present.

What it says is that it's not necessary to transfer all the details from the node to the way/area and replace the node in the route relations. This makes the data more stable.

The node REPRESENTING the stop keeps fulfilling this function for the lifetime of the stop's 'existence'.


Examples can be found in the screenshots on this page: JOSM/Plugins/PT_Assistant/Mapping_Public_Transport_with_JOSM


Applies to


Rendering can stay the way it always was, highway=bus_stop and railway=tram_stop are still added to the stops. public_transport=platform + mode (bus=yes/tram=yes) can be added and this has the convenience that JOSM will automatically assign platform roles to these nodes when adding them to route and stop_area relations.

Features/Pages affected

This is how I would change this page: Public_transport -> User:Polyglot/Public_transport

External discussions


Please comment on the discussion page.