Référence GTFS-realtime

Un flux GTFS-realtime permet aux agences de transports en commun de fournir aux utilisateurs des informations en temps réel sur les perturbations de leur service (stations fermées, lignes non opérationnelles, retards importants, etc.), la position de leurs véhicules et les heures d'arrivée prévues.

La version 2.0 des spécifications du flux est discutée et documentée sur ce site.

Définition des termes

Required

Dans la version 2.0 ou ultérieure du flux GTFS-realtime, la colonne Required décrit les champs qui doivent être définis par un producteur, afin que les données relatives aux transports en commun soient valides et cohérentes dans une application d'utilisation du flux.

Les valeurs suivantes sont utilisées dans le champ Required :

  • Required : ce champ doit être défini par le producteur de flux GTFS-realtime.
  • Conditionally required : ce champ est obligatoire sous certaines conditions, qui sont décrites dans le champ Description. En dehors de ces conditions, le champ est facultatif.
  • Optional : ce champ est facultatif et ne doit pas être obligatoirement mis en œuvre par les producteurs. Cependant, si les données sont disponibles dans les systèmes de localisation automatique des véhicules sous-jacents (par exemple, VehiclePosition timestamp) il est recommandé aux producteurs de définir ces champs facultatifs lorsque cela est possible.

Remarque : Les exigences sémantiques n'ont pas été définies dans la version 1.0 du flux GTFS-realtime. Par conséquent, il se peut que les flux dont la valeur gtfs_realtime_version est définie sur 1 ne répondent pas à ces exigences (voir la proposition des exigences sémantiques pour en savoir plus).

Cardinality

Le champ Cardinality représente le nombre d'éléments susceptibles d'être indiqués dans un champ particulier, avec les valeurs suivantes :

Référez-vous toujours aux champs Required et Description pour déterminer si un champ est "Required", "Conditionally required" ou "Optional". Veuillez ajouter une référence à gtfs-realtime.proto pour la cardinalité du Protocol Buffer.

Types de données Protocol Buffer

Les types de données Protocol Buffer suivants sont utilisés pour décrire les éléments du flux :

  • message : type complexe
  • enum : liste de valeurs fixes

Champs expérimentaux

Les champs indiqués comme étant expérimental sont susceptibles d'être modifiés et n'ont pas encore été officiellement mis en œuvre dans la spécification. Un champ expérimental peut être officiellement mis en œuvre à l'avenir.

Index des éléments

Éléments

message FeedMessage

Désigne le contenu d'un message de flux. Chaque message du flux consiste en une réponse à une requête HTTP GET appropriée. Un flux en temps réel est toujours défini par rapport à un flux GTFS existant. Tous les identifiants d'entité sont résolus dans le cadre du flux GTFS.

Champs

Nom du champ Type Required Cardinality Description
header FeedHeader Required One Métadonnées relatives à ce flux et au message du flux.
entity FeedEntity Conditionally required Many Contenu du flux. Si des informations en temps réel sont disponibles pour le système de transports en commun, ce champ doit être défini. Si ce champ est vide, les utilisateurs doivent supposer qu'aucune information n'est disponible pour le système.

message FeedHeader

Désigne les métadonnées relatives à un flux incluses dans les messages du flux.

Champs

Nom du champ Type Required Cardinality Description
gtfs_realtime_version string Required One Version des spécifications du flux. La version actuelle est 2.0.
incrementality Incrementality Required One
timestamp uint64 Required One Cet horodatage détermine l'heure à laquelle le contenu de ce flux a été créé (à l'heure du serveur). Valeur exprimée à l'heure POSIX (autrement dit, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC). Pour éviter tout décalage entre les systèmes produisant et consommant des informations en temps réel, il est fortement conseillé de définir l'horodatage en fonction de l'heure du serveur. L'utilisation de serveurs Stratum 3 ou même de strate inférieure est tout à fait acceptée, étant donné que les décalages de quelques secondes au plus sont tolérés.

enum Incrementality

Détermine si la récupération en cours est incrémentielle.

  • FULL_DATASET : cette mise à jour du flux écrase toutes les informations en temps réel précédentes pour le flux. Par conséquent, cette mise à jour doit fournir un aperçu complet de toutes les informations en temps réel connues.
  • DIFFERENTIAL : actuellement, ce mode n'est pas compatible, et le comportement n'est pas spécifié pour les flux qui l'utilisent. La liste de diffusion du flux GTFS-realtime fait l'objet d'une discussion au sujet de la spécification complète du comportement relatif au mode DIFFERENTIAL. La documentation sera mise à jour lorsqu'une décision aura été prise.

