Linia est une application web de visualisation et de planification de trajets de bus longue distance. Elle agrège les données de transport (GTFS) de plusieurs opérateurs pour offrir une vue consolidée du réseau de transport interurbain européen.
L'application permet d'explorer les lignes sur une carte interactive, de rechercher des itinéraires et de télécharger le jeu de données unifié généré par le pipeline de traitement.
- Visualisation Cartographique : Affichage des lignes de bus et des arrêts sur une carte interactive (Leaflet).
- Recherche et Planification : Recherche d'arrêts par nom (gestion des synonymes) et visualisation des connexions directes entre villes.
- Agrégation Multi-opérateurs : Fusion des réseaux FlixBus et BlaBlaCar Bus en un seul graphe cohérent.
- Unification des Arrêts : Regroupement des arrêts physiques par ville (Master Stops) pour simplifier la lecture du réseau.
- Multilingue : Interface traduite en plusieurs langues avec gestion des slugs SEO localisés.
- Export de Données : Téléchargement d'une archive GTFS unifiée au format ZIP.
- Backend : Python, Flask.
- Base de Données : SQLite (stockage et requête des données GTFS).
- Frontend : HTML5, CSS3, JavaScript (Vanilla), Leaflet.
- Traitement de Données : Pandas, NumPy.
Le script build_gtfs.py assure la collecte, le nettoyage et l'unification des données :
- Téléchargement : Récupération des flux GTFS depuis
data.gouv.fr. - Agrégation par Ville : Les arrêts physiques sont regroupés sous un identifiant de ville unique pour éviter la redondance.
- Simplification : Suppression des trajets aller-retour redondants pour alléger le modèle de données.
- Génération : Création des fichiers GTFS unifiés (CSV), de la base de données SQLite et de l'archive ZIP de téléchargement.
L'application repose sur Flask pour servir l'interface et une API REST :
- Routes SEO : Génération de pages dynamiques pour les villes principales (
/bus/paris,/bus/berlin) avec balisage Schema.org, sitemaps et baliseshreflang. - API : Endpoints pour la recherche d'arrêts (
/api/search_stops), les détails des trajets (/api/trip_details) et les connexions (/api/connected_stops).
- Python 3.9+
- Pip
-
Cloner le dépôt :
git clone https://github.com/votre-utilisateur/linia.git cd linia -
Installer les dépendances :
pip install -r requirements.txt
-
Générer les données (Nécessite un accès internet pour télécharger les GTFS) :
python build_gtfs.py
-
Lancer l'application :
python app.py
L'application est accessible par défaut à l'adresse
http://0.0.0.0:5000.
L'application peut être conteneurisée via le Dockerfile fourni.
docker build -t linia-app .
docker run -p 5000:5000 linia-appLa configuration principale se trouve dans config_data.py :
TOP_HUBS: Liste des villes majeures avec leurs identifiants et slugs traduits.SUPPORTED_LANGS: Liste des langues supportées.SEARCH_SYNONYMS: Dictionnaire pour normaliser les noms de villes lors de la recherche (ex: "Köln" -> "Cologne").
Les données de transport proviennent de sources ouvertes :
- FlixBus : Via data.gouv.fr
- BlaBlaCar Bus : Via data.gouv.fr