Stations, levels & pathways
Most agencies never need this. A single curbside bus stop is one record in stops.txt and that's the end of it. But a multi-platform rail station, a transit center with an underground concourse, or any facility where riders walk between platforms is more than a point on a map — it has floors and internal walking connections. The Stations panel models that: levels.txt for the floors and pathways.txt for the walkways, stairs, and elevators between them, so a trip planner can give a rider turn-by-turn directions inside the station.
When to model a station
Reach for this only when a rider has to navigate within a facility — a subway station with platforms on two levels, a multimodal hub where the rail platform and the bus bays are a walk apart, an interchange with a fare-gate line between concourse and platform. If your whole system is on-street bus stops, skip it; the overhead isn't worth it and an empty levels.txt/pathways.txt is better than a half-modeled one.
The building blocks come from the GTFS station hierarchy, set per stop in the stop editor via Location type:
- Stop / platform (location_type 0) — where vehicles actually stop. The default.
- Station (location_type 1) — the parent that groups platforms, entrances, and nodes together. Other stops point at it via Parent station.
- Entrance / exit (location_type 2), generic node (3), and boarding area (4) — intermediate points a pathway can connect.
A pathway connects any two of these nodes. So the usual shape is: one Station, several child platforms and entrances that name it as their parent, and pathways stitching them together across one or more levels.
Levels (floors)
Open the Stations panel from the left rail. The top section is Levels. Click + Add Level for each floor and fill in:
- Level ID — a short stable identifier (
street,concourse,platform). It's what stops and pathways reference, so don't churn it. - Index — the floor's height ordering.
0is the ground/street level, positive numbers go up, negative numbers go below grade. Half-steps are allowed (the field steps by 0.5) for mezzanines. - Name (optional) — the human label riders would recognize ("Concourse", "Northbound Platform").
Levels are a flat list — there's no geometry, just the ordering. Delete one with Delete level; make sure no stop or pathway still references it first.
Placing a stop on a level
Levels do nothing until stops sit on them. Open a stop in the Stops panel and use the Level dropdown in the stop editor to put it on a floor. (The dropdown stays disabled until you've defined at least one level in the Stations panel.) While you're there, set the stop's Location type and, for child stops, its Parent station — the parent dropdown only lists stops whose location type is Station.
Pathways
The lower section of the Stations panel is Pathways — the in-station walking connections. You need at least two stop nodes before you can add one. Click + Add Pathway and set:
- From stop / To stop — the two nodes the pathway links (any location type: station, platform, entrance, node, boarding area).
- Mode — Walkway, Stairs, Moving sidewalk, Escalator, Elevator, Fare gate, or Exit gate.
- Direction — Bidirectional (riders can traverse it either way) or One-way (from → to), e.g. an exit-only gate.
- Length (m) and Traversal (s) — optional walking distance and time. Trip planners use these to estimate in-station transfer time; worth filling in for long concourse walks.
- Stair count — appears only when the mode is Stairs.
- Signposted as — the wayfinding text printed on station signage that a rider would follow ("To Eastbound Trains").
The collapsed row header summarizes each pathway as From ↔ To · Mode, so a long list stays scannable. Rarer columns the GTFS spec defines (maximum slope, minimum width, the reverse signpost text) aren't exposed in the form, but they're preserved untouched on import and export if your source feed already had them. There's no map drawing for pathways — they're a logical table of connections, not geometry.
Edge cases and gotchas
- Don't half-model a station. A station with platforms but no pathways tells a trip planner "these platforms exist but I won't say how to walk between them," which is often worse than not modeling the hierarchy at all. Either commit to the pathways or leave the stops as plain points.
- Parent before child. A stop can only name a parent that already exists as a Station (location_type 1). Create the station record first, then point its platforms and entrances at it.
- Levels are optional even when pathways aren't. A single-floor station with two platforms across a plaza needs pathways but no levels. Add levels only when there's a genuine vertical dimension.
- Pathway length and time are independent. A 60-metre level walkway and a 60-metre escalator traverse in very different times — fill in Traversal (s) when the walking speed isn't obvious from the distance.
See also
- Stops — set a stop's location type, parent station, and level in the stop editor.
- Transfers —
transfers.txtrules between stops, the complement to in-station pathways. - Validation — what the validator flags for stations, parents, and pathways.