Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Phase6_BlockExtractor.h
Aller à la documentation de ce fichier.
1
27#pragma once
28
29#include "PipelineContext.h"
32
34{
35public:
36
52 static void run(PipelineContext& ctx,
53 const ParserConfig& config,
54 Logger& logger);
55
57
58private:
59
76 static void extractStraights(PipelineContext& ctx,
77 const ParserConfig& config,
78 Logger& logger);
79
98 static void extractSwitches(PipelineContext& ctx, Logger& logger);
99
123 static void registerStraight(PipelineContext& ctx,
124 const std::vector<CoordinateXY>& ptsUTM,
125 const std::vector<CoordinateLatLon>& ptsWGS84,
126 size_t nodeA,
127 size_t nodeB,
128 const std::string& baseId,
129 double maxLen,
130 const BlockEndpoint& epA,
131 const BlockEndpoint& epB);
132
134 static bool isFrontier(const PipelineContext& ctx, size_t nodeId);
135
137 static void appendSegment(std::vector<CoordinateXY>& ptsUTM,
138 std::vector<CoordinateLatLon>& ptsWGS84,
139 const AtomicSegment& seg,
140 bool reversed);
141
147 static size_t directedKey(size_t from, size_t to)
148 {
149 return from * 1'000'000ULL + to;
150 }
151
157 static size_t pairKey(size_t idA, size_t idB)
158 {
159 const size_t a = std::min(idA, idB);
160 const size_t b = std::max(idA, idB);
161 return (a + b) * (a + b + 1) / 2 + b;
162 }
163
165 static double computeLength(const std::vector<CoordinateXY>& pts);
166};
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.
Journaliseur associé à un moteur nommé.
Definition Logger.h:99
Definition Phase6_BlockExtractor.h:34
static size_t directedKey(size_t from, size_t to)
Clé directionnelle : from * 1'000'000 + to.
Definition Phase6_BlockExtractor.h:147
static void registerStraight(PipelineContext &ctx, const std::vector< CoordinateXY > &ptsUTM, const std::vector< CoordinateLatLon > &ptsWGS84, size_t nodeA, size_t nodeB, const std::string &baseId, double maxLen, const BlockEndpoint &epA, const BlockEndpoint &epB)
Crée un ou plusieurs StraightBlock depuis la géométrie assemblée.
Definition Phase6_BlockExtractor.cpp:183
Phase6_BlockExtractor()=delete
static double computeLength(const std::vector< CoordinateXY > &pts)
Calcule la longueur UTM d'une polyligne.
Definition Phase6_BlockExtractor.cpp:440
static void run(PipelineContext &ctx, const ParserConfig &config, Logger &logger)
Exécute la phase 6.
Definition Phase6_BlockExtractor.cpp:42
static void extractStraights(PipelineContext &ctx, const ParserConfig &config, Logger &logger)
Extrait les StraightBlocks par DFS entre nœuds frontières.
Definition Phase6_BlockExtractor.cpp:76
static void extractSwitches(PipelineContext &ctx, Logger &logger)
Extrait les SwitchBlocks et résout leurs endpoints.
Definition Phase6_BlockExtractor.cpp:319
static bool isFrontier(const PipelineContext &ctx, size_t nodeId)
Nœud non-STRAIGHT → frontière.
Definition Phase6_BlockExtractor.cpp:410
static size_t pairKey(size_t idA, size_t idB)
Clé canonique Cantor(min, max) — indépendante de l'ordre.
Definition Phase6_BlockExtractor.h:157
static void appendSegment(std::vector< CoordinateXY > &ptsUTM, std::vector< CoordinateLatLon > &ptsWGS84, const AtomicSegment &seg, bool reversed)
Ajoute les points d'un AtomicSegment à la géométrie accumulée.
Definition Phase6_BlockExtractor.cpp:416
Segment atomique entre deux nœuds topologiques potentiels.
Definition SplitNetwork.h:29
Extrémité d'un bloc — nœud frontière + ID du bloc voisin.
Definition BlockSet.h:35
Configuration complète du pipeline GeoParser — POD sans logique.
Definition ParserConfig.h:16
Conteneur central du pipeline GeoParser.
Definition PipelineContext.h:51