Valeurs

Valeur
FULL_DATASET
DIFFERENTIAL

message FeedEntity

Désigne une définition (ou mise à jour) d'une entité dans le flux de transports en commun. Si l'entité n'est pas supprimée, au moins l'un des champs '"trip_update", "vehicle" ou "alert" doit être défini.

Champs

Nom du champ Type Required Cardinality Description
id string Required One Identifiant de flux unique pour cette entité. Les identifiants sont utilisés uniquement pour fournir un support à l'incrémentalité. Les entités réelles référencées par le flux doivent être spécifiées par des sélecteurs explicites (voir EntitySelector ci-dessous pour en savoir plus).
is_deleted bool Optional One Détermine si cette entité doit être supprimée. Ce champ doit être défini uniquement pour les flux dont le champ "Incrementality" est défini sur DIFFERENTIAL. Ce champ ne doit PAS être défini pour les flux dont le champ "Incrementality" est défini sur FULL_DATASET.
trip_update TripUpdate Conditionally required One Données sur les retards au départ d'un trajet en temps réel. Au moins l'un des champs "trip_update", "vehicle" ou "alert" doit être défini. Ils ne peuvent pas tous être vides.
vehicle VehiclePosition Conditionally required One Données relatives à la position en temps réel d'un véhicule. Au moins l'un des champs "trip_update", "vehicle" ou "alert" doit être défini. Ils ne peuvent pas tous être vides.
alert Alert Conditionally required One Données relatives à l'alerte en temps réel. Au moins l'un des champs "trip_update", "vehicle" ou "alert" doit être défini. Ils ne peuvent pas tous être vides.

message TripUpdate

Mise à jour en temps réel de la progression d'un véhicule sur un trajet. Veuillez également consulter la discussion générale sur les entités des mises à jour de trajet.

En fonction de la valeur du champ "ScheduleRelationship", le champ "TripUpdate" peut indiquer :

  • un trajet qui respecte les horaires indiqués ;
  • un trajet qui suit un itinéraire, sans horaire fixe ;
  • un trajet qui a été ajouté ou supprimé en fonction des horaires.

Les mises à jour peuvent être appliquées à des arrivées/départs futurs prévus, ou à des événements passés qui se sont déjà produits. Dans la plupart des cas, les informations relatives à des événements passés sont une valeur mesurée, par conséquent, leur valeur d'incertitude recommandée est 0. Il peut néanmoins exister des cas où cette règle ne s'applique pas, il est donc autorisé d'indiquer une valeur d'incertitude différente de 0 pour les événements passés. Si l'incertitude d'une mise à jour n'est pas 0, soit la mise à jour est une prédiction approximative pour un trajet qui ne s'est pas terminé, soit la mesure n'est pas précise ou la mise à jour constituait une prédiction du passé qui n'a pas été vérifiée après la fin de l'événement.

