Simulateur citoyen d'implantation des gares du Réunion Express, le projet de train régional soumis au débat public CNDP du 19 août au 26 novembre 2026.
On pose des gares sur le tracé, on les déplace, et le temps de parcours Saint-Benoît → Saint-Joseph se recalcule en direct à partir des performances du matériel roulant. Le but est de rendre tangible l'arbitrage central du débat : chaque gare supplémentaire coûte environ 68 secondes à tous ceux qui la traversent, et fait gagner dix à vingt minutes à ceux qui habitent à côté.
Site 100 % statique — Vite + React + TypeScript + MapLibre GL + PMTiles. Pas de backend, pas de compte, tout l'état du scénario dans l'URL.
Outil citoyen indépendant. Ni la Région Réunion, ni la CNDP.
Les lots 0 à 4 du plan sont livrés : la carte, le modèle, la pose des gares, le lien de partage, les onglets Profil et Espace-temps. Restent l'onglet Le compromis avec la population desservie, le commutateur de variantes et le recalage sur les temps du dossier.
npm install
npm run dev # http://localhost:5173
npm test # modèle TypeScript contre l'oracle Python (89 tests)
npm run build # -> dist/, site 100 % statiqueCe dépôt contient aussi la conception et toutes les données :
PLAN.md |
la conception complète : sources, contrat de données, modèle, architecture, écrans, lots, risques. À lire en premier. |
docs/modele-physique.md |
spécification du modèle de marche, presets de matériel, résultats de calibration |
tools/ |
chaîne d'extraction des données, en Python, autonome |
data/ |
données produites, versionnées |
Le tracé officiel et les stations ont été récupérés depuis le visualisateur 3D
publié par la Région Réunion et lié depuis le site du débat. Ce ne sont pas des
reconstitutions : ce sont les géométries d'étude du projet. Voir PLAN.md §2.
data/
├── landweb/raw/ 60 JSON bruts du visualisateur (la source, à conserver)
├── landweb/*.geojson une couche par fichier, reprojetée en WGS84
├── routes/ 20 tracés complets Saint-Benoît → Saint-Joseph
│ ├── SD-<n>_O-<m>.geojson 4 variantes Saint-Denis × 5 variantes Ouest
│ ├── SD-<n>_O-<m>.stations.json stations projetées, avec leur PK
│ └── SD-<n>_O-<m>.profile.json profil terrain + profil rail + pente
└── sources/ extraction texte du DMO, notes de provenance
Les 20 combinaisons font 133,8 à 140,1 km pour 25 à 29 stations, ce qui recoupe les ~140 km / ~25 stations annoncés au dossier du maître d'ouvrage. Contrôle : les 33 stations nommées se projettent à 0–27 m du tracé assemblé, dans le bon ordre géographique.
Prérequis : Python 3, cs2cs (PROJ). Pour le fond de carte : pmtiles, tippecanoe.
python3 tools/extract_landweb.py # 60 couches -> GeoJSON WGS84
python3 tools/assemble_route.py # -> 20 tracés + stations
for f in data/routes/*.geojson; do
python3 tools/build_profile.py "$f" # -> profil terrain + rail (API IGN)
done
python3 tools/build_route.py # -> public/data/routes/*.v1.json
python3 tools/build_road_times.py # -> public/data/road-times.json
sh tools/build_basemap.sh # fond + relief + glyphes -> public/
python3 tools/model_reference.py # tableaux de calibrationmodel_reference.py est l'oracle du portage TypeScript : forme close et intégration
spatiale y coïncident à moins de 0,1 %, et il régénère tous les chiffres de
docs/modele-physique.md. Les porter dans src/model/ doit laisser ces nombres inchangés.
Lot 5 du plan : population desservie et onglet Le compromis. Voir PLAN.md §7.
Le site est servi par nginx sur zorg.chtitux.org à l'adresse https://train.bus.re.
Chaque push sur main déclenche .github/workflows/deploy.yml : tests, build, puis rsync de
dist/ vers /var/www/train.bus.re/dist avec l'utilisateur github-actions, dont la clé ne
peut qu'écrire dans ce dossier (rrsync). Les pull requests ne font que tester et builder.
- Géométrie du projet : Région Réunion, via le visualisateur du débat public. Tracé d'étude, susceptible d'évoluer. Extraction datée du 2 septembre 2026.
- Altimétrie : IGN RGE ALTI, Géoplateforme.
- Fond de carte : OpenStreetMap (ODbL) via Protomaps.
- MNT du relief : Mapzen / AWS
elevation-tiles-prod.