Information routières (trafic routier)

Description rapide

Ce jeu de données fournit des informations en temps réel sur l’état du trafic routier, incluant la fluidité de la circulation, les accidents et les chantiers de courte ou longue durée. Il est conçu pour permettre aux utilisateurs d’accéder à des données actualisées et exploitables pour des analyses, des applications de mobilité ou des services d’information sur le trafic.

Description spécifique

Format

Les messages sont fournis au format DATEX II. DATEX II est la norme pour l’échange de données relatives au trafic routier. Le format est basé sur un schéma XML spécifique.

Fréquence d’actualisation

Les données sont mises à jour en temps réel en fonction de l’état du trafic par les opérateurs du trafic de la Centrale suisse de gestion du trafic VMZ-CH, par les polices cantonales et par les unités territoriales en charge de l’exploitation et l’entretien des routes. Cette API ne fournit pas de données historiques.

Type de message

Trois types d’InfoTrafic sont publiés:

  1. Nouvelle InfoTrafic
    Un message qui annonce une nouvelle situation sur nos routes. Une « InfoTrafic » peut contenir des informations sur un événement actuel comme un véhicule circulant à sens inverse, un accident ou une surcharge de trafic ainsi que les causes et une estimation de la durée de la perturbation. Une « InfoTrafic » peut également contenir des informations sur un chantier ou une intervention prévue sur un tronçon spécifique. La durée du chantier et les détails comme la réduction des voies de circulation et la largeur maximale autorisée pour les poids lourds en font également partie.
    Un exemple d’une « InfoTrafic » peut être consulté ici.
  2. Mutation d’une InfoTrafic existante
    Un message qui annonce une modification d’une situation existante. La modification peut apporter une mise à jour des informations de base, ajouter des causes à un événement, ou des détails concernant la longueur d’un embouteillage suite à l’événement. Un message de mutation remplace le message d’origine.
    Une mutation est toujours liée à une situation de base via l’attribut <situation id=XXX>.
    De plus, une mutation peut également être liée à une situation de base via le nœud <situationRecordCreationTime>. Celle-ci est unique car elle est précis à la milliseconde.
    Exemple: <dx223:situationRecordCreationTimexsi:type=”dx223:DateTime”>2025-05-01T13:05:02.679000Z</dx223:situationRecordCreationTime>
    Un exemple d’une mutation peut être consulté ici.
  3. Révocation d’une InfoTrafic
    Un message qui annonce la fin et la suppression d’une « InfoTrafic ». Dès le moment ou une « InfoTrafic » est révoquée, la situation reste active et disponible sur la plateforme pour une durée de 60 min avec le statut révoqué inscrit dans le nœud <dx223:value>. Cela permet aux utilisateurs de prendre connaissance de la révocation. La révocation n’est pas nécessaire pour les « InfoTrafic » contenant des informations sur des chantiers car la validité de ces dernières est généralement caractérisée par une date de début et de fin. Un exemple d’une révocation peut être consulté ici.

Description technique

Requête API

Instructions générales pour accéder à nos API: https://opentransportdata.swiss/de/howto-access-apis/

URL de l’API: https://api.opentransportdata.swiss/TDP/Soap_Datex2/TrafficSituations/Pull

Structure de la requête API

Header

Il est également nécessaire de spécifier l’opération que l’on souhaite réaliser et fournir la clé API dans l’entête de la requête :

ContrainteAttributWert
ObligatoireSoapActionhttp://opentransportdata.swiss/TDP/Soap_Datex2/Pull/v1/pullTrafficMessages
ObligatoireAuthorization[Votre clé API]
Optionnnel *If-Modified-Since[Date & heure] –> Format : 2025-05-01T00:00:06.83+01:00
L’horodatage est interprété comme UTC!

L’attribut “If-Modified-Since” permet de définir la date et l’heure de la dernière requête afin d’obtenir uniquement les messages arrivés entre ce moment et l’heure actuelle. Si cet attribut n’est pas spécifié, la totalité des « InfoTrafic » actives ou en passe d’être révoquées (statut révoqué) sont renvoyées.

* IMPORTANT: Si l’on n’utilise pas «If-Modified-Since», une grande partie des données se répète (et la quantité de données est donc importante). Nous recommandons donc:

  • Une requête par jour sans If-Modified-Since, puis uniquement des requêtes avec If-Modified-Since avec dont l’horodatage ne remonte pas à plus de 5 minutes.
  • Lors d’un redémarrage de l’application qui obtient les données, il est également possible d’effectuer une nouvelle requête sans If-Modified-Since.

Body

