OneBusAway / onebusaway-application-modules

The core OneBusAway application suite.
https://github.com/OneBusAway/onebusaway-application-modules/wiki
Other
205 stars 132 forks source link

Use timepoints to halt propagation of negative schedule deviations #143

Open barbeau opened 9 years ago

barbeau commented 9 years ago

In GTFS, we now have a timepoint field in stop_times.txt, which has the definition:

The timepoint field can be used to indicate if the specified arrival and departure times for a stop are strictly adhered to by the transit vehicle or if they are instead approximate and/or interpolated times.

If an agency specifies "timepoint=1" for a stop in stop_times.txt, I believe that GTFS-rt consumers should NOT propagate negative delays (i.e., buses running ahead of schedule) downstream through these timepoints.

In theory, if the bus operator is adhering to the timepoint, they should hold the bus until they are back on schedule (i.e., a 0 delay). In this situation, it would make sense to change to a 0 delay value at the timepoint stop, and propagate this 0 delay down the line from the timepoint on. It's likely that this would be a more reasonable estimate of when the bus would arrive for stops downstream of the timepoint, rather than a negative delay propagated from further upstream down through the timepoint.

The current problem is that the GTFS-rt spec does not address the timepoint field at all. So, the above behavior would be violate the current spec, which requires all deviations to be fully propagated downstream (unless another prediction is provided with an unspecified duration).

I've posted a clarification request to the GTFS-rt group here: https://groups.google.com/forum/#!topic/gtfs-realtime/IjLaWmLnvbk

...but so far only one response.

It should be noted that onebusaway-gtfs-modules already supports the timepoint field, we just need to bump the version in maven here to make it available to onebusaway-application-modules.

I'd be interested to hear feedback from others running OBA about using the timepoint field for this purpose, and:

  1. Does your agency provide timepoint in your GTFS data?
  2. If so, does your agency instruct operators to hold the bus at timepoint stops when running ahead of schedule?

HART in Tampa does provide timepoint field in their GTFS, and they are interested in this feature. Based on my current conversations with HART, it sounds like they do instruct their drivers to halt at timepoints.

laidig commented 9 years ago

NYMTA doesn't use timepoints for any of the bus GTFS. Operators are instructed to hold if early.

In my prior experience, the use and meaning of timepoints are all over the map. Some agencies are religious about their timepoints, while others just consider them a guide. There are some factors involved in that, mainly the frequency of service. In overnight/low-frequency service, timed connections (and thus, the importance of timepoints) are paramount, while at peak hour buses might "run for the barn."

TLDR: Here there be dragons. If this does make it into OBA, it will need a fair bit of configurability to satisfy a couple use cases.

barbeau commented 9 years ago

Thanks @laidig! I agree that this should, at a minimum, be configurable per agency in OBA, if implemented. We can figure out other potential configuration options as well to fit real-world use cases.