Sachez que la mise à jour peut décrire un trajet déjà effectué. Si c'est le cas, une mise à jour du dernier arrêt du trajet est suffisante. Si l'heure d'arrivée au dernier arrêt est dans le passé, le client en déduira que l'ensemble du trajet est dans le passé (il est néanmoins possible, bien que cela soit sans conséquence, d'effectuer des mises à jour pour les arrêts précédents). Cette option est la plus pertinente pour un trajet qui s'est terminé plus tôt que prévu, même si selon les horaires indiqués, le trajet est toujours en cours à l'heure actuelle. La suppression des mises à jour pour ce trajet peut faire croire au client que le trajet est toujours en cours. Sachez que le fournisseur du flux est autorisé à supprimer définitivement les mises à jour antérieures, mais qu'il n'y est pas obligé. Il s'agit de l'unique cas où cette pratique s'avère concrètement utile.

Champs

Nom du champ Type Required Cardinality Description
trip TripDescriptor Required One Le trajet auquel ce message s'applique. Une limite d'une entité "TripUpdate" est définie pour chaque instance de trajet réelle. Si aucune entité n'est définie, cela signifie qu'aucune information de prédiction n'est disponible. Cela ne signifie pas que le trajet se déroule selon les horaires prévus.
vehicle VehicleDescriptor Optional One Informations supplémentaires sur le véhicule qui effectue le trajet.
stop_time_update StopTimeUpdate Conditionally required Many Mises à jour de StopTimes (futures, c'est-à-dire les prédictions et dans certains cas, passées, autrement dit celles qui se sont déjà produites). Les mises à jour doivent être triées en fonction des champs "stop_sequence" et s'appliquer à tous les arrêts suivants, jusqu'au prochain champ "stop_time_update" défini. Au moins un champ "stop_time_update" doit être défini pour le trajet, à moins que le champ "trip.chedule_relationship" ne présente la valeur CANCELED. Si le trajet est annulé, aucun champ "stop_time_updates" ne doit être défini.
timestamp uint64 Optional One Heure à laquelle la progression en temps réel du véhicule a été mesurée. Valeur exprimée à l'heure POSIX (c'est-à-dire le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC).
delay int32 Optional One Écart actuel entre les horaires prévus et réels du trajet. Le champ "delay" doit être défini uniquement lorsque la prédiction est donnée par rapport à un horaire existant dans le flux GTFS.
La valeur du champ "delay" (exprimée en secondes) peut être positive (le véhicule est en retard) ou négative (le véhicule est en avance). La valeur 0 signifie que le véhicule est exactement à l'heure.
Les informations relatives au retard, mentionnées dans le champ "StopTimeUpdate" prévalent sur celles qui sont indiquées dans le champ "trip-level". Ainsi le retard d'un trajet est uniquement propagé jusqu'au prochain arrêt présentant une valeur de retard spécifiée dans le champ "StopTimeUpdate".
Il est fortement conseillé aux fournisseurs de flux d'indiquer une valeur dans le champ "TripUpdate.timestamp", afin de spécifier l'heure de la dernière mise à jour de la valeur de retard, de manière à indiquer la fraîcheur des données.
Attention : Ce champ est encore experimental et susceptible d'être modifié. À l'avenir, il pourra être officiellement mis en œuvre.

message StopTimeEvent

Désigne les informations de délai pour un seul événement prévu (arrivée ou départ). Le délai correspond à un retard et/ou une heure estimée, ainsi qu'à l'incertitude.

  • Le champ "delay" doit être utilisé lorsqu'une prédiction est donnée par rapport à un horaire existant dans GTFS.
  • Le champ "time" doit être défini, peu importe qu'il y ait un horaire prévu ou non. Si les champs "time" et "delay" sont tous les deux renseignés, c'est le champ "time" qui prévaut (bien que normalement, le champ "time", s'il est défini pour un trajet prévu, doive être égal à l'heure prévue dans le flux GTFS + delay).

Le champ "uncertainty" s'applique de façon égale aux champs "time" et "delay". Le champ "uncertainty" indique de manière approximative l'erreur attendue pour le retard réel (sachez toutefois que son incidence précise sur les statistiques n'est pas déterminée pour le moment). Il est possible que le champ "uncertainty" soit défini à 0, notamment pour des trains qui sont pilotés avec un contrôle de temporisation effectué par ordinateur.

Champs

Nom du champ Type Required Cardinality Description
delay int32 Conditionally required One La valeur du champ "delay" (exprimée en secondes) peut être positive (le véhicule est en retard) ou négative (le véhicule est en avance). La valeur 0 signifie que le véhicule est exactement à l'heure. Au moins l'un des champs "delay" ou "time" doit être indiqué dans StopTimeEvent. Ces champs ne peuvent pas être tous les deux vides.
time int64 Conditionally required One Événement en tant qu'heure absolue. Valeur exprimée à l'heure POSIX (autrement dit, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC). Au moins l'un des champs "delay" ou "time" doit être indiqué dans StopTimeEvent. Ces champs ne peuvent pas être tous les deux vides.
uncertainty int32 Optional One Si le champ "uncertainty" est omis, l'incertitude est considérée comme inconnue. Pour indiquer une prédiction totalement certaine, définissez le champ "uncertainty" à 0.

message StopTimeUpdate

Désigne une mise à jour en temps réel des événements d'arrivée et/ou de départ pour un arrêt donné d'un trajet. Veuillez également consulter la discussion générale sur les mises à jour de l'heure des arrêts dans la documentation TripDescriptor et Mises à jour des trajets.

Les mises à jour peuvent concerner les événements passés et futurs. Le producteur peut ignorer les événements passés (sans y être obligé). La mise à jour concerne un arrêt spécifique, via les champs "stop_sequence" ou "stop_id". Par conséquent, l'un de ces champs doit nécessairement être défini. Si le même "stop_id" est desservi plusieurs fois par un trajet, le champ "stop_sequence" doit être défini dans tous les éléments StopTimeUpdate de ce "stop_id".

Champs

Nom du champ Type Required Cardinality Description
stop_sequence uint32 Conditionally required One Doit être identique à celui du fichier "stop_times.txt" dans le flux GTFS correspondant. L'un des champs "stop_sequence" ou "stop_id" doit être défini dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides. Le champ "stop_sequence" est obligatoire pour les trajets qui desservent le même "stop_id" plusieurs fois (lors d'une boucle par exemple), afin d'identifier l'arrêt concerné par cette prédiction.
stop_id string Conditionally required One Doit être identique à celui du fichier "stops.txt" dans le flux GTFS correspondant. L'un des champs "stop_sequence" ou "stop_id" doit être défini dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides.
arrival StopTimeEvent Conditionally required One Si le champ "schedule_relationship" est vide ou défini à SCHEDULED, le champ "arrival" ou "departure" doit être indiqué dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides. Ces champs peuvent être tous les deux vides si le champ "schedule_relationship" est défini à SKIPPED. Si le champ "schedule_relationship" est défini à NO_DATA, les champs "arrival" et "departure" doivent être vides.
departure StopTimeEvent Conditionally required One Si le champ "schedule_relationship" est vide ou défini à SCHEDULED, le champ "arrival" ou "departure" doit être indiqué dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides. Ces champs peuvent être tous les deux vides si le champ "schedule_relationship" est défini à SKIPPED. Si le champ "schedule_relationship" est défini à NO_DATA, les champs "arrival" et "departure" doivent être vides.
schedule_relationship ScheduleRelationship Optional One La relation par défaut est SCHEDULED.

enum ScheduleRelationship

Désigne la relation entre ce StopTime et les horaires statiques.

Valeurs

Valeur Description
SCHEDULED Le véhicule progresse en respectant les horaires statiques de ses arrêts, bien qu'il ne soit pas forcément conforme aux horaires prévus. Il s'agit du comportement par défaut. Au moins l'un des champs "arrival" et "departure" doit être défini.
SKIPPED L'arrêt est ignoré, c'est-à-dire que le véhicule ne desservira pas cet arrêt. Les champs "arrival" et "departure" sont facultatifs.
NO_DATA Aucune donnée n'est indiquée pour cet arrêt. Cela signifie qu'aucune information en temps réel n'est disponible. Lorsque la valeur NO_DATA est définie, elle est propagée aux arrêts suivants. Il s'agit donc de la manière recommandée pour identifier l'arrêt à partir duquel vous ne disposez pas d'informations en temps réel. Lorsque la valeur NO_DATA est définie, aucun des champs "arrival" ou "departure" ne doit être rempli.

message VehiclePosition

Indique les informations relatives à la position d'un véhicule donné en temps réel.

Champs

Nom du champ Type Required Cardinality Description
trip TripDescriptor Optional One Le trajet que ce véhicule dessert. Ce champ peut être vide ou partiel si le véhicule ne peut pas être identifié avec une instance de trajet donnée.
vehicle VehicleDescriptor Optional One Informations supplémentaires sur le véhicule qui effectue le trajet. Chaque entrée doit présenter un identifiant de véhicule unique.
position Position Optional One Position actuelle de ce véhicule.
current_stop_sequence uint32 Optional One L'index de l'ordre des arrêts de l'arrêt actuel. La signification du champ "current_stop_sequence" (c'est-à-dire l'arrêt qu'il désigne) est déterminée par le champ "current_status". Si le champ "current_status" est absent, la valeur IN_TRANSIT_TO est supposée.
stop_id string Optional One Identifie l'arrêt actuel. La valeur doit être la même que celle indiquée dans le fichier "stops.txt" dans le flux GTFS correspondant.
current_status VehicleStopStatus Optional One L'état exact du véhicule au niveau de l'arrêt actuel. Ce champ est ignoré si le champ "current_stop_sequence" est absent.
timestamp uint64 Optional One Heure à laquelle la position du véhicule a été mesurée. Valeur exprimée à l'heure POSIX (autrement dit, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC).
congestion_level CongestionLevel Optional One
occupancy_status OccupancyStatus Optional One Taux d'occupation du véhicule.
Attention : Ce champ est encore expérimental et susceptible d'être modifié. À l'avenir, il pourra être officiellement mis en œuvre.

