Referencia de GTFS Realtime

Un feed GTFS Realtime permite que las empresas de transporte público brinden a los usuarios información en tiempo real sobre las interrupciones en sus servicios (estaciones cerradas, líneas que no funcionan, retrasos importantes, etc.), la ubicación de sus vehículos y los horarios de llegada esperados.

La versión 2.0 de la especificación del feed se analiza y documenta en este sitio.

Definiciones de términos

Obligatorio

En la v2.0, o versiones superiores, de la especificación GTFS-realtime, en la columna Obligatorio, se describe qué campos debe proporcionar un productor a fin de que los datos de transporte público sean válidos y tengan sentido para una aplicación de consumo.

Los siguientes valores se utilizan en el campo Obligatorio:

  • Obligatorio: El productor del feed GTFS-realtime debe proveer un valor para este campo.
  • Condicionalmente obligatorio: Este campo es obligatorio en determinadas condiciones, las cuales se explican en el campo Descripción. Fuera de estas condiciones, el campo es opcional.
  • Opcional: Este campo es opcional y el productor no tiene la obligación de implementarlo. Sin embargo, si los datos están disponibles en los sistemas subyacentes de ubicación automática del vehículo (p. ej., VehiclePosition timestamp), se recomienda que los productores proporcionen estos campos opcionales cuando sea posible.

Ten en cuenta que, en la versión 1.0 de la especificación GTFS Realtime, no se definieron los requisitos semánticos y, por lo tanto, es posible que los feeds con gtfs_realtime_version igual a 1 no cumplan con estos requisitos. Para obtener información más detallada, consulta la propuesta de requisitos semánticos.

Cardinalidad

La cardinalidad representa la cantidad de elementos que se pueden proporcionar en un campo en particular. Estos elementos pueden tener los siguientes valores:

Para saber cuándo un campo es obligatorio, opcional o condicionalmente obligatorio, consulta siempre los campos Obligatorio y Descripción. Para conocer la cardinalidad del búfer de protocolo, consulta gtfs-realtime.proto.

Tipos de datos del búfer de protocolo

Los siguientes tipos de datos del búfer de protocolo se utilizan para describir los elementos del feed:

  • message: tipo complejo
  • enum.: lista de valores fijos

Campos experimentales

Los campos etiquetados como experimentales están sujetos a cambio y aún no se han adoptado formalmente en la especificación. Es posible que un campo experimental se adopte formalmente en el futuro.

Índice de elementos

Elementos

mensaje FeedMessage

El contenido de un mensaje de feed. Cada mensaje de la transmisión se obtiene como respuesta a una solicitud HTTP GET adecuada. Un feed en tiempo real siempre se define en relación con un Feed GTFS existente. Todos los id de entidad se resuelven con respecto al Feed GTFS.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
header FeedHeader Obligatorio Uno Metadatos sobre este feed y sobre el mensaje del feed.
entity FeedEntity Condicionalmente obligatorio Muchos Contenidos del feed. Si hay información en tiempo real disponible para el sistema de transporte público, se debe proporcionar un valor para este campo. Si este campo está vacío, los usuarios deben suponer que no hay información en tiempo real disponible para el sistema.

mensaje FeedHeader

Metadatos sobre un feed, incluido en los mensajes del feed

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
gtfs_realtime_version string Obligatorio Uno Versión de la especificación del feed. La versión actual es 2.0.
incrementality Incrementality Obligatorio Uno
timestamp uint64 Obligatorio Uno Esta marca de tiempo identifica el momento en el que se creó el contenido de este feed (en la hora del servidor), expresada en tiempo POSIX (es decir, la cantidad de segundos desde el 1 de enero de 1970 a las 00:00:00, UTC). Para evitar el desvío de tiempo entre los sistemas que producen y que consumen información en tiempo real, se recomienda derivar la marca de tiempo desde un servidor de tiempo. Es totalmente aceptable utilizar servidores de estrato 3 o, incluso, inferiores, ya que las diferencias de tiempo de hasta un par de segundos son tolerables.

enum. Incrementality

