User:Polyglot/Bus stops and routes

From OpenStreetMap Wiki
Jump to navigation Jump to search

Proposal for a simpler way of mapping public transport

  • How can we describe bus stops in such a way that there is no limit to the amount of detail we can add, without ever needing to convert from a node to a way/area/relation? Or transfer tags from one node next to the way to a node on the way?
  • What is the minimum we need to describe bus routes and make maps of them? If we want to get more mappers involved with mapping public transport, what I see happening in several places in Europe is too complex.

All we really want to know is where we can take the bus and how those buses get from one stop to the next.

The basic premise of this proposal is the use of 1 OSM object to represent a bus stop. For buses and trams a node next to the highway is what makes most sense.

Very often this node will start as:

highway=bus_stop.

To comply with the PT v2 scheme, we add:

public_transport=platform

And a mode of transport:

bus=yes
trolley_bus=yes
tram=yes

So far we have:

highway=bus_stop
public_transport=platform
bus=yes
trolley_bus=yes

or

railway=tram_stop
public_transport=platform
tram=yes

or

highway=bus_stop
railway=tram_stop
public_transport=platform
bus=yes
tram=yes

If there is an actual platform (and you like to see it rendered), add a way or an area:

highway=platform
tactile_paving=yes (optionally)
wheelchair=yes (if it is (in part) heightened)
area=yes (if mapped as a closedway)

At first I added public_transport=platform to these ways, but it's not strictly necessary for anything and some people get confused if there are 2 objects tagged public_transport=platform.

Of course we also need:

name
ref
operator
network
route_ref

And we could add:

bin=yes
bench=yes
shelter=yes

Although we can also map those as separate amenity=waste_basket, amenity=bench, amenity=shelter/shelter_type=public_transport objects.

I don't think it matters much that both the bus stop node makes a reference to the separate objects or not. I wouldn't remove bench=yes from the bus_stop node, simply because the waste_basket was mapped on its own separate node as well.

OK, so now we have nodes with all the relevant information about a bus stop. Let's use these nodes in the route=bus relations!

So what is all this talk about stop_position nodes, you ask? Well PT v2 wanted to unite people mapping bus stops as nodes on the highway with people who mapped them next to the highway. This seemed like a good idea at the time, but what we ended up with was a horribly complex scheme, where information is duplicated and thus harder to manage.

Some people will add the stop_position nodes to the routes, some will add the platform nodes and some will add both. Some will want to forgo the public_transport=platform nodes, or first convert them into platform ways (regardless of whether there is an actual platform) and add stop_position nodes and platform ways alternatingly.

If you want an answer to the question: how many stops does this variation of a line serve, you'll have to deduplicate those doubles first.

If you want to reorder the stops, you'll have twice as much work to do.

So please only add those highway=bus_stop/public_transport=platform nodes to the route relations, not the stop_postion nodes, not the platform ways.

If we do it that way, we only need name and the other details once. No need to add those details to the stop_position nodes.

Where I think the public_transport=stop_position nodes are definitely needed is at the start and the end of the itineraries. If the ways are split on those nodes, it allows to nicely describe where the bus starts its passenger route and where the last passengers get off.

All the other stop_position nodes in between are nice to have, but not crucial. No need to add them to the route relations and hence no need to duplicate the name tag to them.


Tagging

Proposal for a simpler public_transport scheme based on PT v2

Tags

Platform node (mandatory)

Key Value Mode Use Remark
Platform node Node placed where the passengers await the vehicle or where the pole is, if present.
public_transport platform State Train.svg State Tram.svg State Bus.svg mandatory
train yes State Train.svg when applicable mandatory
subway yes when applicable
monorail yes State Monorail.svg when applicable
tram yes State Tram.svg when applicable
trolleybus yes State Trolleybus.svg when applicable
bus yes State Bus.svg when applicable
highway bus_stop State Bus.svg mandatory
name Stop name State Train.svg State Tram.svg State Bus.svg recommended
ref reference or id State Train.svg State Tram.svg State Bus.svg optional recommended when known
local_ref Platform identifier State Train.svg State Tram.svg State Bus.svg when applicable max 2 characters, is rendered as part of the name since 2014)
route_ref semicolon separated List of line identifiers State Train.svg State Tram.svg State Bus.svg when known, either because operator's data is available, or because it was surveyed no real need to remove this when all routes are mapped as relations. It can still be used during validation too.
bin yes / no optional
bench yes / no optional
passenger_information_display = yes / no optional
shelter yes / no optional
ref:IFOPT de:xxxx:xxxx:x:x when known replace de with actual country code
tactile_paving yes / no when applicable
wheelchair yes / limited / no optional

Platform way (optional)

