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 en temps réel. Par conséquent, les flux dont la valeur gtfs_realtime_version est définie sur 1 ne s'y conforment peut-être pas (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 sur ce flux et le 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). Elle est 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 timestamp 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 de flux écrase toutes les informations en temps réel précédentes pour le flux. Par conséquent, elle doit fournir un aperçu complet de toutes les informations en temps réel connues.
  • DIFFERENTIAL : actuellement, ce mode n'est pas accepté, et son 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, un seul des champs trip_update, vehicle et 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 Facultatif One Détermine si cette entité doit être supprimée. Ce champ ne doit être renseigné que pour les flux dont le champ Incrementality est défini sur DIFFERENTIAL, et NON pour ceux 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. Vous devez renseigner au moins l'un des champs trip_update, vehicle ou alert. Ces champs ne peuvent pas être tous les trois vides.
vehicle VehiclePosition Conditionally required One Données relatives à la position en temps réel d'un véhicule. Vous devez renseigner au moins l'un des champs trip_update, vehicle ou alert. Ces champs ne peuvent pas être tous les trois vides.
alert Alert Conditionally required One Données relatives à l'alerte en temps réel. Vous devez renseigner au moins l'un des champs trip_update, vehicle ou alert. Ces champs ne peuvent pas être tous les trois 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 de 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é validé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 Facultatif 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 du champ 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.schedule_relationship ne présente la valeur CANCELED. Si le trajet est annulé, aucun champ stop_time_updates ne doit être défini.
timestamp uint64 Facultatif 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 Facultatif 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). Si delay présente la valeur 0, cela signifie que le véhicule est exactement à l'heure.
Les informations concernant les retards contenues dans le champ StopTimeUpdates prévalent sur celles qui sont indiquées au niveau du trajet. Ainsi le retard au niveau d'un trajet est uniquement propagé jusqu'au prochain arrêt présentant une valeur StopTimeUpdate spécifiée dans le champ delay.
Il est fortement conseillé aux fournisseurs de flux d'indiquer une valeur TripUpdate.timestamp pour spécifier l'heure de la dernière mise à jour de la valeur delay, afin d'évaluer la fraîcheur des données.
Attention : Ce champ est encore expérimental et susceptible d'être modifié. À l'avenir, il pourra être officiellement intégré.

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, 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, s'il est défini pour un trajet prévu, le champ time devrait être égal à l'heure prévue dans le flux GTFS + le retard).

L'incertitude s'applique de façon égale à l'heure et au retard. Elle définit grossièrement la marge d'erreur du retard (mais sans définir encore son incidence précise sur les statistiques). Il est possible que l'incertitude soit égale à 0, par exemple pour les trains qui sont pilotés par un ordinateur de contrôle de temporisation.

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). Un delay de 0 signifie que le véhicule est exactement à l'heure. Vous devez renseigner au moins l'un des champs delay ou time dans StopTimeEvent. Ces champs ne peuvent pas être tous les deux vides.
time int64 Conditionally required One Événement en tant qu'heure absolue. Elle est exprimée à l'heure POSIX (autrement dit, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC). Vous devez renseigner au moins l'un des champs delay ou time dans StopTimeEvent. Ces champs ne peuvent pas être tous les deux vides.
uncertainty int32 Facultatif One Si l'incertitude est omise, elle est considérée comme inconnue. Pour indiquer une prédiction totalement certaine, définissez l'incertitude à 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 entités des mises à jour de trajet.

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 plus d'une fois dans un trajet, alors, pour ce trajet, stop_sequence doit être fourni dans tous les messages StopTimeUpdates pour ce stop_id pour ce trajet.

Champs

Nom du champ Type Required Cardinality Description
stop_sequence uint32 Conditionally required One La valeur doit être la même que celle indiquée dans le fichier stop_times.txt dans le flux GTFS correspondant. Vous devez renseigner au moins l'un des champs stop_sequence ou stop_id 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 La valeur doit être la même que celle indiquée dans le fichier stops.txt dans le flux GTFS correspondant. Vous devez renseigner au moins l'un des champs stop_sequence ou stop_id dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides.
arrival StopTimeEvent Conditionally required One Si schedule_relationship est vide ou défini sur SCHEDULED, le champ arrival ou departure doit être indiqué dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides. arrival et departure peuvent être tous les deux vides si schedule_relationship est défini sur SKIPPED. Si schedule_relationship est défini sur NO_DATA, arrival et departure doivent être vides.
departure StopTimeEvent Conditionally required One Si schedule_relationship est vide ou défini sur SCHEDULED, le champ arrival ou departure doit être indiqué dans StopTimeUpdate. Ces champs ne peuvent pas être tous les deux vides. arrival et departure peuvent être tous les deux vides si schedule_relationship est défini sur SKIPPED. Si schedule_relationship est défini sur NO_DATA, arrival et departure doivent être vides.
schedule_relationship ScheduleRelationship Facultatif One La relation par défaut est SCHEDULED.

