-
Notifications
You must be signed in to change notification settings - Fork 212
Description
Problem
Transit passengers traveling with bicycles have no way to know whether a bike rack or storage area will be available on an approaching vehicle. Typical transit buses have only 2–3 external bike rack positions. When full, cyclists are denied boarding and must wait for the next vehicle or abandon their transit trip.
The Santa Clara VTA confirmed this problem in a USDOT SMART Grant pilot (FAIN: 69A3552341049), finding that denied boardings are a measurable service quality issue and that no transit agency in North America currently provides this data through standard feeds.
Proposed Solution
Add two new optional uint32 experimental fields to VehiclePosition and CarriageDetails:
| Field | Message | Description |
|---|---|---|
cyclist_positions_available |
VehiclePosition (field 12), CarriageDetails (field 6) |
Positions currently available |
total_cyclist_positions |
VehiclePosition (field 13), CarriageDetails (field 7) |
Total capacity |
This follows the same pattern used for occupancy_status, occupancy_percentage, and multi_carriage_details.
Working Producer Implementation
Sportworks Global LLC has a public GTFS-RT feed demonstrating the proposed fields:
- Feed URL: https://cascadia-metro-gtfs-rt.sportworks.com/gtfs-rt/vehicle-positions
- Static GTFS: https://cascadia-metro-gtfs-rt.sportworks.com/gtfs-rt/gtfs.zip
The feed has been validated against protoc, Python gtfs-realtime-bindings, and Node.js gtfs-realtime-bindings — all pass without errors. Full validation results will be included in the pull request.
Pull Request
A PR with the proto and reference.md changes will follow shortly.
Contact: Oliver Sturrock, olst+gtfs@silverfallscapital.com, Sportworks Global LLC / Silver Falls Capital