Skip to content

Prévisions relatives aux trajets (TRIAS 2020)

(TRIAS TripInfoRequest)

TripInfoRequest est un open service (API). Il s’agit d’un type de prévision relative au trajet (un autre type étant TripRequest). Il correspond au service « TripInfoRequest » de VDV431.

Description technique

Une requête TripInfoRequest demande une JourneyRef valide. Elle ne peut pas être dérivée simplement en consultant l’horaire (aperçu de l’horaire). La solution la plus simple est l’utlisation d’un autre API (TripRequest oder Ankunfts- und Abfahrtsanzeiger) pour obtenir JourneyRef.

Concepts importants

  • Halte : Les jeux de données suivants seront d’utilité : DiDok
  • Trajet / voyage : Un trajet comprend le transport suivant un certain itinéraire et une certaine liaison selon l’horaire, à une certaine heure, utilisant un certain moyen de transport, dans une certaine direction.
  • Horaire : L’horaire, dans le contexte des transports publics (ainsi que du transport des marchandises sur rail), détermine l’itinéraire d’un moyen de transport. Il définit en plus les numéros des trains, les jours de service, la route, les heures d’arrivée, de départ et de passage pour toutes les haltes, ainsi que les vitesses permises dans les différents secteurs.
  • Pronostic : Un pronostic est une prévision des heures d’arrivée et de départ en tenant compte de la position actuelle du moyen de transport ainsi que des conflits résultant d’un retard et les décisons prévues qui en suivent dans les prochaines x minutes et leurs effets. Pour des prévisions plus loins dans le futur, une méthode plus simple est appliquée.
  • Moyen de transport : Soit portant la signification « type de véhicule » (train, bateau, tram, bus) ou la signification « système de transport » (transports publics, etc.).
  • DateTime dans Response : Il’s agit de l’« heure Zoulou » dans tous les cas (c.-à.-d. UTC). Pour obtenir l’heure locale suisse, il faut ajouter deux heures en été, une heure en hiver.

Détails techniques

API Explorer

Autorisation et Open Services

Afin de pouvoir accéder l’API vous avez besoin d’une clé API. Elle peut être obtenue par le portail développeurs.

La clé doit être incluse comme “Authorization” dans le header HTTP.

L’URL pour y accéder

API: https://api.opentransportdata.swiss/trias2020

Clé d’essai : 57c5dbbbf1fe4d000100001842c323fa9ff44fbba0b9b925f0c052d1

En spécifiant le header contenant l’autorisation et Content-Type= „text/XML“ ou „application/XML“

Authorization header

Exemple d’une requête

<? xml version="1.0" encoding="utf-8"?>
<Trias version = "1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ServiceRequest>
        <siri:RequestTimestamp>2020-09-30T19:53:23.659Z</siri:RequestTimestamp>
        <siri:RequestorRef>API-Explorer</siri:RequestorRef>
        <RequestPayload>
            <TripInfoRequest>
                <JourneyRef>odp:80045:Y:H:j17:3928</JourneyRef>
                <OperatingDayRef>2020-09-30</OperatingDayRef>
                <Params>
                    <IncludeCalls>true</IncludeCalls>
                    <IncludeService>true</IncludeService>
                </Params>
            </TripInfoRequest>
        </RequestPayload>
    </ServiceRequest>
</Trias>

La requête est transmise comme body.

 

Explication détaillée de la requête

Les éléments principaux de la requête :

nom obligatoire? description exemple
JourneyRef oui(*) JourneyRef doit être obtenu ou dérivé en utilisant d’autre sources. odp:01012::H:j16:30441
OperatingDayRef non Jour de service. Sans indication, le jour actuel est pris en compte. 2020-04-02T
Params non Les autres paramètres de la requête … voir la tabelle suivante

(*) VDV431 connait des requêtes pour VehicleRef et TimeOfOperation. L’usage est déconseillé car VehicleRef n’est pas utilisée dans notre système.

Params – les autres paramètres de la requête :

nom obligatoire? description exemple
UseTimetabledDataOnly non Détermine si le résultat contient des informations concernant les jours de service. Valeur par défaut : false. false
IncludeCalls non Détermine si le résultat contient les haltes du trajet. Valeur par défaut : true.

Le système ne tient pas compte de ce paramètre, il le traite comme true.

IncludePosition non Détermine si le résultat contient la position actuelle du véhicule. Valeur par défaut (selon VDV431) : true.