Determina si la búsqueda actual es incremental.

  • FULL_DATASET: La actualización de este feed reemplazará toda la información en tiempo real anterior para el feed. Por lo tanto, se espera que esta actualización proporcione un resumen completo de toda la información en tiempo real conocida.
  • DIFFERENTIAL: En este momento, este modo no se admite y su comportamiento no se especifica para los feeds que usan este modo. En la lista de distribución de GTFS Realtime, hay debates relacionados con la especificación completa del comportamiento del modo DIFFERENTIAL. La documentación correspondiente se actualizará cuando esos debates finalicen.

Valores

Valor
FULL_DATASET
DIFFERENTIAL

mensaje FeedEntity

La definición (o actualización) de una entidad en el feed de transporte público. Si la entidad no se elimina, se debe completar uno de los campos "trip_update", "vehicle" y "alert".

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
id string Obligatorio Uno Identificador único del feed para esta entidad. Los id solo se utilizan para proporcionar soporte de incrementalidad. Las entidades reales a las que hace referencia el feed se deben especificar mediante selectores explícitos (para obtener más información, consulta EntitySelector más adelante).
is_deleted bool Opcional Uno Establece si esta entidad se debe eliminar. Se debe proporcionar solo para los feeds con una incrementalidad DIFFERENTIAL; este campo NO se debe proporcionar para los feed con una incrementalidad FULL_DATASET.
trip_update TripUpdate Condicionalmente obligatorio Uno Datos sobre los retrasos de salida en tiempo real de un viaje. Se debe proporcionar, al menos, uno de los campos trip_update, vehicle o alert; estos campos no pueden estar todos vacíos.
vehicle VehiclePosition Condicionalmente obligatorio Uno Datos sobre la posición en tiempo real de un vehículo. Se debe proporcionar, al menos, uno de los campos trip_update, vehicle o alert; estos campos no pueden estar todos vacíos.
alert Alert Condicionalmente obligatorio Uno Datos sobre las alertas en tiempo real. Se debe proporcionar, al menos, uno de los campos trip_update, vehicle o alert; estos campos no pueden estar todos vacíos.

mensaje TripUpdate

Actualización en tiempo real del progreso de un vehículo en un viaje. Consulte también el debate general de las entidades de actualizaciones de viajes.

Según el valor de ScheduleRelationship, una TripUpdate puede especificar lo siguiente:

  • Un viaje que avanza según la programación.
  • Un viaje que avanza por una ruta, pero que no tiene una programación fija.
  • un viaje que se agregó o quitó, en relación con un horario

Las actualizaciones pueden ser para eventos de llegada y salida futuros y previstos, o para eventos pasados que ya ocurrieron. En la mayoría de los casos, la información sobre los eventos pasados es un valor medido; por lo tanto, se recomienda que su valor de incertidumbre sea 0. Aunque puede haber algunos casos en los que esto no sea así; por lo tanto, se admiten valores de incertidumbre distintos de 0 para los eventos pasados. Si el valor de incertidumbre de una actualización no es 0, la actualización es una predicción aproximada para un viaje que no se completó, la medición no es precisa o la actualización fue una predicción para un evento pasado que no se verificó después de que ocurrió dicho evento.

