TL;DR:
highway=bus_stop
(without bus=yes
, as that was considered implied) is a legacy approach. public_transport=platform
+ bus=yes
is the new standard. These may be combined for backwards compatibility, but the new standard takes priority. So:
If the stop is represented by a single node:
- Node: highway=bus_stop
+ public_transport=platform
+ bus=yes
If the stop is represented by a closed way (area):
- Way: public_transport=platform
+ bus=yes
- Node (optional): highway=bus_stop
(NOT public_transport=platform
+/ bus=yes
)
The (optional) public_transport=stop_position
node on the parent highway=*
way on which the vehicle travels gets a bus=yes
tag to define the type of public transport vehicle that services that stop, regardless of how the platform is mapped.
Rationale:
The highway=bus_stop
node does not need the bus=yes
tag, as this is unambiguously implied by the highway=bus_stop
tag. However, simple highway=bus_stop
nodes are considered a “legacy” approach.
A bus stop that is mapped as a single highway=bus_stop
node is often updated with the public_transport=platform
tag in line with the PTv2 schema. Because public_transport=platform
does not imply a vehicle type, it is suggested to add bus=yes
. Yes, this is implied by the highway=bus_stop
tag, but the redundancy is not harmful - the old approach (just highway=bus_stop
tag on a node) and the new approach when used at the “node” level of detail (public_transport=platform
tag + bus=yes
tag on a node) can coexist.
When the platform is mapped at the “area” level of detail, the public_transport=platform
way is tagged with bus=yes
to specify the vehicle type. In this case, the public_transport=platform
tag and bus=yes
tag should be removed from the highway=bus_stop
node, which now essentially serves as a simple role:label
for the stop placed at the location of the pole.
Deeper dive:
There is an additional complication, which is that bus=yes
is used two different ways: First, as a type of access=*
tag for that specific vehicle type; and second, as an indication of which vehicle type serves a stop. Validators will flag warnings when, for example, an area-mapped stop is also tagged with highway=platform
, because now it is not entirely clear whether bus=yes
means “Busses are allowed to travel here” (bus=yes
as an access tag) vs “People wait for busses here” (bus=yes
as a specifier tag). 