Important: To provide the realtime information about a trip with the TripUpdate feed, refer to Select a trip with TripDescriptor. If it's not feasible for your system to generate predictions for entire trips, make sure your GTFS realtime feed is accurate with a simple TripUpdate feed.
Update times, platforms, & stops for a trip
You can use the TripUpdates feed to display updates to arrival times, platform changes, and whether a stop will be skipped.
Update the arrival timeA stop_time_update
message can provide information about the arrival or departure at a stop for a particular trip. To update the arrival time, provide a TripUpdates feed with a well-matched TripDescriptor and accurate stop_time_update
information for stops and timestamp at which the progress is measured.
You must follow a few basic guidelines:
- The TripUpdates feed should include the best-available prediction of the next upcoming
StopTimeUpdate
. - If possible, the feed should continue to include any previously visited stops. Use
StopTimeUpdates
to represent stops usingstop_id
orstop_sequence
, with values indicating the final times of when the vehicle arrived or departed the stop. - If available, include a
TripUpdate.timestamp
of when the latest measurement of the associated vehicle was taken.
When you successfully create a TripUpdate, we support re-routing based on the realtime departure and arrival times provided through GTFS realtime TripUpdate feeds.
When you provide both TripUpdate and VehiclePosition for the same trip, we’ll decide which type of message to use:
- TripUpdate message with ETAs based on
stop_time_update
information. - VehiclePosition message based on position information with a forecast of the ETAs from our prediction algorithm.
Example
Trip T is scheduled to depart at 7 PM today from station S. The GTFS realtime TripUpdate feed shows that the trip has a delay of 5 minutes at station S. Now, when you search for connections from station S at 7:03 PM, trip T will display as one of the possible connections. The realtime TripUpdate updated the departure time of trip T to be after the scheduled departure time.
Example code:
trip_update {
trip {
trip_id: xxx
start_time: 12:34:56
}
stop_time_update {
stop_sequence: 0
stop_id: "child_stop_id"
arrival {
time: 1284457468
}
}
}
Please ensure that:
- The
start_time
intrip_descriptor
should be the same as thedeparture_time
defined in the static feed. - After the
start_time
is defined to maintain reference to the trip, it should be stable. - Specify the delay with the
stop_time_update
in either thetime
or thedelay
field.
For frequency based schedules, the next trip arrival time always appears as green and on time.
For fixed schedules, the actual delay time displays:
To indicate a change in a stop, the agency can update the stop_id
of the StopTimeUpdate
object. The stop_sequence
must be provided and the replaced stop_id
must be a parent_station
or share a parent_station
with the new stop_id
.
Example code:
trip_update {
trip {
trip_id: xxx
start_time: 12:34:56
}
stop_time_update {
stop_sequence: 0
stop_id: "child_stop_id"
arrival {
time: 1284457468
}
}
}
How users get platform information:
Use a SKIPPED
value for the schedule_relationship
in the StopTimeUpdate
object.
- If the affected stop is a boarding or alighting stop for a user query, then the trip with the skipped stop will be removed from the search results.
- If the affected stop is in the middle of a trip that doesn't require boarding or alighting, the trip won't be removed from search results.
Example code:
trip_update {
trip {
trip_id: xxx
start_time: 12:34:56
}
stop_time_update {
stop_sequence: 0
schedule_relationship: SKIPPED
}
}