Ten en cuenta que la actualización puede describir un viaje que ya se completó. En este caso, basta con proporcionar una actualización para la última parada del viaje. Si el tiempo de llegada a la última parada es en el pasado, el cliente concluirá que todo el viaje es pasado (es posible proporcionar también actualizaciones para las paradas anteriores, aunque no tiene mucho sentido hacerlo). Esta opción es la más relevante para un viaje que se completó antes de lo establecido en el horario, pero que, según este, todavía está en curso en este momento. Quitar las actualizaciones de este viaje podría hacer que el cliente considere que el viaje todavía está en curso. Ten en cuenta que el proveedor del feed tiene permitido borrar definitivamente las actualizaciones pasadas, aunque no está obligado a hacerlo. Sin embargo, si decide hacerlo en este caso, sería de utilidad.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
trip TripDescriptor Obligatorio Uno El viaje al cual se aplica este mensaje. Puede haber, como máximo, una entidad TripUpdate para cada instancia de viaje real. Si no hay ninguna, no habrá información sobre predicciones disponible. Esto no significa que el viaje está en curso de acuerdo con el horario.
vehicle VehicleDescriptor Opcional Uno Información adicional sobre el vehículo que está realizando el viaje.
stop_time_update StopTimeUpdate Condicionalmente obligatorio Muchos Las actualizaciones de StopTimes para el viaje (futuras, como las predicciones, y, en algunos casos, pasadas, es decir, aquellas que ya ocurrieron). Las actualizaciones se deben ordenar por stop_sequence y se deben aplicar a todas las siguientes paradas del viaje hasta la próxima stop_time_update especificada. Se debe proporcionar, al menos, una stop_time_update para el viaje, a menos que la trip.schedule_relationship tenga un valor CANCELLED; si el viaje se cancela, no es necesario proporcionar ninguna stop_time_update.
timestamp uint64 Opcional Uno Momento en el que se midió el progreso en tiempo real del vehículo, expresado en tiempo POSIX (es decir, la cantidad de segundos desde el 1 de enero de 1970 a las 00:00:00, UTC).
delay int32 Opcional Uno La desviación actual del horario del viaje. El retraso solo se debe especificar cuando la predicción se realiza con relación a un horario existente en GTFS.
El retraso (en segundos) puede ser positivo (significa que el vehículo está retrasado) o negativo (significa que el vehículo está adelantado). Un retraso de 0 significa que el vehículo está exactamente a horario.
La información de retraso en StopTimeUpdates tiene prioridad sobre la información de retraso a nivel del viaje, para que este último retraso solo se propague hasta la siguiente parada a lo largo del viaje con un valor de retraso StopTimeUpdate especificado.
Se recomienda encarecidamente que los proveedores de feeds proporcionen un valor de TripUpdate.timestamp que indique cuándo se actualizó por última vez el valor del retraso, a fin de evaluar la vigencia de los datos.
Precaución: Este campo aún es experimental y está sujeto a cambios. Es posible que se adopte de manera formal en un futuro.

mensaje StopTimeEvent

Información de horarios para un solo evento previsto (ya sea la llegada o la partida). Los horarios incluyen información sobre incertidumbre, retrasos y tiempos estimados.

  • La información de retraso se debe utilizar cuando la predicción se realiza con relación a un horario existente en la estimación GTFS.
  • La información de tiempo se debe brindar, aunque no haya un horario previsto. Si se especifica tanto el tiempo como el retraso, el tiempo tendrá prioridad (aunque, por lo general, el tiempo, si se brinda para un viaje programado, debe ser igual al tiempo programado en la estimación GTFS más el retraso).

La incertidumbre se aplica de la misma forma tanto para el tiempo como para el retraso. La incertidumbre específica, aproximadamente, el error esperado en un retraso real (pero ten en cuenta, que todavía no definimos su significado estadístico preciso). Es posible que la incertidumbre sea 0, por ejemplo, para los trenes que funcionan con un control de horarios por computadora.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
delay int32 Condicionalmente obligatorio Uno El retraso (en segundos) puede ser positivo (significa que el vehículo está retrasado) o negativo (significa que el vehículo está adelantado). Un retraso de 0 significa que el vehículo está exactamente a horario. En un StopTimeEvent, se debe proporcionar un valor para delay o time; estos campos no pueden estar los dos vacíos.
time int64 Condicionalmente obligatorio Uno Evento como tiempo absoluto, expresado en tiempo POSIX (es decir, la cantidad de segundos desde el 1 de enero de 1970 a las 00:00:00, UTC). En un StopTimeEvent, se debe proporcionar un valor para delay o time; estos campos no pueden estar los dos vacíos.
uncertainty int32 Opcional Uno Si se omite la incertidumbre, se interpreta como desconocida. Para especificar una predicción completamente certera, establece la incertidumbre en 0.

mensaje StopTimeUpdate