enum VehicleStopStatus

Valeurs

Valeur Description
INCOMING_AT Le véhicule est sur le point d'arriver à l'arrêt (le symbole du véhicule clignote généralement sur l'affichage de l'arrêt).
STOPPED_AT Le véhicule est immobilisé à l'arrêt.
IN_TRANSIT_TO Le véhicule a quitté l'arrêt précédent et poursuit sa route.

enum CongestionLevel

Désigne les difficultés de circulation auxquelles est soumis le véhicule.

Valeurs

Valeur
UNKNOWN_CONGESTION_LEVEL
RUNNING_SMOOTHLY
STOP_AND_GO
CONGESTION
SEVERE_CONGESTION

enum OccupancyStatus

Désigne le taux d'occupation du véhicule.

Attention : Ce champ est encore expérimental et susceptible d'être modifié. À l'avenir, il pourra être officiellement mis en œuvre.

Valeurs

Valeur Description
EMPTY Le véhicule est considéré comme étant vide selon la plupart des mesures, et compte peu ou pas de passagers. Ceux-ci sont acceptés à bord.
MANY_SEATS_AVAILABLE Le véhicule présente un grand pourcentage de sièges disponibles. C'est le producteur qui détermine le pourcentage suffisant de sièges inoccupés sur la totalité des sièges disponibles pour appartenir à cette catégorie.
FEW_SEATS_AVAILABLE Le véhicule présente un faible pourcentage de sièges disponibles. C'est le producteur qui détermine le pourcentage suffisamment faible de sièges inoccupés sur la totalité des sièges disponibles pour appartenir à cette catégorie.
STANDING_ROOM_ONLY Le véhicule peut accueillir uniquement des passagers debout pour le moment.
CRUSHED_STANDING_ROOM_ONLY Le véhicule peut accueillir uniquement des passagers debout pour le moment, et l'espace qui leur est réservé est limité.
FULL Le véhicule est considéré comme complet selon la plupart des mesures. Toutefois, un petit nombre de passagers est susceptible d'être accepté à bord.
NOT_ACCEPTING_PASSENGERS Le véhicule ne prend plus de passagers.

