Skip to content

Stop Location & Area

Ryan Bush edited this page Sep 15, 2026 · 3 revisions

Stop Location & Area

PTv2 splits a bus stop into two elements: a public_transport=platform beside the road (what most editors show as "the stop"), and a public_transport=stop_position node on the road itself, where the bus actually halts. Where several platforms and stop positions belong to one physical place, they're grouped by a public_transport=stop_area relation. Relatify can add both.

Right-clicking any stop opens a menu with whichever of these apply to it, alongside Tags and Inspect:

Screenshot 2026-09-13 at 13 27 43

Here the stop already has a stop_area queued (✓), which is why that button is highlighted - see Stop areas below.

Stop positions on the road

For a new stop you're adding, tick Also mark where the bus halts, on the road in its form. For a stop already in OSM that has no stop position yet, right-click it and choose Add stop position:

Screenshot 2026-09-12 at 21 47 26 Screenshot 2026-09-13 at 13 31 04

Either way, the stop is projected onto the nearest member way of the route, and shown as a ringed dot joined to the platform by a dashed line. Confirming inserts the node into that way between the two nodes it falls between, and it joins the relation with role stop.

Screenshot 2026-09-13 at 13 37 06

A few things limit where and when this is offered:

  • Nothing is offered when no member way is within 30 m of the stop, or before the route has any ways at all - there's nothing to put the node on yet.
  • It's only offered for a stop the route actually calls at. The stop position travels with its stop: taking the stop out of the route takes its stop position with it.
  • New nodes are kept at least half a metre from the way's existing nodes, so a stop level with one doesn't land on top of it.
  • A road the route only uses part of is split on upload and its nodes rebuilt, so a stop position can't go on it - such a road is skipped when choosing where to put the node.

Dragging a new stop moves its stop position with it. The same button (or checkbox, for a stop not yet uploaded) removes the stop position again.

On upload, the node is created and the road way is modified in the same changeset as everything else: the way is fetched fresh and the node inserted between the two neighbours the editor saw. If those two nodes are no longer adjacent - someone else has edited the road in the meantime - the upload stops as a conflict rather than guessing where the node should go.

Stop areas

A public_transport=stop_area relation groups the stops of one place - for an ordinary bus stop, the platform on each side of the road plus the stop position that serves each. The editor already works out which stops belong together (same name, same place), so it can offer the relation directly: right-click a stop and choose Stop area.

Screenshot 2026-09-13 at 13 36 04

You get the stops it would group, each labelled with the role it would take (platform or stop), and a button to queue it. Queuing doesn't upload anything by itself - it's created in the same changeset as the rest of the route, tagged type=public_transport, public_transport=stop_area and name (taken from the stops' own name, with any stop letter or "opp"/"NW-bound" style suffix stripped). Stops you've just added - including ones pulled in from NaPTAN - are grouped in too, so a stop added from NaPTAN goes into the area alongside the one across the road that was already mapped.

Screenshot 2026-09-13 at 13 37 38

If the stops are already in a stop area, the editor says so and offers to add whichever ones are missing from it - a stop position you just created, say - instead of making a duplicate relation, and the relation keeps the name it already has. If the group's stops sit in different existing stop areas, nothing is offered: choosing between them isn't the editor's call to make.

Existing stop areas are looked up through Overpass when the route is downloaded. If that lookup fails, the download still works, but the editor won't know about them - worth checking manually before creating one in that case. A stop area you've queued is also dropped automatically if a later download changes which stops belong to that group, rather than being uploaded against a set you never actually saw.

This grouping is derived from the stops themselves, not from NaPTAN. NaPTAN does define its own StopAreas, but the feed this app downloads doesn't carry them, and only about 28% of GB bus stops are in one anyway - so naptan:StopAreaCode is never set by this tool.

On upload, the relation is fetched again first, so a member someone else added in the meantime isn't added twice, and one that's stopped being a stop area (e.g. deleted) stops the upload as a conflict rather than silently recreating it.

Clone this wiki locally