La actualización en tiempo real para los eventos de llegada o salida correspondientes a una determinada parada de un viaje. Consulta también el debate general de las actualizaciones de horarios de paradas en los documentos de TripDescriptor y las entidades de actualizaciones de viajes.

Las actualizaciones se pueden proporcionar tanto para eventos pasados como futuros. El productor tiene permitido brindar información sobre eventos pasados, aunque no está obligado a hacerlo. La actualización está vinculada a una parada específica, ya sea a través de stop_sequence o de stop_id, de manera que, necesariamente, se debe definir uno de estos campos. Si en un viaje se usa el mismo stop_id más de una vez, se debe proporcionar la stop_sequence en todas las StopTimeUpdates correspondientes a ese stop_id de ese viaje.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
stop_sequence uint32 Condicionalmente obligatorio Uno Esta información debe ser igual a la proporcionada en el archivo stop_times.txt en el Feed GTFS correspondiente. En una StopTimeUpdate, se debe proporcionar un valor para stop_sequence o stop_id. Estos campos no pueden estar los dos vacíos. Se requiere un valor para stop_sequence en los viajes que usan el mismo stop_id más de una vez (p. ej., un bucle) a fin de identificar la parada a la cual corresponde la predicción.
stop_id string Condicionalmente obligatorio Uno Debe ser el mismo que el del archivo stops.txt en el feed GTFS correspondiente. En una StopTimeUpdate, se debe proporcionar un valor para stop_sequence o stop_id. Estos campos no pueden estar los dos vacíos.
arrival StopTimeEvent Condicionalmente obligatorio Uno En StopTimeUpdate, si schedule_relationship está vacío o tiene un valor SCHEDULED, se debe proporcionar un valor para arrival o departure; estos campos no pueden estar los dos vacíos. Los campos arrival y departure pueden estar los dos vacíos si schedule_relationship tiene un valor SKIPPED. Si schedule_relationship tiene un valor NO_DATA, los campos arrival y departure deben estar vacíos.
departure StopTimeEvent Condicionalmente obligatorio Uno En StopTimeUpdate, si schedule_relationship está vacío o tiene un valor SCHEDULED, se debe proporcionar un valor para arrival o departure; estos campos no pueden estar los dos vacíos. Los campos arrival y departure pueden estar los dos vacíos si schedule_relationship tiene un valor SKIPPED. Si schedule_relationship tiene un valor NO_DATA, los campos arrival y departure deben estar vacíos.
schedule_relationship ScheduleRelationship Opcional Uno La relación predeterminada es SCHEDULED.

enum. ScheduleRelationship

La relación entre este StopTime y la programación estática

Valores

Valor Comentario
SCHEDULED El vehículo avanza según su programación estática de paradas, aunque no necesariamente de acuerdo con los tiempos del horario. Este es el comportamiento predeterminado. Se debe proporcionar, al menos, uno de los horarios de llegada y de salida.
SKIPPED La parada se omite, es decir, el vehículo no se detendrá en esta parada. Los valores de llegada y salida son opcionales.
NO_DATA No se proporcionan datos para esta parada. Esto indica que no hay información en tiempo real disponible. Cuando se establece NO_DATA, esto se propaga a las siguientes paradas, de manera que esta es la forma recomendada de especificar desde qué parada no tienes información en tiempo real. Cuando se establece NO_DATA, no se deben proporcionar los datos de llegada ni de salida.

mensaje VehiclePosition