message Alert

Désigne une alerte indiquant un incident sur le réseau de transports en commun.

Champs

Nom du champ Type Required Cardinality Description
active_period TimeRange Optional Many Heure à laquelle l'alerte doit être diffusée auprès des utilisateurs. Si ce champ n'est pas défini, l'alerte sera diffusée tant qu'elle apparaît dans le flux. Si plusieurs plages sont indiquées, l'alerte sera diffusée durant chacune d'entre elles.
informed_entity EntitySelector Required Many Entités dont les utilisateurs doivent être informés de cette alerte. Au moins un champ "informed_entity" doit être défini.
cause Cause Optional One
effect Effect Optional One
url TranslatedString Optional One URL qui fournit des informations supplémentaires sur l'alerte.
header_text TranslatedString Required One En-tête de l'alerte. Cette chaîne de texte brut sera mise en évidence (en gras par exemple).
description_text TranslatedString Required One Description de l'alerte. Cette chaîne de texte brut présentera le même format que le corps de l'alerte (ou affichée sur une demande "expand" explicite par l'utilisateur). Les informations contenues dans la description doivent être ajoutées à celles de l'en-tête.

enum Cause

Détermine le motif de cette alerte.

Valeurs

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

enum Effect

Désigne l'effet entraîné par ce problème sur l'entité concernée.

Valeurs

Valeur
NO_SERVICE
REDUCED_SERVICE
SIGNIFICANT_DELAYS
DETOUR
ADDITIONAL_SERVICE
MODIFIED_SERVICE
OTHER_EFFECT
UNKNOWN_EFFECT
STOP_MOVED

message TimeRange

Indique un intervalle de temps. L'intervalle est considéré comme actif à l'heure t si t est supérieure ou égale à l'heure de début et inférieure à l'heure de fin.

Champs

Nom du champ Type Required Cardinality Description
start uint64 Conditionally required One Heure de début, exprimée à l'heure POSIX (c'est-à-dire, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC). Si ce champ n'est pas défini, l'intervalle commence à l'infini négatif. Si le champ "TimeRange" est défini, l'un des champs "start" ou "end" doit être indiqué. Ces champs ne peuvent pas être tous les deux vides.
end uint64 Conditionally required One Heure de fin, exprimée à l'heure POSIX (c'est-à-dire, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC). Si ce champ n'est pas défini, l'intervalle se termine à l'infini positif. Si le champ "TimeRange" est défini, l'un des champs "start" ou "end" doit être indiqué. Ces champs ne peuvent pas être tous les deux vides.