Le corps du message de requête est toujours identique.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <d2LogicalModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" modelBaseVersion="2" xmlns="http://datex2.eu/schema/2/2_0">
    <exchange>
        <supplierIdentification>
	    <country>ch</country>
	    <nationalIdentifier>FEDRO</nationalIdentifier>
        </supplierIdentification>
        <subscription>
	    <operatingMode>operatingMode1</operatingMode>
	    <subscriptionStartTime>2025-05-01T08:00:00.00+01:00</subscriptionStartTime>
	    <subscriptionState>active</subscriptionState>
	    <updateMethod>singleElementUpdate</updateMethod>
	    <target>
		<address></address>
		<protocol>http</protocol>
	    </target>
        </subscription>
    </exchange>
    </d2LogicalModel>
  </soap:Body>
</soap:Envelope>

Exemple de curl

Voici un exemple de la manière dont les messages InfoTrafic peuvent être consultés via curl sous Windows. Remarque:

  • Le Bearer Token (clé API faisant suite à «Authorization: Bearer») a été raccourci et doit être remplacé par une valeur valide (propre clé API obtenue dans notre API Manager).
  • Pour limiter le volume de données, il convient d’utiliser un horodatage datant de quelques minutes dans le champ «If-Modified-Since». (La toute première demande peut être envoyée sans «If-Modified-Since» afin d’obtenir toutes les données actives à ce moment-là.)
  • Le corps est ici extrait du fichier VM_request_body.xml et le fichier correspondant (une copie du body comme indiqué ci-dessus) doit être enregistré dans le bon répertoire.
  • Les données obtenues sont enregistrées directement dans le fichier traffic_situations.xml (pas de sortie dans la console).
curl --request POST https://api.opentransportdata.swiss/TDP/Soap_Datex2/TrafficSituations/Pull --header "Authorization: Bearer eyJvcmciOiI2NDA2NTFhNTIyZmEwNTAwMDEyOWJiZTEiLCJpZCI6IjM0YzkxZGNhN2E2NTRjOTI5N2E3OWM4YzhiMzcxNTU1IiwiaCI6Im11cm11cjEyOCJ9" --header "SOAPAction: http://opentransportdata.swiss/TDP/Soap_Datex2/Pull/v1/pullTrafficMessages" --header "If-Modified-Since: 2025-05-27T10:00:00" --output "traffic_situations.xml" --data-binary @VM_request_body.xml

Format des dates

Le format de date utilisé dans DATEX II permet aux utilisateures de déterminer la date et l’heure en fonction de son fuseau horaire. Pour ce faire, le format ISO 8601 est préconisé pour toutes les dates définies dans DATEX II.

Géoréférencement

La localisation des « InfoTrafic » se fait en conformité avec le standard TMC (Traffic Message Channel) et la méthode « AlertC ». La version de la topologie TMC utilisée est stipulée dans le nœud <dx223:alertCLocationTableVersion>. La direction pour laquelle une « InfoTrafic » a une incidence peut donc être déterminée automatiquement. Un accès à la topologie TMC peut être demandée par e-mail à l’adresse verkehrsdaten-plattform@astra.admin.ch. Veuillez indiquer la version que vous souhaitez obtenir dans votre demande.

Exemple d’une Situation