Información de posicionamiento en tiempo real para un vehículo dado

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
trip TripDescriptor Opcional Uno El viaje que está haciendo este vehículo. Puede estar vacío o parcialmente vacío si el vehículo no se puede identificar con una instancia de viaje específica.
vehicle VehicleDescriptor Opcional Uno Información adicional sobre el vehículo que está realizando el viaje. Cada entrada debe tener un id de vehículo único.
position Position Opcional Uno Posición actual de este vehículo.
current_stop_sequence uint32 Opcional Uno El índice de la secuencia de paradas de la parada actual. El significado de current_stop_sequence (es decir, la parada a la que hace referencia) está determinado por current_status. Si falta el valor de current_status, se asume el valor de IN_TRANSIT_TO.
stop_id string Opcional Uno Identifica la parada actual. El valor debe ser el mismo que el del archivo stops.txt en el feed GTFS correspondiente.
current_status VehicleStopStatus Opcional Uno El estado exacto del vehículo con respecto a la parada actual. Se ignora si falta el valor en current_stop_sequence.
timestamp uint64 Opcional Uno Momento en el cual se midió la posición del vehículo, expresado en tiempo POSIX (es decir, la cantidad de segundos desde el 1 de enero de 1970 a las 00:00:00, UTC).
congestion_level CongestionLevel Opcional Uno
occupancy_status OccupancyStatus Opcional Uno El nivel de ocupación de pasajeros del vehículo.
Precaución: Este campo aún es experimental y está sujeto a cambios. Es posible que se adopte de manera formal en un futuro.

enum. VehicleStopStatus

Valores

Valor Comentario
INCOMING_AT El vehículo está a punto de llegar a la parada (en la visualización de la parada el símbolo del vehículo, por lo general, parpadea).
STOPPED_AT El vehículo está detenido en la parada.
IN_TRANSIT_TO El vehículo ha salido de la parada anterior y está en tránsito.

enum. CongestionLevel

El nivel de congestión que está afectando al vehículo.

Valores

Valor
UNKNOWN_CONGESTION_LEVEL
RUNNING_SMOOTHLY
STOP_AND_GO
CONGESTION
SEVERE_CONGESTION

enum OccupancyStatus

El nivel de ocupación de pasajeros del vehículo.

Precaución: Este campo aún es experimental y está sujeto a cambios. Es posible que se adopte de manera formal en un futuro.

Valores

Valor Comentario
EMPTY En la mayoría de las medidas, se considera que el vehículo está vacío y tiene pocos o ningún pasajero a bordo, pero aún acepta pasajeros.
MANY_SEATS_AVAILABLE El vehículo tiene un gran porcentaje de asientos disponibles. El productor determina a su discreción cuál es el porcentaje de asientos libres del total de asientos disponibles que se considera que es lo suficientemente grande como para incluirse en esta categoría.
FEW_SEATS_AVAILABLE El vehículo tiene un porcentaje pequeño de asientos disponibles. El productor determina a su discreción cuál es el porcentaje de asientos libres del total de asientos disponibles que se considera que es lo suficientemente pequeño como para incluirse en esta categoría.
STANDING_ROOM_ONLY Actualmente, el vehículo a solo puede aceptar pasajeros de pie.
CRUSHED_STANDING_ROOM_ONLY Actualmente, el vehículo a solo puede aceptar pasajeros de pie y tiene espacio limitado para ellos.
FULL En la mayoría de las medidas, se considera que el vehículo está lleno, pero es posible que aún acepte pasajeros a bordo.
NOT_ACCEPTING_PASSENGERS El vehículo no puede aceptar pasajeros.

mensaje Alert

Una alerta que indica que existe algún tipo de incidente en la red de transporte público.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
active_period TimeRange Opcional Muchos Tiempo durante el cual se debe mostrar la alerta al usuario. Si falta, la alerta se mostrará durante todo el tiempo que aparezca en el feed. Si se establecen varios intervalos, la alerta se mostrará durante todos ellos.
informed_entity EntitySelector Obligatorio Muchos Entidades a cuyos usuarios debemos notificar esta alerta. Se debe proporcionar, al menos, una informed_entity.
cause Cause Opcional Uno
effect Effect Opcional Uno
url TranslatedString Opcional Uno La URL que proporciona información adicional sobre la alerta.
header_text TranslatedString Obligatorio Uno Encabezado de la alerta. Esta cadena de texto sin formato se destacará, por ejemplo, en negrita.
description_text TranslatedString Obligatorio Uno Descripción de la alerta. A esta cadena de texto sin formato se le aplicará el formato del cuerpo de la alerta (o se mostrará en una solicitud explícita de "expansión" realizada por el usuario). La información de la descripción debe completar la información del encabezado.

enum. Cause

Causa de la alerta

Valores