enum ScheduleRelationship

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

Valeurs

Valeur Commentaire
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 renseigné.

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 Facultatif 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 Facultatif 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 Facultatif One Position actuelle de ce véhicule.
current_stop_sequence uint32 Facultatif One L'index de l'ordre des arrêts de l'arrêt actuel. La signification de current_stop_sequence (c'est-à-dire l'arrêt qu'il désigne) est déterminée par current_status. Si current_status est manquant, la valeur IN_TRANSIT_TO est supposée.
stop_id string Facultatif One Identifie l'arrêt actuel. La valeur doit être la même que celle indiquée dans le fichier stops.txt du flux GTFS correspondant.
current_status VehicleStopStatus Facultatif One L'état exact du véhicule au niveau de l'arrêt actuel. Ignoré si current_stop_sequence est manquant.
timestamp uint64 Facultatif One Heure à laquelle la position du véhicule a été mesurée. Elle est exprimée à l'heure POSIX (autrement dit, le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC).
congestion_level CongestionLevel Facultatif One
occupancy_status OccupancyStatus Facultatif 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 intégré.

enum VehicleStopStatus

Valeurs

Valeur Commentaire
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 intégré.

Valeurs

Valeur Commentaire
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 pourcentage de sièges disponibles dans le véhicule ou la voiture est élevé. C'est le producteur qui détermine le nombre minimal de sièges inoccupés sur la totalité des sièges disponibles pour appartenir à cette catégorie.
FEW_SEATS_AVAILABLE Le véhicule ou la voiture présente un faible pourcentage de sièges disponibles. C'est le producteur qui détermine le nombre maximal de sièges inoccupés sur la totalité des sièges disponibles pour appartenir à cette catégorie.
STANDING_ROOM_ONLY Pour le moment, le véhicule ou la voiture ne peut accueillir que des passagers debout.
CRUSHED_STANDING_ROOM_ONLY Pour le moment, le véhicule ou la voiture ne peut accueillir que des passagers debout, et l'espace qui leur est réservé est limité.
FULL Le véhicule est considéré comme complet selon la plupart des mesures, mais il est possible que des passagers puissent encore être acceptés à bord.
NOT_ACCEPTING_PASSENGERS Le véhicule ou la voiture n'accepte pas les passagers. Le véhicule ou la voiture accepte généralement les nouveaux passagers.
NO_DATA_AVAILABLE Le véhicule ou la voiture ne dispose d'aucune donnée sur le nombre de passagers à ce moment-là.
NOT_BOARDABLE Le véhicule ou la voiture n'accepte pas les passagers. À aucun moment il n'est possible d'y embarquer. Utile pour les véhicules et voitures spéciaux (moteur, voiture d'entretien, etc.).

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 Facultatif 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 Facultatif One
effect Effect Facultatif One
url TranslatedString Facultatif 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 start et inférieure à l'heure end.

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 un TimeRange est fourni, l'un des champs start ou end doit être indiqué. Ces champs ne peuvent ê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 un TimeRange est fourni, l'un des champs start ou end doit être indiqué. Ces champs ne peuvent ê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 Facultatif One Azimut, exprimé en degrés, mesuré dans le sens des aiguilles d'une montre à 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 Facultatif One Valeur du compteur kilométrique, exprimée en mètres.
speed float Facultatif 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 frequencies.txt, vous devez obligatoirement ajouter 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 à la fois 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 route_id et trip_id sont tous les deux renseignés, la valeur route_id doit correspondre à celle du champ route_id attribuée au trajet indiqué dans le fichier trips.txt du flux GTFS.

Le champ trip_id seul, ou combiné à d'autres champs 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 seule 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 frequencies.txt du flux GTFS avec 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 start_time.