message position

Désigne la position géographique d'un véhicule.

Champs

Nom du champ Type Required Cardinality Description
latitude float Required One Distance angulaire entre la position et l'équateur, exprimée en degrés, dans le système de coordonnées WGS84.
longitude float Required One Distance angulaire entre la position et le méridien de référence, exprimée en degrés, dans le système de coordonnées WGS84.
bearing float Optional One Azimut, exprimé en degrés, mesuré dans le sens horaire à partir du nord géographique, où 0 indique le nord et 90 indique l'est. Il peut s'agir du relèvement au compas, de la direction vers le prochain arrêt, ou de la position intermédiaire. Cette valeur ne doit pas être déduite de l'ordre des positions précédentes, susceptibles d'être calculées par les clients grâce aux données précédentes.
odometer double Optional One Valeur du compteur kilométrique, exprimée en mètres.
speed float Optional One Vitesse instantanée du véhicule, exprimée en mètres par seconde.

message TripDescriptor

Descripteur qui identifie une seule instance de trajet GTFS.

Pour spécifier une instance de trajet unique, il suffit généralement d'utiliser le champ "trip_id" seul. Cependant, dans les situations suivantes, des informations supplémentaires sont nécessaires pour exprimer une instance de trajet unique :

  • Si le trajet est défini dans le fichier "frequencies.txt", vous devez obligatoirement ajouter les champs "start_date" et "start_time" en plus de "trip_id".
  • Si le trajet dure plus de 24 heures ou s'il est suffisamment retardé pour entrer en conflit avec un trajet planifié le jour suivant, renseignez les champs "start_date" et "trip_id".
  • Si vous ne pouvez pas renseigner le champ "trip_id", les champs "route_id", "direction_id", "start_date" et "start_time" sont alors obligatoires.

Dans tous les cas, si les champs "route_id" et "trip_id" sont tous les deux renseignées, la valeur "route_id" doit correspondre à celle du champ "route_id" attribuée au trajet indiqué dans le fichier GTFS "trips.txt".