Key Value Mode Use Remark
Platform If there is an actual platform. way area.
highway platform State Bus.svg State Trolleybus.svg
railway platform State Train.svg State Tram.svg
tactile_paving yes / no if present
wheelchair yes / limited / no if elevated

Stop Position (optional)

Key Value Mode Use Remark
Stop Position node as a node on the highway, front of the vehicle
public_transport

stop_position

State Train.svg State Tram.svg State Bus.svg
train yes State Train.svg when applicable
subway yes when applicable
monorail yes State Monorail.svg when applicable
tram yes State Tram.svg when applicable
trolleybus yes State Trolleybus.svg when applicable
bus yes State Bus.svg when applicable
railway

stop

State Train.svg State Susrail.svg State Monorail.svg State Tram.svg mandatory railway=station or halt or tram_stop, should only be mapped once for every station

Stop Area (optional)

Key Value Mode Use Remark
Stop Area relation
type public_transport State Train.svg State Tram.svg State Bus.svg mandatory
public_transport stop_area State Train.svg State Tram.svg State Bus.svg mandatory
name Stop name State Train.svg State Tram.svg State Bus.svg mandatory
Relation members
Role Referenced on Mode of transport Use Remarks
stop public_transport=stop_position State Train.svg State Tram.svg] State Bus.svg when applicable Stop positions of vehicle
platform public_transport=platform State Train.svg State Tram.svg State Bus.svg when applicable Passenger area
amenity=* State Train.svg State Tram.svg State Trolleybus.svg State Bus.svg when applicable ex.: shelter, bench, bicycle_parking
building

train_station

State Train.svg State Susrail.svg State Monorail.svg when applicable station building

Stop Area Group (optional)

Key Value Mode Use Remark
Stop Area Group relation
type public_transport State Train.svg State Tram.svg State Bus.svg mandatory
public_transport stop_area_group State Train.svg State Tram.svg State Bus.svg mandatory
name Stop group name State Train.svg State Tram.svg State Bus.svg when applicable avoid name collision with stop_area relations
relation members
Rolle referenziert auf Verkehrsmittel Verwendung Bemerkung
public_transport=stop_area State Train.svg State Tram.svg State Bus.svg when applicable

Route

Key Value Mode Use Remark
Route relation One relation for each direction of travel and their variants.
type route State Train.svg State Tram.svg State Bus.svg mandatory
route train State Train.svg mandatory
subway mandatory
monorail State Susrail.svg State Monorail.svg mandatory
tram State Tram.svg mandatory
trolleybus State Trolleybus.svg mandatory
bus State Bus.svg mandatory
public_transport:version 2 State Train.svg State Tram.svg State Bus.svg mandatory obviously only for routes that follow PT v2 conventions
name Tram 310: Bochum=>Witten State Train.svg State Tram.svg State Bus.svg mandatory Eigenname oder

Verkehrsmittel+Nummer+Routenhinweis z.B.: Bus CE64: Wuppertal=>Solingen Regel: Eindeutig aber kurzer Text

ref N19 State Train.svg State Tram.svg State Bus.svg mandatory only line reference
from Bochum Höntrop State Train.svg State Tram.svg State Bus.svg mandatory locality and stop name of first stop
to Witten Heven State Train.svg State Tram.svg State Bus.svg
via Bochum Hbf State Train.svg State Tram.svg State Bus.svg optional only to distinguish between itinerary variants
network VRR when applicable rowspan="2" VRR#Betreibergesellschaften letzte Spalte.
operator BOGESTRA when applicable
wheelchair yes / limited / no optional
Relation members of route
Role Referenced on Mode Use Remark
platform / platform_exit_only / platform_entry_only public_transport=platform State Train.svg State Tram.svg State Bus.svg when applicable stops appear in the correct order, twice if served twice
highway=xxx oder railway=xxx State Train.svg State Tram.svg State Bus.svg mandatory sequence of ways without gaps traveled in the correct order from=* .. to=*

Route Master

Key Value Mode Use Remark
Route Master relation
type route_master State Train.svg State Tram.svg State Bus.svg mandatory Neues Schema (PTv2)
route_master train State Train.svg mandatory
subway mandatory
monorail State Susrail.svg State Monorail.svg mandatory
tram State Tram.svg mandatory
trolleybus State Trolleybus.svg mandatory
bus State Bus.svg mandatory
ref 310 State Train.svg State Tram.svg State Bus.svg mandatory Line number
name Tram 310 State Train.svg State Tram.svg State Bus.svg mandatory Name
network VRR State Train.svg State Tram.svg State Bus.svg when applicable .
operator BOGESTRA State Train.svg State Tram.svg State Bus.svg when applicable
Relation members of route_master
Role referenced on Mode Use Remark
public_transport=route State Train.svg State Tram.svg State Bus.svg mandatory relations for all variations of a line

}