<dx223:situationRecord xsi:type="dx223:AbnormalTraffic" id="situation.548546.1.1.1" version="1">
 	<dx223:situationRecordCreationTime xsi:type="dx223:DateTime">2025-06-03T23:00:50.789000Z</dx223:situationRecordCreationTime>
 	<dx223:situationRecordVersionTime xsi:type="dx223:DateTime">2025-06-03T23:35:34.621000Z</dx223:situationRecordVersionTime>
 	<dx223:probabilityOfOccurrence xsi:type="dx223:ProbabilityOfOccurrenceEnum">certain</dx223:probabilityOfOccurrence>
 	<dx223:validity xsi:type="dx223:Validity">
 		<dx223:validityStatus xsi:type="dx223:ValidityStatusEnum">definedByValidityTimeSpec</dx223:validityStatus>
 		<dx223:validityTimeSpecification xsi:type="dx223:OverallPeriod">
 			<dx223:overallStartTime xsi:type="dx223:DateTime">2025-06-03T23:00:00.000000Z</dx223:overallStartTime>
 		</dx223:validityTimeSpecification>
 	</dx223:validity>
 	<dx223:generalPublicComment xsi:type="dx223:Comment">
 		<dx223:comment xsi:type="dx223:MultilingualString">
 			<dx223:values>
 				<dx223:value xsi:type="dx223:MultilingualStringValue" lang="de-CH">Aufgehoben: A2 Luzern &lt;-&gt; Basel zwischen Anschluss Reiden und Anschluss Dagmersellen, bei Kilometer 57.0 Sachlage: Gefahr Ursache: Personen auf der Fahrbahn</dx223:value>
 				<dx223:value xsi:type="dx223:MultilingualStringValue" lang="fr-CH">Révoqué: A2 Lucerne &lt;-&gt; Bâle entre Jonction autoroutière Reiden et Jonction autoroutière Dagmersellen, au kilomètre 57.0 Situation: danger Raison: piétons sur la chaussée</dx223:value>
 				<dx223:value xsi:type="dx223:MultilingualStringValue" lang="it-CH">Revocato: A2 Lucerna &lt;-&gt; Basilea tra Svincolo autostradale Reiden E Svincolo autostradale Dagmersellen, al chilometro 57.0 Situazione: pericolo Causa: persone sulla strada</dx223:value>
 			</dx223:values>
 		</dx223:comment>
 		<dx223:commentType xsi:type="dx223:CommentTypeEnum">description</dx223:commentType>
 	</dx223:generalPublicComment>
 	<dx223:nonGeneralPublicComment xsi:type="dx223:Comment">
 		<dx223:comment xsi:type="dx223:MultilingualString">
 			<dx223:values>
 				<dx223:value xsi:type="dx223:MultilingualStringValue" lang="en-EN">((TIC/Danger : 1003-21/27))other</dx223:value>
 			</dx223:values>
 		</dx223:comment>
 		<dx223:commentType xsi:type="dx223:CommentTypeEnum">other</dx223:commentType>
 	</dx223:nonGeneralPublicComment>
 	<dx223:groupOfLocations xsi:type="dx223:Linear">
 		<dx223:alertCLinear xsi:type="dx223:AlertCMethod4Linear">
 			<dx223:alertCLocationCountryCode xsi:type="dx223:String">4</dx223:alertCLocationCountryCode>
 			<dx223:alertCLocationTableNumber xsi:type="dx223:String">9</dx223:alertCLocationTableNumber>
 			<dx223:alertCLocationTableVersion xsi:type="dx223:String">7.3</dx223:alertCLocationTableVersion>
 			<dx223:alertCDirection xsi:type="dx223:AlertCDirection">
 				<dx223:alertCDirectionCoded xsi:type="dx223:AlertCDirectionEnum">both</dx223:alertCDirectionCoded>
 			</dx223:alertCDirection>
 			<dx223:alertCMethod4PrimaryPointLocation xsi:type="dx223:AlertCMethod4PrimaryPointLocation">
 				<dx223:alertCLocation xsi:type="dx223:AlertCLocation">
  <dx223:specificLocation xsi:type="dx223:AlertCLocationCode">10432</dx223:specificLocation>
 				</dx223:alertCLocation>
 				<dx223:offsetDistance xsi:type="dx223:OffsetDistance">
  <dx223:offsetDistance xsi:type="dx223:MetresAsNonNegativeInteger">0</dx223:offsetDistance>
 				</dx223:offsetDistance>
 			</dx223:alertCMethod4PrimaryPointLocation>
 			<dx223:alertCMethod4SecondaryPointLocation xsi:type="dx223:AlertCMethod4SecondaryPointLocation">
 				<dx223:alertCLocation xsi:type="dx223:AlertCLocation">
  <dx223:specificLocation xsi:type="dx223:AlertCLocationCode">10431</dx223:specificLocation>
 				</dx223:alertCLocation>
 				<dx223:offsetDistance xsi:type="dx223:OffsetDistance">
  <dx223:offsetDistance xsi:type="dx223:MetresAsNonNegativeInteger">0</dx223:offsetDistance>
 				</dx223:offsetDistance>
 			</dx223:alertCMethod4SecondaryPointLocation>
 		</dx223:alertCLinear>
 	</dx223:groupOfLocations>
 	<dx223:management xsi:type="dx223:Management">
 		<dx223:lifeCycleManagement xsi:type="dx223:LifeCycleManagement">
 			<dx223:cancel xsi:type="dx223:Boolean">true</dx223:cancel>
 		</dx223:lifeCycleManagement>
 	</dx223:management>
 	<dx223:abnormalTrafficType xsi:type="dx223:AbnormalTrafficTypeEnum">other</dx223:abnormalTrafficType>
 	<dx223:abnormalTrafficExtension xsi:type="dx223:_ExtensionType">
 		<elementEnumerationExtension>
 			<element>abnormalTrafficType</element>
 			<value>danger</value>
 		</elementEnumerationExtension>
 	</dx223:abnormalTrafficExtension>
 </dx223:situationRecord>