Le champ "trip_id" seul, ou combiné à d'autres champs de l'élément "TripDescriptor", ne peut pas être utilisé pour identifier plusieurs instances de trajet. Un élément "TripDescriptor" qui correspond à zéro ou à plusieurs instances de trajet (plutôt qu'à une instance) est considéré comme erroné. L'entité qui contient l'élément "TripDescriptor" erroné peut être supprimée par les utilisateurs.

Par exemple, lorsqu'un trajet est défini dans le fichier GTFS "frequencies.txt" avec un champ "exact_times=0", l'élément "TripDescriptor" ne doit jamais spécifier de champ "trip_id" seul. En effet, lorsque vous spécifiez une instance de trajet unique qui démarre à une heure précise de la journée, vous devez également spécifier le champ "start_time".

Notez que si la valeur "trip_id" est inconnue, les identifiants d'ordre des stations figurant dans le champ "TripUpdate" ne sont pas suffisants, et les champs "stop_id" doivent également être définis. En outre, vous devez indiquer des heures d'arrivée et de départ absolues.

Champs

Nom du champ Type Required Cardinality Description
trip_id string Conditionally required One La valeur du champ "trip_id" provient du flux GTFS auquel ce sélecteur fait référence. Le champ "trip_id" peut être obligatoire ou non selon le type de trajet :
Pour les trajets non basés sur la fréquence : le champ "trip_id" seul suffit à identifier ces trajets de façon unique. Notez que les trajets non basés sur la fréquence ne sont pas définis dans le fichier GTFS "frequencies.txt".
Pour les trajets basés sur la fréquence : les champs "trip_id", "start_time" et "start_date" sont tous les trois obligatoires. Les trajets basés sur la fréquence sont définis dans le fichier GTFS "frequencies.txt".
Pour les trajets basés sur un horaire : le champ "trip_id" ne peut être omis que si les champs "route_id", "direction_id", "start_time" et "start_date" combinés permettent d'identifier un trajet de façon unique. Sachez que les trajets basés sur un horaire ne sont pas définis dans le fichier GTFS "frequencies.txt".
route_id string Conditionally required One Le champ "route_id" provient du flux GTFS auquel ce sélecteur fait référence. Si le champ "trip_id" est omis, alors les champs "route_id", "direction_id", "start_time" et "schedule_relationship=SCHEDULED" doivent tous être définis pour identifier une instance de trajet.
direction_id uint32 Conditionally required One Le champ "direction_id" provient du fichier "trips.txt" du flux GTFS. Ce fichier indique la direction du trajet. Si le champ "trip_id" est omis, alors le champ "direction_id" doit être défini.
Attention : Ce champ est encore expérimental et susceptible d'être modifié. À l'avenir, il pourra être officiellement intégré.
start_time string Conditionally required One Heure de début initialement prévue de cette instance de trajet. Le type de champ "Time" définit le format de ce champ, par exemple, 11:15:35 ou 25:15:35. Le champ "start_time" peut être obligatoire ou non selon le type de trajet :
Le champ "trip_id" correspond à un trajet non basé sur la fréquence : le champ "start_time" doit être omis ou être égal à la valeur du champ "departure_time" dans le fichier "stop_times.txt" du flux GTFS.
Le champ "trip_id" correspond à un trajet basé sur la fréquence : le champ "start_time" est obligatoire dans tous les cas, et doit être spécifié pour les mises à jour du trajet et les positions du véhicule. Les trajets basés sur la fréquence sont définis dans le fichier GTFS "frequencies.txt".
Si le trajet basé sur la fréquence correspond à un enregistrement GTFS "exact_times=1" : la valeur du champ "start_time" doit être un multiple (y compris zéro) de la valeur "headway_secs", et postérieure à la valeur "start_time" du fichier "frequencies.txt" de la période correspondante.
Si le trajet basé sur la fréquence correspond à un enregistrement GTFS "exact_times=0" : la valeur du champ "start_time" peut être arbitraire et est initialement prévue pour correspondre au premier départ du trajet. Une fois définie, la valeur "start_time" de ce trajet "exact_times=0" basé sur la fréquence est considérée comme immuable, même si la première heure de départ est modifiée. Les changements d'heure apportés par la suite peut être indiqués dans un message StopTimeUpdate.
Le champ "trip_id" est omis : le champ "start_time" doit être renseigné.
start_date string Conditionally required One Date de début de cette instance de trajet, exprimée au format AAAAMMJJ. Le champ "start_date" peut être obligatoire ou non selon le type de trajet :
Trajets basés sur un horaire : le champ "start_date" doit être fourni. Il permet d'identifier les trajets dont le retard est tel qu'ils entrent en conflit avec un trajet prévu le jour suivant. Prenons l'exemple d'un train qui part à 8:00 et à 20:00 tous les jours. S'il a 12 heures de retard, il y aurait alors deux trajets distincts à la même heure.
Remarque : Si de tels conflits sont impossibles, ce champ est facultatif pour les trajets basés sur un horaire. Par exemple, pour un service qui propose un départ toutes les heures, si un véhicule qui a une heure de retard n'est plus considéré comme lié à l'horaire initial, alors ce champ est facultatif.
Trajets basés sur la fréquence : le champ "start_date" doit être spécifié. Notez que les trajets basés sur la fréquence sont définis dans le fichiers GTFS "frequencies.txt", mais pas ceux basés sur un horaire.
Le champ "trip_id" est omis : le champ "start_date" doit être spécifié.
schedule_relationship ScheduleRelationship Optional One Désigne la relation entre ce trajet et les horaires statiques. Si un message TripDescriptor est fourni dans une alerte EntitySelector, le champ "schedule_relationship" est ignoré par les utilisateurs lorsqu'ils identifient l'instance de trajet correspondante.

enum ScheduleRelationship

Désigne la relation entre ce trajet et les horaires statiques. Si un trajet est effectué conformément aux horaires temporaires, ne figurant pas dans le flux GTFS, il ne doit pas être marqué comme SCHEDULED, mais comme ADDED.

Valeurs

Valeur Description
SCHEDULED Trajet qui est effectué conformément aux horaires GTFS ou qui est suffisamment proche du trajet planifié pour être associé à celui-ci.
ADDED Trajet supplémentaire qui a été ajouté à des horaires en cours, pour remplacer un véhicule endommagé ou répondre à une hausse soudaine du nombre de passagers, par exemple.
UNSCHEDULED Trajet qui ne présente pas d'horaires associés. Cette valeur est utilisée pour identifier les trajets définis dans le fichier GTFS "frequencies.txt" où "exact_times" = 0. Cette valeur ne doit pas être utilisée pour décrire des trajets non définis dans le fichier GTFS "frequencies.txt", ni ceux définis dans le fichier GTFS "frequencies.txt" où "exact_times" = 1.
CANCELED Trajet qui était prévu dans les horaires mais qui a été supprimé.

message VehicleDescriptor

Désigne les informations relatives à l'identification du véhicule effectuant le trajet.

Champs

Nom du champ Type Required Cardinality Description
id string Optional One Système interne d'identification du véhicule. Ce champ doit être unique pour chaque véhicule. Il est utilisé pour suivre le véhicule au fil de son évolution dans le système. Cet identifiant ne doit pas être visible pour l'utilisateur final, contrairement aux valeurs du champ label.
label string Optional One Libellé visible pour l'utilisateur, c'est-à-dire un élément qui doit être affiché aux passagers afin de leur permettre d'identifier le bon véhicule.
license_plate string Optional One Plaque d'immatriculation du véhicule.

message EntitySelector

Désigne un sélecteur d'une entité figurant dans un flux GTFS. Les valeurs de ces champs doivent correspondre à celles des champs appropriés dans le flux GTFS. Au moins un spécificateur doit être indiqué. Si plusieurs sont définis, la correspondance doit être appliquée à tous les spécificateurs donnés.

Champs

Nom du champ Type Required Cardinality Description
agency_id string Conditionally required One Au moins un spécificateur doit être indiqué. Tous les champs figurant dans EntitySelector ne peuvent pas être vides en même temps.
route_id string Conditionally required One Au moins un spécificateur doit être indiqué. Tous les champs figurant dans EntitySelector ne peuvent pas être vides en même temps.
route_type int32 Conditionally required One Au moins un spécificateur doit être indiqué. Tous les champs figurant dans EntitySelector ne peuvent pas être vides en même temps.
trip TripDescriptor Conditionally required One Au moins un spécificateur doit être indiqué. Tous les champs figurant dans EntitySelector ne peuvent pas être vides en même temps.
stop_id string Conditionally required One Au moins un spécificateur doit être indiqué. Tous les champs figurant dans EntitySelector ne peuvent pas être vides en même temps.

message TranslatedString

Désigne un message internationalisé contenant des versions linguistiques d'un extrait de texte ou d'une URL. L'une des chaînes issues d'un message sera sélectionnée. La résolution est effectuée comme suit : si la langue de l'interface utilisateur correspond au code de langue d'une traduction, la première traduction correspondante est sélectionnée. Si la langue par défaut d'une interface utilisateur (par exemple, le français) correspond au code de langue d'une traduction, la première traduction en correspondance est sélectionnée. Si certaines traductions présentent un code de langue non spécifié, celles-ci sont sélectionnées.

Champs

Nom du champ Type Required Cardinality Description
translation Translation Required Many Au moins une traduction doit être indiquée.

message Translation

Désigne une chaîne localisée mappée vers une langue.

Champs

Nom du champ Type Required Cardinality Description
text string Required One Chaîne UTF-8 contenant le message.
language string Conditionally required One Code de langue BCP-47. Ce champ peut être omis si la langue est inconnue ou si aucune internationalisation n'a été effectuée pour le flux. Une seule traduction est autorisée à présenter un indicateur de langue non spécifié. Si plusieurs traductions sont indiquées, la langue doit être spécifiée.