Cette fonctionnalité n’est pas implémentée dans le système.

IncludeService non Détermine si le résultat contient des informations concernant les services liés au moyen de transport. Valeur par défaut : true. true
Extension non Aucune extension implémentée

 

Explication d’une réponse

Voici la structure d’une réponse :

<? xml version="1.0" encoding="UTF-8"?>
<trias:Trias xmlns:siri="http://www.siri.org.uk/siri" xmlns:trias="http://www.vdv.de/trias" xmlns:acsb="http://www.ifopt.org.uk/acsb" xmlns:ifopt="http://www.ifopt.org.uk/ifopt" xmlns:datex2="http://datex2.eu/schema/1_0/1_0" version="1.1">
    <trias:ServiceDelivery>
        <siri:ResponseTimestamp>2020-09-30T20:25:44Z</siri:ResponseTimestamp>
        <siri:ProducerRef>EFAController10.4.10.25-OJP-EFA01-P</siri:ProducerRef>
        <siri:Status>true</siri:Status>
        <trias:Language>de</trias:Language>
        <trias:CalcTime>18</trias:CalcTime>
        <trias:DeliveryPayload>
            <trias:TripInfoResponse>
                <trias:TripInfoResult>
                    <trias:OnwardCall>
                        <trias:StopPointRef>8507000</trias:StopPointRef>
                        <trias:StopPointName>
                            <trias:Text>Bern</trias:Text>
                            <trias:Language>de</trias:Language>
                        </trias:StopPointName>
                        <trias:ServiceDeparture>
                            <trias:TimetabledTime>2020-10-14T07:22:00Z</trias:TimetabledTime>
                            <trias:EstimatedTime>2020-10-14T07:22:00Z</trias:EstimatedTime>
                        </trias:ServiceDeparture>
                        <trias:StopSeqNumber>1</trias:StopSeqNumber>
                    </trias:OnwardCall>
                    <!-- weitere Calls -->
                    <trias:Service>
                        <trias:OperatingDayRef>2020-10-14</trias:OperatingDayRef>
                        <trias:JourneyRef>ojp:91008:E:H:j20:17:8093</trias:JourneyRef>
                        <trias:LineRef>ojp:91008:E:H</trias:LineRef>
                        <trias:DirectionRef>outward</trias:DirectionRef>
                        <trias:Mode>
                            <trias:PtMode>rail</trias:PtMode>
                            <trias:RailSubmode>local</trias:RailSubmode>
                            <trias:Name>
                                <trias:Text>S 8093</trias:Text>
                                <trias:Language>de</trias:Language>
                            </trias:Name>
                        </trias:Mode>
                        <trias:PublishedLineName>
                            <trias:Text>8</trias:Text>
                            <trias:Language>de</trias:Language>
                        </trias:PublishedLineName>
                        <trias:OperatorRef>ojp:88</trias:OperatorRef>
                        <trias:OriginStopPointRef>8507000</trias:OriginStopPointRef>
                        <trias:OriginText>
                            <trias:Text>Bern</trias:Text>
                            <trias:Language>de</trias:Language>
                        </trias:OriginText>
                        <trias:DestinationStopPointRef>8508059</trias:DestinationStopPointRef>
                        <trias:DestinationText>
                            <trias:Text>Solothurn</trias:Text>
                            <trias:Language>de</trias:Language>
                        </trias:DestinationText>
                    </trias:Service>
                </trias:TripInfoResult>
            </trias:TripInfoResponse>
        </trias:DeliveryPayload>
    </trias:ServiceDelivery>
</trias:Trias>

 

Les éléments principaux de la réponse se trouvent dans TripInfoResultStructure :

nom obligatoire? description exemple
PreviousCall non / plusieurs Les haltes déjà desservies, y inclus la halte actuelle si applicable. structure séparée … voir la tabelle suivante
CurrentPosition non La position actuelle du véhicule.

Cette fonctionnalité n’est pas implémentée.

OnwardCall non / plusieurs Les futures haltes du trajet. structure séparée … voir la tabelle suivante
Service non Des informations concernant le moyen de transport. structure séparée … voir la tabelle suivante
OperatingDays non Les jours de service.

Cette fonctionnalité n’est pas implémentée.

OperatingDaysDescription non Les jours de service, lisible par machine. P. ex., « lundi à vendredi » ou « jours fériés ».

Cette fonctionnalité n’est pas implémentée.

 

PreviousCall et OnwardCall ont la structure suivante :

