Introduction & description technique
GTFS-Realtime est une norme développée par Google qui permet aux entreprises de transport de fournir des informations en temps réel via différents services.
Ce service est une extension de GTFS Static et enrichit les informations de transit statiques avec des informations en temps réel. Les données GTFS en temps réel sont alignées sur les données GTFS statiques. Le Realtime-Feed comprend toutes les modifications connues dans les TP suisses dans toute la fenêtre d’aperçu (trois heures) pour toutes les entreprises de transport qui fournissent des données en temps réel.
GTFS RT permet d’enrichir les informations de transit statiques avec trois types d’informations supplémentaires. Ces trois enrichissements sont généralement mis à disposition individuellement via HTTP et mis à jour régulièrement, ce qui permet aux développeurs de choisir les données en temps réel avec lesquelles ils souhaitent enrichir leurs applications.
- Vehicle positions (pas encore disponible)
- Trip updates (mis à disposition par les CFF)
- Service alerts (mis à disposition par les CFF)
Positions des véhicules (Vehicle positions)
Contiennent des données sur des événements qui se sont déjà produits (par exemple, “le véhicule était à cet endroit il y a une minute”),
Ex : “Ce bus se trouve à l’arrêt Gare de Berne à 18h23”.
Il est possible de publier ici des informations sur l’emplacement des différents véhicules Transit. En outre, le taux d’occupation actuel du véhicule, le type de véhicule ou d’autres informations similaires peuvent également être fournis.
Les Vehicle Positions ne sont pas disponibles sur la plateforme.
Vous trouverez une liste détaillée des différentes unités d’information possibles sur https://developers.google.com/transit/gtfs-realtime/reference/
Mises à jour des trajets (Trip updates)
Ex : “Le bus 18 a actuellement 10 minutes de retard”.
Les retards, les itinéraires modifiés, les véhicules de remplacement ou les suppressions pour certaines lignes y sont publiés en permanence afin de permettre aux voyageurs de planifier leur voyage le plus précisément possible.
Service Alerts
Les informations sur les événements (Service Alerts) informent sur les événements prévisibles ou imprévisibles qui concernent une gare, une ligne ou l’ensemble du réseau (p. ex. “La ligne 3 est fermée jusqu’à 15h00 en raison d’un accident de la circulation).
Ex : “La station de Berne Weissenbühl est actuellement fermée en raison d’un accident”.
En cas de déplacement du bord d’arrêt ou, plus généralement, d’événements imprévus affectant un arrêt, un itinéraire ou l’ensemble du réseau, de brefs messages peuvent être publiés afin de tenir les voyageurs informés et d’expliquer la raison de la modification.
Mise en œuvre en Suisse
En Suisse, deux des trois services sont actuellement mis en œuvre. A savoir “Trip Update” et “Service Alerts”.
- La plateforme OpenData ne supporte actuellement que GTFS-RT “Trip Update” – version 1.0. Veuillez noter que les éléments 2.0 sont actuellement ignorés.
- La plateforme OpenData supporte actuellement GTFS-RT “Service Alerts” – version 2.0. Veuillez noter ces différences dans les versions de service
- Avec votre clé, vous pouvez effectuer au maximum deux requêtes par minute sur l’interface.
- Le flux en temps réel comprend tous les changements connus dans les transports publics suisses dans toute la fenêtre d’aperçu (trois heures) pour toutes les entreprises de transport qui fournissent des données en temps réel.
- Pour GTFS-RT, il existe une règle de mise à jour pour les retards. Par exemple, si un trajet entier est retardé de 5 minutes, cela n’est indiqué qu’au premier arrêt. Pour tous les autres arrêts, le délai doit être mis à jour lors de l’importation.
- La mise à jour doit être effectuée pour les heures d’arrivée et de départ. GTFS-RT ne fournit de nouvelles données que si quelque chose a changé. Notre système ne prend en compte que les prévisions de départ. Si la prévision de départ reste inchangée et que seule la prévision d’arrivée change, aucun message GTFS-RT n’est généré pour ce voyage.
Accès au service
Les CFF mettent à disposition les Trip Updates via une requête GET.
Vous pouvez effectuer au maximum deux requêtes par minute sur l’interface avec votre clé. Il s’agit d’une fenêtre coulissante (Sliding Window).
API | Link |
GTFS-RT
Service Alerts |
https://api.opentransportdata.swiss/gtfs-sa |
Un jeton est nécessaire pour accéder à l’API. Pour générer et recevoir un jeton, il faut s’inscrire sur la plateforme Open Data Mobilité Suisse.
Une fois l’enregistrement réussi, il faut sélectionner l’onglet “API Keys”. On peut y obtenir la clé correspondante pour la plate-forme dans le “Developer Dashboard” sous “My Keys”.
L’envoi de la clé se fait via l’adresse e-mail indiquée lors de l’inscription.
Structure des données (Protocol Buffer)
Le format d’échange de données GTFS ServiceAlert est basé sur les Protocol Buffers, qui sont des mécanismes neutres en termes de langage et de plateforme pour mettre les données en ordre sériel. Il est conçu comme un format binaire, ce qui le rend plus petit, plus rapide et plus simple que XML. La structure des données est définie dans un fichier appelé gtfs-realtime.proto, qui est utilisé pour générer le code source afin de traduire facilement les données structurées dans différents langages (Java, C++, Python, etc.).
Structure des données (JSON)
La plateforme met également à disposition une implémentation JSON.
La requête se fait alors via l’URL : HTTP GET https://api.opentransportdata.swiss/gtfsservicealerts/?format=json
Notez que la variante JSON n’est pas standardisée.
Utilisation de JSON uniquement à des fins de test
JSON ne peut être utilisé qu’à des fins de test, par exemple lorsqu’un développeur d’une nouvelle application veut voir sous une forme lisible quelles sont les données contenues dans notre GTFS-RT.
Au final, l’interface GTFS-SA ne devrait pas être exploitée en JSON lisible, mais en binaire (sans ?FORMAT=JSON) pour les raisons suivantes:
- le binaire est beaucoup plus performant que le JSON et il y a beaucoup plus de données à transmettre et à lire dans le JSON (un message JSON peut peser jusqu’à environ 11 Mo),
- JSON n’est pas spécifié, avec le GTFS-RT binaire, le client GTFS peut compter sur le fait qu’il est conforme à la norme GTFS-RT
Description du service
Particularités par rapport au SIRI-SX
GTFS ServiceAlerts | SIRI-SX |
L’agence est également fournie pour chaque arrêt/point d’arrêt.
"informedEntity" : [ { "agencyId" : "820" , "stopId" : "ch:1:sloid:89712" }, { "agencyId" : "801" , "stopId" : "ch:1:sloid:89712" } ], |
< StopPlaces > < AffectedStopPlace > < StopPlaceRef >ch:1:sloid:89712</ StopPlaceRef > < PlaceName >Kriens, Grosshofstrasse</ PlaceName > </ AffectedStopPlace > </ StopPlaces > |
La direction de la ligne est également fournie pour chaque ligne
"informedEntity" : [ { "agencyId" : "801" , "routeId" : "96-186-7-j23-1" , "directionId" : 0 }, { "agencyId" : "801" , "routeId" : "96-186-7-j23-1" , "directionId" : 1 }, { "agencyId" : "801" , "routeId" : "96-186-2-j23-1" , "directionId" : 0 }, { "agencyId" : "801" , "routeId" : "96-186-2-j23-1" , "directionId" : 1 } ], |
< AffectedNetwork > < AffectedLine > < AffectedOperator > < OperatorRef >ch:1:sboid:100602</ OperatorRef > </ AffectedOperator > < LineRef >85:801:1867</ LineRef > < PublishedLineName >677</ PublishedLineName > </ AffectedLine > < AffectedLine > < AffectedOperator > < OperatorRef >ch:1:sboid:100602</ OperatorRef > </ AffectedOperator > < LineRef >85:801:1862</ LineRef > < PublishedLineName >675</ PublishedLineName > </ AffectedLine > </ AffectedNetwork > |
Mappage général entre GTFS Service Alerts et SIRI-SX
Mise en œuvre de GTFS
- Édition Multilingue (DE, FR, IT, EN) des textes Lang
- GTFS : “headerText” correspond à SIRI-SX <SummaryText (L)>.
- GTFS “descriptionText” est composé comme suit, plusieurs expressions par élément étant également juxtaposées :
- Raison <ReasonContent>
- Durée <DurationContent>
- Information – <RemarkContent> – Si fourni, n’est pas fourni par toutes les organisations commerciales
- Effets <ConsequenceContent>
- Recommandation <RecommendationContent>
- Remarque – <DescriptionContent> → Si fourni, n’est pas fourni par toutes les organisations commerciales
- Uri – Non disponible sur la version actuelle de Prod
- Étiquette – non disponible sur la version actuelle de la prod
- GTFS “activePeriod” est rempli à partir de <ValidityPeriod>.
- Toutes les expressions CH de l’espace d’information peuvent être traitées
- Les événements contenant plusieurs informations sur les clients peuvent être traités (actuellement uniquement VIA)
- Traitement ValidityPeriod et PublicationWindow selon le profil CH (c.-à-d. toujours afficher toutes les déclarations)
Description générale du service (Google)
Service Alerts | Realtime Transit | Google for Developers
Éléments existants selon GTFS:
Différences avec l’implémentation de Google:
message
Alert |
Link: https://developers.google.com/transit/gtfs-realtime/reference#message-alert
Tous les éléments sont pris en charge |
||||||||||||||||
message TimeRange
|
Link: https://developers.google.com/transit/gtfs-realtime/reference#message-timerange
Nom d’implémentation suisse (activePeriode) Tous les éléments sont pris en charge |
||||||||||||||||
message
EntitySelector |
Link: https://developers.google.com/transit/gtfs-realtime/reference#message-entityselector
Nom d’implémentation suisse (informedEntity) Les éléments suivants ne sont pas utilisés
|
||||||||||||||||
message
TripDescription |
Link: https://developers.google.com/transit/gtfs-realtime/reference#message-tripdescriptor
Le message n’est pas pris en charge / utilisé |
||||||||||||||||
enum
ScheduleRelationship |
Enum n’est pas supporté / utilisé dans l’implémentation de Service Alert. | ||||||||||||||||
Enum
Cause |
https://developers.google.com/transit/gtfs-realtime/reference#enum-cause
Toutes les valeurs mentionnées sont utilisées. Tous ceux qui ne sont pas mentionnés, ne sont pas utilisés.
|
||||||||||||||||
Enum
Effect |
https://developers.google.com/transit/gtfs-realtime/reference#enum-effect
Actuellement, aucun effet n’est utilisé. Il n’y a que la valeur “Condition: Unknown” de l’EMS et le mapping vers GTFS “Unknown_Effect”. |
||||||||||||||||
message
TranslatedString |
https://developers.google.com/transit/gtfs-realtime/reference#message-translatedstring
Tous les éléments sont pris en charge |
Autres services:
Enregistrements existants
Les organisations commerciales suivantes mettent à disposition des informations sur les événements: Organisations commerciales (business organisations) – Données | Plate-forme Open Data Mobilité Suisse (opentransportdata.swiss)