Valor
UNKNOWN_CAUSE
OTHER_CAUSE
TECHNICAL_PROBLEM
STRIKE
DEMONSTRATION
ACCIDENT
HOLIDAY
WEATHER
MAINTENANCE
CONSTRUCTION
POLICE_ACTIVITY
MEDICAL_EMERGENCY

enum. Effect

El efecto de este problema en la entidad afectada.

Valores

Valor
NO_SERVICE
REDUCED_SERVICE
SIGNIFICANT_DELAYS
DETOUR
ADDITIONAL_SERVICE
MODIFIED_SERVICE
OTHER_EFFECT
UNKNOWN_EFFECT
STOP_MOVED

mensaje TimeRange

Un intervalo de tiempo. El intervalo se considera activo en el momento t si t es mayor o igual que la hora de inicio y menor que la hora de finalización.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
start uint64 Condicionalmente obligatorio Uno Hora de inicio, expresada en tiempo POSIX (es decir, la cantidad de segundos desde el 1 de enero de 1970 a las 00:00:00, UTC). Si falta esta información, el intervalo comienza con un valor infinito negativo. Si se proporciona un TimeRange, se debe proporcionar un valor para start o end; estos campos no pueden estar los dos vacíos.
end uint64 Condicionalmente obligatorio Uno Hora de finalización, expresada en tiempo POSIX (es decir, la cantidad de segundos desde el 1 de enero de 1970 a las 00:00:00, UTC). Si falta esta información, el intervalo finaliza con un valor infinito positivo. Si se proporciona un TimeRange, se debe proporcionar un valor para start o end; estos campos no pueden estar los dos vacíos.

mensaje Position

La posición geográfica de un vehículo

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
latitude float Obligatorio Uno Grados norte, en el sistema de coordenadas WGS84.
longitude float Obligatorio Uno Grados este, en el sistema de coordenadas WGS84.
bearing float Opcional Uno Orientación, en grados, en el sentido de las agujas del reloj desde el norte verdadero; es decir, 0 es el norte y 90 es el este. Esto puede ser la orientación de la brújula o la dirección hacia la siguiente parada o la ubicación intermedia. Esto no debe deducirse a partir de la secuencia de posiciones anteriores, que los clientes pueden calcular a partir de los datos anteriores.
odometer double Opcional Uno El valor del odómetro en metros.
speed float Opcional Uno Velocidad momentánea medida por el vehículo, en metros por segundo.

mensaje TripDescriptor

Un descriptor que identifica una única instancia de un viaje de GTFS.

Para especificar una sola instancia de viaje, un trip_id por sí solo funciona bien en muchas ocasiones. Sin embargo, los siguientes casos requieren información adicional para resolver una sola instancia de viaje:

  • Si el viaje se define en el archivo frequencies.txt, se deben incluir start_date y start_time además de trip_id.
  • Si el viaje dura más de 24 horas o se retrasa de manera tal que se superpondría con un viaje programado para el día siguiente, debes proporcionar start_date y trip_id.
  • Si no se puede proporcionar el campo trip_id, debes incluir los campos route_id, direction_id, start_date y start_time.

En todos los casos, si se proporcionan route_id y trip_id, route_id debe coincidir con el campo route_id asignado al viaje dado en el archivo trips.txt de GTFS.

El campo trip_id no puede, por sí mismo o en combinación con otros campos TripDescriptor, usarse para identificar varias instancias de viaje. Si TripDescriptor no resuelve ninguna instancia de viaje, o bien resuelve varias, en lugar de una sola, esto se considera un error. Es posible que los usuarios descarten la entidad que contiene el campo TripDescriptor erróneo.

Por ejemplo, si se define un viaje en el archivo frequencies.txt de GTFS con un valor exact_times=0, un TripDescriptor nunca debe especificar trip_id por sí mismo. Esto se debe a que, cuando resuelves una sola instancia de viaje que comienza en un horario específico del día, también debes proporcionar start_time.

