Base de connaissances

Guides techniques, tutoriels et documentation pour vous aider à intégrer les données des transports publics belges dans vos applications.

Navigation rapide

Comprendre GTFS

Qu’est-ce que GTFS ?

GTFS (General Transit Feed Specification) est un format commun pour les horaires de transports publics et les informations géographiques associées. Développé à l’origine par Google, c’est désormais la norme industrielle pour les données de transport.

GTFS se compose de :

  • Données statiques : Itinéraires, arrêts, horaires, tarifs
  • Données en temps réel : Positions des véhicules en direct, retards, alertes

Structure des fichiers GTFS

Un ensemble de données GTFS est un fichier ZIP contenant des fichiers CSV :

gtfs.zip ├── agency.txt # Transit agencies ├── routes.txt # Transit routes ├── trips.txt # Individual trips ├── stops.txt # Transit stops ├── stop_times.txt # Stop times for trips ├── calendar.txt # Service patterns ├── calendar_dates.txt # Service exceptions └── shapes.txt # Route geometry

Travailler avec les données GTFS

Fichiers essentiels

  • agency.txt: Information about transit agencies
  • stops.txt: Individual stops/stations with coordinates
  • routes.txt: Transit routes (bus lines, train routes)
  • trips.txt: Individual journeys along routes
  • stop_times.txt: Times when vehicles arrive/depart stops

Fichiers optionnels

  • calendar.txt: Service days for routes
  • shapes.txt: Route paths for mapping
  • fare_attributes.txt: Fare information
  • transfers.txt: Transfer rules between routes

Documentation API

API GTFS statique

Téléchargez des données d’horaires complètes pour tous les opérateurs.

GET https://opendata-discovery-gtfs-static.api.staging.belgianmobility.io/api/gtfs/feed/delijn/static GET https://datasets.api.staging.belgianmobility.io/api/datasets-static/gtfs GET https://opendata-discovery-gtfs-static.api.staging.belgianmobility.io/api/gtfs/feed/tec/static GET https://opendata-discovery-gtfs-static.api.staging.belgianmobility.io/api/gtfs/feed/nmbssncb/static

Retourne : fichier ZIP contenant les données GTFS

API GTFS en temps réel

Accédez aux mises à jour de trajet en direct et aux alertes de service.

GET https://opendata-discovery-gtfs-realtime.api.staging.belgianmobility.io/api/gtfs-rt/{agencyId}/TripUpdates.pbf GET https://opendata-discovery-gtfs-realtime.api.staging.belgianmobility.io/api/gtfs-rt/{agencyId}/ServiceAlerts.pbf # Agency IDs: nmbssncb, tec, delijn # Note: STIB-MIVB does not produce GTFS-RT feeds

Retourne : format Protocol Buffer

API spécifiques STIB

Flux de données spécifiques à Bruxelles avec informations enrichies.

GET /api/stib/waiting-times GET /api/stib/vehicle-positions GET /api/stib/messages

Retourne : format JSON

Qualité et nettoyage des données

Notre pipeline de traitement des données

Nous mettons en œuvre des contrôles de qualité et des processus de nettoyage complets pour garantir des données fiables et cohérentes pour tous les opérateurs.

Étapes de validation

  • GTFS format compliance checking
  • Geographic coordinate validation
  • Schedule consistency verification
  • Stop name and ID standardization

Améliorations des données

  • Route shape optimization
  • Multi-language support
  • Accessibility information
  • Cross-operator transfer rules

Meilleures pratiques pour utiliser nos données

  • • Toujours valider les flux GTFS avant utilisation en production
  • • Mettre en cache les données de manière appropriée pour réduire les appels API
  • • Gérer les retards des données en temps réel et les informations manquantes avec souplesse
  • • S’abonner à notre page de statut pour les notifications de maintenance

Exemples de code et tutoriels

Python : récupération de données GTFS

Télécharger et traiter des données GTFS en Python.

import requests import zipfile import pandas as pd from io import BytesIO # Download GTFS data def download_gtfs(operator='tec'): url = f"https://opendata-discovery-gtfs-static.api.staging.belgianmobility.io/api/gtfs/feed/{operator}/static" response = requests.get(url) if response.status_code == 200: return zipfile.ZipFile(BytesIO(response.content)) else: raise Exception(f"Failed to download: {response.status_code}") # Extract and read stops gtfs_zip = download_gtfs('tec') stops_df = pd.read_csv(gtfs_zip.open('stops.txt')) print(f"Found {len(stops_df)} stops") print(stops_df.head())

JavaScript : positions des véhicules en temps réel

Récupérer et afficher les positions des véhicules en temps réel avec JavaScript.

// Fetch real-time vehicle positions async function getVehiclePositions() { try { const response = await fetch('/api/gtfs-rt/vehicle-positions'); const data = await response.arrayBuffer(); // Parse Protocol Buffer data (requires protobuf.js) const feed = gtfs.transit_realtime.FeedMessage.decode( new Uint8Array(data) ); return feed.entity.map(entity => ({ vehicleId: entity.vehicle.vehicle.id, routeId: entity.vehicle.trip.routeId, latitude: entity.vehicle.position.latitude, longitude: entity.vehicle.position.longitude, timestamp: entity.vehicle.timestamp })); } catch (error) { console.error('Error fetching vehicle positions:', error); return []; } } // Update map markers getVehiclePositions().then(vehicles => { vehicles.forEach(vehicle => { updateMapMarker(vehicle); }); });

cURL : exemples d’API

Exemples en ligne de commande pour accéder à nos API.

# Download GTFS static data curl -O "https://datasets.api.staging.belgianmobility.io/api/datasets-static/gtfs" # Get real-time trip updates curl "https://opendata-discovery-gtfs-rt.api.staging.belgianmobility.io/api/gtfs/feed/tec/rt/trip-updates.pbf" \ -H "Accept: application/x-protobuf" # Get STIB waiting times (JSON) curl "https://datasets.api.production.belgianmobility.io/api/datasets/WaitingTimes.json" \ -H "Accept: application/json"

Besoin d’aide supplémentaire ?

Vous ne trouvez pas ce que vous cherchez ? Notre équipe est là pour vous aider à intégrer les données de transport belges avec succès.