Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Phase7_SwitchProcessor.h
Aller à la documentation de ce fichier.
1
25#pragma once
26
27#include "PipelineContext.h"
30
32{
33public:
34
45 static void run(PipelineContext& ctx,
46 const ParserConfig& config,
47 Logger& logger);
48
50
51private:
52
53 // =========================================================================
54 // A/B/C — Doubles aiguilles
55 // =========================================================================
56
60 static std::vector<std::pair<SwitchBlock*, SwitchBlock*>>
61 detectClusters(const BlockSet& blocks, double radius, Logger& logger);
62
66 static StraightBlock* findLinkSegment(const BlockSet& blocks,
67 const SwitchBlock* swA,
68 const SwitchBlock* swB);
69
73 static void absorbLinkSegment(BlockSet& blocks,
74 SwitchBlock* swA,
75 SwitchBlock* swB,
76 Logger& logger);
77
81 static void validateCDC(const BlockSet& blocks,
82 double minLength,
83 Logger& logger);
84
85 // =========================================================================
86 // D/E — Crossovers
87 // =========================================================================
88
92 static std::vector<std::pair<SwitchBlock*, SwitchBlock*>>
93 detectCrossovers(const BlockSet& blocks, Logger& logger);
94
99 BlockSet& blocks,
100 const std::vector<std::pair<SwitchBlock*, SwitchBlock*>>& crossovers,
101 Logger& logger);
102
103 // =========================================================================
104 // G — Orientation géométrique root/normal/deviation
105 // =========================================================================
106
121 static void orientBranches(BlockSet& blocks, Logger& logger);
122
131 static CoordinateXY branchVector(const SwitchBlock& sw,
132 const ShuntingElement* elem);
133
134 // =========================================================================
135 // F — Tips CDC
136 // =========================================================================
137
148 static void computeTips(BlockSet& blocks,
149 double sideSize,
150 Logger& logger);
151
163 const std::vector<CoordinateLatLon>& pts,
164 const CoordinateLatLon& junction,
165 double targetDist);
166
180 const std::vector<CoordinateXY>& pts,
181 const CoordinateXY& junctionUTM,
182 double targetDist);
183};
Système de journalisation à 5 niveaux de trace, un fichier par moteur.
Paramètres de configuration du pipeline GeoParser.
Conteneur central des données inter-phases du pipeline GeoParser.
Coordonnée géographique WGS-84 exprimée en degrés décimaux.
Definition CoordinateLatLon.h:22
Coordonnée plane en mètres dans un système métrique (UTM ou similaire).
Definition CoordinateXY.h:23
Journaliseur associé à un moteur nommé.
Definition Logger.h:99
Definition Phase7_SwitchProcessor.h:32
static CoordinateXY interpolateTipUTM(const std::vector< CoordinateXY > &pts, const CoordinateXY &junctionUTM, double targetDist)
Interpole un point UTM sur une polyligne à targetDist mètres depuis l'extrémité la plus proche de jun...
Definition Phase7_SwitchProcessor.cpp:575
static void enforceCrossoverConsistency(BlockSet &blocks, const std::vector< std::pair< SwitchBlock *, SwitchBlock * > > &crossovers, Logger &logger)
E — Force la cohérence des crossovers (branches partagées → DEVIATION).
Definition Phase7_SwitchProcessor.cpp:307
static void validateCDC(const BlockSet &blocks, double minLength, Logger &logger)
C — Valide les longueurs de branches selon les critères CDC.
Definition Phase7_SwitchProcessor.cpp:216
static void computeTips(BlockSet &blocks, double sideSize, Logger &logger)
F — Calcule les tips CDC des 3 branches de chaque switch.
Definition Phase7_SwitchProcessor.cpp:482
Phase7_SwitchProcessor()=delete
static CoordinateLatLon interpolateTip(const std::vector< CoordinateLatLon > &pts, const CoordinateLatLon &junction, double targetDist)
Interpole un point WGS84 sur une polyligne à targetDist mètres depuis l'extrémité la plus proche de j...
Definition Phase7_SwitchProcessor.cpp:533
static std::vector< std::pair< SwitchBlock *, SwitchBlock * > > detectClusters(const BlockSet &blocks, double radius, Logger &logger)
A — Détecte les paires de switches formant un double switch.
Definition Phase7_SwitchProcessor.cpp:92
static StraightBlock * findLinkSegment(const BlockSet &blocks, const SwitchBlock *swA, const SwitchBlock *swB)
B — Trouve le StraightBlock de liaison entre deux switches.
Definition Phase7_SwitchProcessor.cpp:129
static void orientBranches(BlockSet &blocks, Logger &logger)
G — Oriente les 3 branches de chaque switch par heuristique géométrique.
Definition Phase7_SwitchProcessor.cpp:341
static std::vector< std::pair< SwitchBlock *, SwitchBlock * > > detectCrossovers(const BlockSet &blocks, Logger &logger)
D — Détecte les paires de switches en crossover.
Definition Phase7_SwitchProcessor.cpp:266
static void run(PipelineContext &ctx, const ParserConfig &config, Logger &logger)
Exécute le traitement complet des aiguillages.
Definition Phase7_SwitchProcessor.cpp:37
static CoordinateXY branchVector(const SwitchBlock &sw, const ShuntingElement *elem)
Calcule le vecteur UTM unitaire de la jonction vers une branche.
Definition Phase7_SwitchProcessor.cpp:432
static void absorbLinkSegment(BlockSet &blocks, SwitchBlock *swA, SwitchBlock *swB, Logger &logger)
B — Absorbe le segment de liaison d'un cluster.
Definition Phase7_SwitchProcessor.cpp:160
Interface abstraite pour tous les éléments de shuntage ferroviaire.
Definition ShuntingElement.h:39
Definition StraightBlock.h:24
Definition SwitchBlock.h:41
Conteneur propriétaire des StraightBlock et SwitchBlock.
Definition BlockSet.h:48
Configuration complète du pipeline GeoParser — POD sans logique.
Definition ParserConfig.h:16
Conteneur central du pipeline GeoParser.
Definition PipelineContext.h:51