|
Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
|
SimulateurFerroviaire est un simulateur ferroviaire Win32/C++ ciblant la ligne Saujon – La Tremblade (Charente-Maritime). Il reconstitue la topologie réelle du réseau à partir de données géographiques ouvertes (GeoJSON OpenStreetMap) et en produit une représentation schématique interactive conforme aux standards SNCF de contrôle du mouvement (PCC/TCO).
L'application est développée sous Visual Studio 2022, compilée en x64 sur Windows 11, avec les bibliothèques système Win32, WebView2 (COM) et GDI.
Le projet est découpé en quatre grandes zones fonctionnelles, reflétées dans l'arborescence des sources :
| Module | Espace de noms / dossier | Rôle |
|---|---|---|
| Éléments interactifs | Modules/Elements/ | Modèle de domaine — blocs de voie et aiguillages |
| GeoParser v2 | Modules/GeoParser/ | Pipeline de conversion GeoJSON → topologie |
| PCC / TCO | Modules/PCC/ | Graphe logique et rendu du tableau de contrôle |
| Engine Core | Engine/Core/ | Logger, coordonnées, topologie, configuration |
| HMI | Engine/HMI/ | Fenêtre principale, WebView2, panneau PCC |
L'unique point de partage entre les modules est le singleton TopologyRepository, qui expose un TopologyData immuable après le parsing.
Ctrl+O) → sélectionner un fichier .geojson.F2.Menu Fichier → Paramètres du parser (Ctrl+P) ouvre ParserSettingsDialog. Les valeurs sont persistées dans parser_config.ini (voir ParserConfigIni).
Paramètres clés :
| Paramètre | Défaut | Description |
|---|---|---|
snapTolerance | 1,0 m | Distance maximale entre deux extrémités pour les fusionner |
maxSegmentLength | 200,0 m | Longueur au-delà de laquelle un straight est subdivisé |
minSwitchAngle | 5,0 ° | Angle minimum pour qu'une bifurcation soit classée SWITCH |
junctionTrimMargin | 3,0 m | Recul des tips CDC depuis la jonction |
switchSideSize | 15,0 m | Demi-longueur des stubs pour l'interpolation des tips |
doubleSwitchRadius | 20,0 m | Rayon de détection des aiguilles doubles |
NORMAL ↔ DEVIATION et propage aux partenaires double-aiguille.F2) → TCO schématique zoomable/pannable (molette + glisser).| Élément | Convention |
|---|---|
| Noms de variables et fonctions | Anglais |
| Docstrings Doxygen | Français |
| Système de coordonnées métrique | UTM zone 30N |
| Système de coordonnées géographique | WGS-84 |
| Gestion d'erreur fatale | LOG_FAILURE → std::runtime_error |
| Ownership des blocs | std::unique_ptr dans TopologyData |
| Pointeurs non-propriétaires | Pointeurs bruts annotés non-propriétaire |