Waze Data Feed dans QGIS

Bonjour,

Avez-vous réussi à intégrer les données de trafic en temps réel dans QGIS ? Est-ce que qqn aurait un tuto ?

Merci :slight_smile:

Marie-Cécile.

Bonjour VilleChelles77,
N’hésitez pas à me contacter par message privé, ou sur clautier at gmail point com

Une solution pour afficher les données de trafic en temps réel dans QGIS ?

Bonjour @simonmaurel,

Pour afficher les informations de trafic en temps réel dans QGIS à partir des données Waze, tu dois passer par une série d’étapes, car Waze ne fournit pas directement une couche SIG prête à l’emploi, mais propose une API GeoRSS ou JSON dans le cadre du programme Waze for Cities Partners (WFC/CCP). Voici les étapes clés :


:construction: 1. S’inscrire au programme Waze for Cities Partners

Tu dois être partenaire pour accéder au flux de données en temps réel.


:globe_with_meridians: 2. Récupérer les données Waze en temps réel

Deux options principales :

a. Flux JSON ou GeoRSS

  • Accès via une URL (souvent sécurisée) : chaque flux est associé à un polygone de territoire.
  • Contenu : embouteillages, accidents, dangers, véhicules arrêtés, objets sur la route, etc. Actualisation toutes les 2 minutes.

b. Watchlist ou Traffic View (non automatisable)

  • Visualisation sur carte web, utile pour consultation rapide mais non intégrable directement dans QGIS.
  • En revanche, sur des itinéraires configurés dans les Listes de Suivis, ces derniers feront l’objet d’un feed JSON dédié.

:compass: 3. Afficher les données dans QGIS

Option A : Import GeoJSON / GeoRSS

  1. Ouvre QGIS
  2. Menu Layer > Add Layer > Add Vector Layer
  3. Choisir Protocol: HTTP avec l’URL du flux GeoJSON
  4. QGIS affichera dynamiquement les données à chaque actualisation du flux (si correctement configuré)

Option B : Traitement en local d’un fichier JSON Waze

  1. Extrais le flux brut depuis l’API (JSON)

  2. Convertis les coordonnées x/y (lon/lat) en objets géométriques (ligne ou points) dans QGIS

    • Utilise une requête Python dans la console QGIS pour parser les routes (voir exemple ci-dessous)
  3. Ajoute les entités dans une couche mémoire ou un GeoPackage


:hammer_and_wrench: Exemple de script Python pour QGIS

import json
from qgis.core import QgsProject, QgsPointXY, QgsFeature, QgsGeometry, QgsFields, QgsField, QgsVectorLayer
from PyQt5.QtCore import QVariant

# Charger le fichier JSON (local ou depuis l'API)
with open('/chemin/vers/ton/fichier.json', encoding='utf-8') as f:
    data = json.load(f)

layer = QgsVectorLayer('LineString?crs=EPSG:4326', 'Trafic Waze', 'memory')
pr = layer.dataProvider()
pr.addAttributes([QgsField("name", QVariant.String), QgsField("jamLevel", QVariant.Int)])
layer.updateFields()

for route in data['routes']:
    points = [QgsPointXY(coord['x'], coord['y']) for coord in route['line']]
    fet = QgsFeature()
    fet.setGeometry(QgsGeometry.fromPolylineXY(points))
    fet.setAttributes([route.get("name", ""), route.get("jamLevel", 0)])
    pr.addFeatures([fet])

layer.updateExtents()
QgsProject.instance().addMapLayer(layer)

:memo: Remarques

  • L’API n’est pas ouverte publiquement : il faut être partenaire validé.
  • Les flux doivent être exploités de manière asynchrone ou périodique, car ils ne sont pas conçus pour un rafraîchissement constant type streaming SIG.
  • Tu peux aussi combiner ces flux avec QGIS Server ou des scripts pour afficher un dashboard web.

Rédaction de la réponse aidée de ChatGPT.