nom obligatoire? description exemple
StopPointRef oui Un code référant une halte. 857000
StopPointName oui Le nom d’une halte comme utilisé pour les informations passagers.

Attention : Language est toujours DE.

<trias:StopPointName>
  <trias:Text>Eiken<trias:/Text>
  <trias:Language>DE</trias:Language>
</trias:StopPointName>

 

PlannedBay non Désignation de la halte ou borne où on monte ou descend du véhicule. Selon l’état actuel de la planification.

 

<trias:PlannedBay>
  <trias:Text>43/44</trias:Text>
  <trias:Language>DE</trias:Language>
</trias:PlannedBay>
EstimatedBay non Désignation de la halte ou borne ou on monte ou descend du véhicule. Selon l’état actuel du pronostic.
<trias:EstimatedBay>
  <trias:Text>43</trias:Text>
  <trias:Language>DE</trias:Language>
</trias:EstimatedBay>

 

ServiceArrival non Heures d’arrivée
<trias:ServiceArrival>
  <trias:TimetabledTime>2020-04-02T11:56:00Z</trias:TimetabledTime>
</trias:ServiceArrival>

 

TimetabledTime oui L’heure d’arrivée selon l’horaire

Heure « Zoulou »

2020-04-02T11:20:00Z
RecordedAtTime non L’heure d’arrivée comme enregistrée.

Cette fonctionnalité n’est pas implémentée

EstimatedTime non L’heure d’arrivée selon pronostic.

Dépend de la disponibilité des données temps réel nécessaires.

Pour les étapes dans le passée il s’agit soit du dernier pronostic ou des données réelles.

Couramment, les données temps réel sont effacées immédiatement après le départ.

2020-04-02T11:20:00Z
ServiceDeparture non Heures de départ Comme ServiceArrival, mais pour des départs
StopSequenceNumber oui Le numéro de séquence de la halte. 4
DemandStop non Arrêt sur demande. Une halte qui est seulement desservie si demandée d’avance. Booléen. Ne pas disponible
UnplannedStop non Un arrêt non-planifié. Booléen
<trias:UnplannedStop>true</trias:UnplannedStop>
NotServicedStop non Une halte (selon l’horaire) qui n’a pas été desservie. Ceci peut se produire en cas d’une liaison supprimée.
<trias:NotServicedStop>true</trias:NotServicedStop>
SituationFullRef non, plusieurs Une référence à un message sur une perturbation. Le message peut être inclus dans ResponseContext, ou il peut être transmis par une voie différente. . Ne pas implémenté

Service

Une description de la structure peut être trouvée ici : Service (VDV 431)

Erreurs et problèmes

La réponse contient un ErrorMessage en cas de problème lors de l’exécution de la requête :

<? xml version="1.0" encoding="UTF-8"?>
<trias:Trias xmlns:siri="http://www.siri.org.uk/siri" xmlns:trias="http://www.vdv.de/trias" xmlns:acsb="http://www.ifopt.org.uk/acsb" xmlns:ifopt="http://www.ifopt.org.uk/ifopt" xmlns:datex2="http://datex2.eu/schema/1_0/1_0" version="1.1">
    <trias:ServiceDelivery>
        <siri:ResponseTimestamp>2020-09-30T20:01:37Z</siri:ResponseTimestamp>
        <siri:ProducerRef>EFAController10.4.10.25-OJP-EFA01-P</siri:ProducerRef>
        <siri:Status>true</siri:Status>
        <trias:Language>de</trias:Language>
        <trias:CalcTime>15</trias:CalcTime>
        <trias:DeliveryPayload>
            <trias:TripInfoResponse>
                <trias:ErrorMessage>
                    <trias:Code>-1</trias:Code>
                    <trias:Text>
                        <trias:Text>TRIPINFO_NOJOURNEYFOUND</trias:Text>
                        <trias:Language>de</trias:Language>
                    </trias:Text>
                </trias:ErrorMessage>
            </trias:TripInfoResponse>
        </trias:DeliveryPayload>
    </trias:ServiceDelivery>
</trias:Trias>

Remarques

Important à savoir, surtout pour des développeurs extérieurs :

  • On utilise  l’« heure Zoulou » dans tous les cas (c.-à.-d. UTC).
  • Les haltes sont répertoriées dans DiDok et la liste des gares.
  • JourneyRef n’est pas une structure triviale. Il peut être plus facile de l’obtenir en apellant d’autres services.

Pour en savoir plus