google/transit

[GTFS-Fares v2] Non-sequential Legs Transfer

Opened this issue · 3 comments

Problem to solve

The Transfer Semantics document mentions that there are systems where transfers are time-based, such that riders can acquire fare discounts for non-direct transfers. For example, in a journey with four legs (Leg1 → Leg2 → Leg3 → Leg4), where Leg1 and Leg4 belong to SystemA, and Leg2 and Leg3 belong to SystemB. In SystemA, even if riders travel through a different system(B) during the journey, Leg4 can still acquire a discount from Leg1, as long as it remains within a specific amount of time. However, the current Fares v2 spec seems unable to differentiate whether non-direct transfers are allowed.

Furthermore, the current spec also appears unable to distinguish cases where the transfer_countand the timer for duration_limit should be "reset". For instance, in the example above, when transferring to Leg2, it might be necessary to "reset" the timer and transfer_count for SystemB.


We'd love to see any potential solutions and real-world use cases. Please feel free to share any thoughts here.

One possible idea (not sure if it's helpful) - to explicitly define the "fare systems" in the spec by defining "group of networks". Perhaps in networks.txt using similar mechanism to stops.parent_station + location_type, or adding a new "group of networks" file. Consumers can calculate transfer_count and duration time independently in each "fare system", and by default allow non-direct transfer in a system, if the rider travels on a different leg in a different system in between.

Even within a single "system", there are example of non-sequential transfers at the MBTA in Boston whenever we operate free services. Here is one real-world example (references system diagram below) that will be taking place next month due to scheduled track maintenance—@tzujenchanmbd, let me know if you would prefer to consider this out of the current scope since it is within the same agency/feed:

  • On most evenings, someone boards the Red Line at South Station, alights at Harvard, and transfers to to Route 71 toward Watertown Square for the commute home.
    • There is allowed a free, single transfer from the Red Line to a bus, with a validity period of 120 minutes from the time of the initial fare validation (at South Station, in this case).
  • On certain nights, there will be special maintenance during which free buses will replace Red Line train service between Alewife and Park Street. On these nights, someone will board the Red Line at South Station, alight the train at Park Street, board bus from Park Street to Harvard, and finally switch at Harvard to the Route 71 bus.
    • In this case, the shuttle bus/bus bridge from Park Street to Harvard is free; in fact, no fare validation takes place on this first bus whatsoever. The Red Line and the Route 71 bus both require fare validations as normal.
    • When boarding the Route 71 bus at Harvard, the transfer from the Red Line at South Station is accepted, and the validity period remains based on the boarding at South Station (rather than the bus bridge boarding at Park Street). From the perspective of the fare system, it is as if the middle leg (bus Park Street to Harvard) never took place.
Screen Shot 2024-01-22 at 19 27 05

Here is a proposal of simply adding a new field to explicitly define if the transfer rule is used for sequential transfer only.
We plan to discuss this proposal in the July WGM.

(tagging consumers for review - @jsteelz, @npaun, @bdferris-v2)