Notez que si trip_id est inconnu, les identifiants d'ordre des stations figurant dans 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 trip_id 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. Sachez que les trajets non basés sur la fréquence ne sont pas définis dans le fichier frequencies.txt du flux GTFS.
Trajets basés sur la fréquence : les champs trip_id, start_time et start_date sont tous obligatoires. Les trajets basés sur la fréquence sont définis dans le fichier frequencies.txt du flux GTFS.
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 frequencies.txt du flux GTFS.
route_id string Conditionally required One route_id du flux GTFS auquel ce sélecteur fait référence. Si 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 Valeur du champ direction_id provenant du fichier trips.txt du flux GTFS. Elle indique la direction du trajet. Si trip_id est omis, alors direction_id doit être indiqué.
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. start_time peut être obligatoire ou non selon le type de trajet :
Lorsque la valeur du champ trip_id correspond à un trajet non calculé en fonction de la fréquence : le champ start_time doit être omis ou égal à la valeur indiquée pour departure_time dans le fichier stop_times.txt du flux GTFS.
Lorsque la valeur du champ trip_id correspond à un trajet basé sur la fréquence : 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 frequencies.txt du flux GTFS.
Si le trajet basé sur la fréquence correspond à un enregistrement GTFS exact_times=1 : le 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 peuvent être indiqués dans un message StopTimeUpdate.
Si trip_id est omis : start_time doit être défini.
start_date string Conditionally required One Date de début de cette instance de trajet, exprimée au format YYYYMMDD. Le champ start_date peut être obligatoire ou non selon le type de trajet :
Trajets basés sur un horaire : start_date doit être indiqué. 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 : start_date doit être indiqué. Notez que les trajets basés sur la fréquence sont définis dans le fichier frequencies.txt du flux GTFS, mais pas ceux basés sur un horaire.
Si trip_id est omis : start_date doit être indiqué.
schedule_relationship ScheduleRelationship Facultatif One Désigne la relation entre ce trajet et les horaires statiques. Si TripDescriptor est fourni dans un EntitySelector Alert, 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 Commentaire
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 frequencies.txt du flux GTFS où exact_times = 0. Cette valeur ne doit pas être utilisée pour décrire des trajets non définis dans le fichier frequencies.txt du flux GTFS, ni ceux définis dans le fichier frequencies.txt du flux GTFS 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 Facultatif 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. Utilisez le champ label à cet effet.
label string Facultatif 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 Facultatif 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 fournis, ils doivent être interprétés comme étant liés par l'opérateur logique AND. De plus, la combinaison de spécificateurs doit correspondre aux informations associées dans le flux GTFS. En d'autres termes, pour qu'une alerte soit appliquée à une entité dans GTFS, elle doit correspondre à tous les champs EntitySelector fournis. Par exemple, un EntitySelector qui inclut les champs route_id: "5" et route_type: "3" ne s'applique qu'au bus route_id: "5". Il ne s'applique pas aux autres itinéraires de route_type: "3". Si un producteur souhaite qu'une alerte s'applique à route_id: "5" et à route_type: "3", il doit fournir deux champs EntitySelector distincts, l'un faisant référence à route_id: "5", et l'autre faisant référence à route_type: "3".

Au moins un spécificateur doit être indiqué. Tous les champs figurant dans EntitySelector ne peuvent pas être vides en même temps.

Champs

Nom du champ Type Required Cardinality Description
agency_id string Conditionally required One agency_id du flux GTFS auquel ce sélecteur fait référence.
route_id string Conditionally required One route_id du GTFS auquel ce sélecteur fait référence. Si direction_id est fourni, route_id doit également être indiqué.
route_type int32 Conditionally required One route_type du GTFS auquel ce sélecteur fait référence.
direction_id uint32 Conditionally required One direction_id du fichier trips.txt du flux GTFS. Il permet de sélectionner tous les trajets dans un sens pour un itinéraire, spécifié par route_id. Si direction_id est fourni, route_id doit également être indiqué.
trip TripDescriptor Conditionally required One Instance de trajet de GTFS auquel ce sélecteur fait référence. Cette valeur TripDescriptor doit correspondre à une instance de trajet unique dans les données GTFS (par exemple, un producteur ne peut pas fournir uniquement une valeur trip_id pour les trajets exact_times=0). Si le champ ScheduleRelationship est renseigné dans TripDescriptor, il sera ignoré par les utilisateurs lorsqu'ils tenteront d'identifier le trajet GTFS.
stop_id string Conditionally required One stop_id du flux GTFS auquel ce sélecteur fait référence.

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.