-
Notifications
You must be signed in to change notification settings - Fork 0
Suspiciously no cancelled trips and skipped stops #3
Description
I have never seen any cancelled trip in the feed. While I may of course have overlooked them (or VBB is just so reliable that there are no cancelled trips) I think this is suspicious. E.g. in the last two days, there are no cancellations, if my search is correct:
for f in */*.gtfs-rt.pbf; do cat $f | npx print-gtfs-rt-cli -j -a | grep -c "schedule_relationship\":3"; done
There are also no skipped stops (schedule_relationship 1), even though there are multiple disruptions today, e.g. M13 being diverted between Möllendorffstr./Storkower Str. and Warschauer Str. and Bus 240 between Betriebhof Lichtenberg and S+U Lichtenberg.
Unfortunately I haven't yet found a VBB cancelled trip in some other source with which I could confirm this issue, but I have found one with skipped stops (from 2025-01-12T14%3A18%3A01%2B01%3A00.gtfs-rt.pbf):
Excerpt from feed
{"id":"3197251471.329042","trip_update":{"trip":{"trip_id":"252167676","start_date":"20250112","route_id":"17368_700","direction_id":0},"stop_time_update":[
{"stop_sequence":0,"arrival":{"time":{"low":1736686020,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686020,"high":0,"unsigned":false}},"stop_id":"de:11000:900152504::1"},
{"stop_sequence":1,"arrival":{"time":{"low":1736686050,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686050,"high":0,"unsigned":false}},"stop_id":"de:11000:900152504::2"},
{"stop_sequence":2,"arrival":{"time":{"low":1736686080,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686080,"high":0,"unsigned":false}},"stop_id":"de:11000:900152004::1"},
{"stop_sequence":3,"arrival":{"time":{"low":1736686140,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686140,"high":0,"unsigned":false}},"stop_id":"de:11000:900152511::2"},
{"stop_sequence":4,"arrival":{"time":{"low":1736686200,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686200,"high":0,"unsigned":false}},"stop_id":"de:11000:900152005::2"},
{"stop_sequence":5,"arrival":{"time":{"low":1736686320,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686320,"high":0,"unsigned":false}},"stop_id":"de:11000:900152506::2"},
{"stop_sequence":6,"arrival":{"time":{"low":1736686380,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686380,"high":0,"unsigned":false}},"stop_id":"de:11000:900152507::2"},
{"stop_sequence":7,"arrival":{"time":{"low":1736686440,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686440,"high":0,"unsigned":false}},"stop_id":"de:11000:900151001::2"},
{"stop_sequence":8,"arrival":{"time":{"low":1736686500,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686500,"high":0,"unsigned":false}},"stop_id":"de:11000:900151002::2"},
{"stop_sequence":9,"arrival":{"time":{"low":1736686560,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686560,"high":0,"unsigned":false}},"stop_id":"de:11000:900151008::2"},
{"stop_sequence":10,"arrival":{"time":{"low":1736686680,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686680,"high":0,"unsigned":false}},"stop_id":"de:11000:900152001::2"},
{"stop_sequence":11,"arrival":{"time":{"low":1736686800,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686800,"high":0,"unsigned":false}},"stop_id":"de:11000:900151006::7"},
{"stop_sequence":12,"arrival":{"time":{"low":1736686860,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686860,"high":0,"unsigned":false}},"stop_id":"de:11000:900150002::1"},
{"stop_sequence":13,"arrival":{"delay":2,"time":{"low":1736686922,"high":0,"unsigned":false}},"departure":{"delay":2,"time":{"low":1736686922,"high":0,"unsigned":false}},"stop_id":"de:11000:900150052::1"},
{"stop_sequence":14,"arrival":{"time":{"low":1736686980,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686980,"high":0,"unsigned":false}},"stop_id":"de:11000:900150053::1"},
{"stop_sequence":15,"arrival":{"delay":2,"time":{"low":1736687102,"high":0,"unsigned":false}},"departure":{"delay":2,"time":{"low":1736687102,"high":0,"unsigned":false}},"stop_id":"de:11000:900150504::3"},
{"stop_sequence":16,"arrival":{"time":{"low":1736687220,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687220,"high":0,"unsigned":false}},"stop_id":"de:11000:900150020::1"},
{"stop_sequence":17,"arrival":{"time":{"low":1736687280,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687280,"high":0,"unsigned":false}},"stop_id":"de:11000:900150051::2"},
{"stop_sequence":18,"arrival":{"time":{"low":1736687340,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687340,"high":0,"unsigned":false}},"stop_id":"de:11000:900150050::1"},
{"stop_sequence":19,"arrival":{"time":{"low":1736687400,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687400,"high":0,"unsigned":false}},"stop_id":"de:11000:900150530::1"},
{"stop_sequence":20,"arrival":{"time":{"low":1736687460,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687460,"high":0,"unsigned":false}},"stop_id":"de:11000:900150531::1"},
{"stop_sequence":21,"arrival":{"time":{"low":1736687520,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687520,"high":0,"unsigned":false}},"stop_id":"de:11000:900150523::2"},
{"stop_sequence":22,"arrival":{"time":{"low":1736687580,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687580,"high":0,"unsigned":false}},"stop_id":"de:11000:900150532::1"},
{"stop_sequence":23,"arrival":{"time":{"low":1736687640,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687640,"high":0,"unsigned":false}},"stop_id":"de:11000:900160505::1"},
{"stop_sequence":24,"arrival":{"time":{"low":1736687700,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687700,"high":0,"unsigned":false}},"stop_id":"de:11000:900160012::2"},
{"stop_sequence":25,"arrival":{"time":{"low":1736687760,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687760,"high":0,"unsigned":false}},"stop_id":"de:11000:900160521::3"},
{"stop_sequence":26,"arrival":{"time":{"low":1736687820,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687820,"high":0,"unsigned":false}},"stop_id":"de:11000:900160522::2"},
{"stop_sequence":27,"arrival":{"time":{"low":1736687850,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687850,"high":0,"unsigned":false}},"stop_id":"de:11000:900160523::1"},
{"stop_sequence":28,"arrival":{"time":{"low":1736687880,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687880,"high":0,"unsigned":false}},"stop_id":"de:11000:900160526::1"},
{"stop_sequence":29,"arrival":{"time":{"low":1736687940,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687940,"high":0,"unsigned":false}},"stop_id":"de:11000:900160020::1"},
{"stop_sequence":30,"arrival":{"time":{"low":1736688000,"high":0,"unsigned":false}},"departure":{"time":{"low":1736688000,"high":0,"unsigned":false}},"stop_id":"de:11000:900160549::1"},
{"stop_sequence":31,"arrival":{"time":{"low":1736688060,"high":0,"unsigned":false}},"departure":{"time":{"low":1736688060,"high":0,"unsigned":false}},"stop_id":"de:11000:900160524::1"},
{"stop_sequence":32,"arrival":{"time":{"low":1736688120,"high":0,"unsigned":false}},"departure":{"time":{"low":1736688120,"high":0,"unsigned":false}},"stop_id":"de:11000:900160540::1"}
]}}
Where all stops after de:11000:900160522::2/Betriebshof Lichtenberg (Berlin) should be skipped according to DB – see screenshot.
Not sure about the skipped stops, but for the cancelled trips, this PR might be related, which should fix too short ttls for cancelled trips. However, even then, I would expect cancelled trips to appear at least very shortly (for five minutes) in the feed.