Ten en cuenta que, si no se conoce el trip_id, los ID de la secuencia de la estación en TripUpdate no son suficientes, y también se deberán proporcionar los campos stop_id. Además, se deben incluir las horas absolutas de llegada y salida.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
trip_id string Condicionalmente obligatorio Uno El trip_id del Feed GTFS al cual hace referencia este selector. El campo trip_id es obligatorio en función del tipo de viaje:
Viajes que no están basados en la frecuencia: El campo trip_id por sí solo es suficiente para identificar estos viajes de forma exclusiva. Ten en cuenta que estos viajes no se definen en el archivo frequencies.txt de GTFS.
Viajes basados en la frecuencia: Los campos trip_id, start_time y start_date son obligatorios. Estos viajes se definen en el archivo frequencies.txt de GTFS.
Viajes basados en horarios: El campo trip_id solo se puede omitir en el caso de que el viaje se pueda identificar de forma exclusiva mediante una combinación de los campos route_id, direction_id, start_time y start_date proporcionados. Ten en cuenta que estos viajes no se definen en el archivo frequencies.txt de GTFS.
route_id string Condicionalmente obligatorio Uno El route_id del Feed GTFS al cual hace referencia este selector. Si se omite trip_id, se deben configurar route_id, direction_id, start_time y schedule_relationship=SCHEDULED para identificar una instancia de viaje.
direction_id uint32 Condicionalmente obligatorio Uno El direction_id del archivo trips.txt del Feed GTFS, que indica la dirección de viaje. Si se omite trip_id, se debe proporcionar direction_id.
Precaución: Este campo aún es experimental y está sujeto a cambios. Es posible que se adopte de manera formal en el futuro.
start_time string Condicionalmente obligatorio Uno La hora de inicio programada inicialmente de esta instancia de viaje. El tipo de campo Hora define el formato de este campo, por ejemplo, 11:15:35 o 25:15:35. El campo start_time es obligatorio en función del tipo de viaje:
El trip_id corresponde a un viaje que no está basado en la frecuencia: El campo start_time se debe omitir, o bien su valor debe ser igual al de departure_time en el archivo stop_times.txt del Feed GTFS.
El trip_id corresponde a un viaje basado en la frecuencia: El campo start_time siempre es obligatorio y se debe especificar para las actualizaciones de viajes y las posiciones de vehículos. Estos viajes se definen en el archivo frequencies.txt de GTFS.
Si el viaje basado en la frecuencia corresponde al registro exact_times=1 de GTFS: El campo start_time debe ser un múltiplo (incluido el cero) de headway_secs superior al valor del campo start_time del archivo frequencies.txt para el período correspondiente.
Si el viaje basado en la frecuencia corresponde al registro exact_times=0 de GTFS: El campo start_time puede ser arbitrario, y se espera, inicialmente, que sea la primera salida del viaje. Una vez establecido, el start_time de este viaje basado en la frecuencia con valor de exact_times=0 se debe considerar inmutable, incluso si el primer horario de salida cambia. Cualquier cambio de horario posterior se puede reflejar en un mensaje StopTimeUpdate.
Si se omite trip_id: Se debe proporcionar start_time.
start_date string Condicionalmente obligatorio Uno La fecha de inicio de esta instancia de viaje en formato AAAAMMDD. El campo start_date es obligatorio en función del tipo de viaje:
Viajes programados: Se debe proporcionar start_date a fin de desambiguar los viajes que están tan retrasados que se superponen con un viaje programado para el día siguiente. Por ejemplo, para un tren que sale a las 8:00 y a las 20:00 todos los días, y está 12 horas retrasado, habría dos viajes distintos programados para la misma hora.
Nota: Este campo es opcional para los viajes programados en los que es imposible que se produzca tal superposición. Por ejemplo, esto podría suceder si un servicio funciona cada hora y un vehículo que está una hora retrasado se deja de considerar como relacionado al horario.
Viajes basados en la frecuencia: Se debe proporcionar start_date. Ten en cuenta que estos viajes se definen en el archivo frequencies.txt de GTFS, mientras que los viajes programados no.
Si se omite trip_id: Se debe proporcionar start_date.
schedule_relationship ScheduleRelationship Opcional Uno La relación entre este viaje y el horario estático. Si se proporciona TripDescriptor en un EntitySelector de Alert, los usuarios ignoran el campo schedule_relationship cuando identifican la instancia de viaje coincidente.

enum. ScheduleRelationship

La relación entre este viaje y el horario estático. Si un viaje se realiza de acuerdo con el horario temporal, no se refleja en GTFS y, por lo tanto, no se debe marcar como SCHEDULED, sino como ADDED.

Valores

Valor Comentario
SCHEDULED Viaje que se está realizando de acuerdo con su horario de GTFS o que es lo suficientemente parecido al viaje programado como para poder asociarlo con él.
ADDED Un viaje adicional que se agregó además de un horario existente; por ejemplo, para reemplazar un vehículo averiado o para responder a un aumento repentino en la demanda de pasajeros.
UNSCHEDULED Un viaje que se está realizando sin ningún horario asociado. Este valor se utiliza para identificar viajes definidos en el archivo frequencies.txt de GTFS con un valor de exact_times=0. No se debe usar para describir viajes que no están definidos en el archivo frequencies.txt de GTFS ni para viajes que tengan un valor de exact_times=1 en el archivo frequencies.txt de GTFS.
CANCELED Un viaje que existió en el horario, pero que, luego, se quitó.

mensaje VehicleDescriptor

Información de identificación para el vehículo que realiza el viaje.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
id string Opcional Uno Identificación interna del sistema para el vehículo. Debe ser única para cada vehículo y se usa para hacer un seguimiento del vehículo, a medida que se desplaza en el sistema. Este id no debe ser visible para el usuario final. Para eso, utiliza el campo label.
label string Opcional Uno Etiqueta visible para el usuario; es decir, se debe mostrar al pasajero para ayudarlo a identificar el vehículo correcto.
license_plate string Opcional Uno La placa del vehículo.

mensaje EntitySelector

Un selector para una entidad en un feed GTFS. Los valores de los campos deben coincidir con los campos correspondientes del feed GTFS. Se debe proporcionar, al menos, un especificador. Si se proporcionan varios, la coincidencia se debe hacer con todos los especificadores dados.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
agency_id string Condicionalmente obligatorio Uno Se debe proporcionar, al menos, un especificador; en un EntitySelector, no pueden estar todos los campos vacíos.
route_id string Condicionalmente obligatorio Uno Se debe proporcionar, al menos, un especificador; en un EntitySelector, no pueden estar todos los campos vacíos.
route_type int32 Condicionalmente obligatorio Uno Se debe proporcionar, al menos, un especificador; en un EntitySelector, no pueden estar todos los campos vacíos.
trip TripDescriptor Condicionalmente obligatorio Uno Se debe proporcionar, al menos, un especificador; en un EntitySelector, no pueden estar todos los campos vacíos.
stop_id string Condicionalmente obligatorio Uno Se debe proporcionar, al menos, un especificador; en un EntitySelector, no pueden estar todos los campos vacíos.

mensaje TranslatedString

Un mensaje internacionalizado que contiene versiones por idioma de un fragmento de texto o una URL. Se seleccionará una de las cadenas de un mensaje. La resolución procede de la siguiente manera: Si el idioma de la IU coincide con el código de idioma de una traducción, se elige la primera traducción coincidente. Si un idioma de IU predeterminado (p. ej., español) coincide con el código de idioma de una traducción; se elige la primera traducción coincidente. Si alguna traducción tiene un código de idioma no especificado, se elige esa traducción.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
translation Translation Obligatorio Muchos Se debe proporcionar, al menos, una traducción.

mensaje Translation

Una cadena localizada asignada a un idioma.

Campos

Nombre del campo Tipo Obligatorio Cardinalidad Descripción
text string Obligatorio Uno Una cadena UTF-8 que incluye el mensaje.
language string Condicionalmente obligatorio Uno Código de idioma BCP 47. Se puede omitir si el idioma es desconocido o si no se realiza ninguna internacionalización para el feed. Como máximo, una traducción puede tener una etiqueta de idioma no especificado. Si hay más de una traducción, es obligatorio indicar el idioma.