Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Phase4_TopologyBuilder.h
Aller à la documentation de ce fichier.
1
23#pragma once
24
25#include "PipelineContext.h"
28
30{
31public:
32
43 static void run(PipelineContext& ctx,
44 const ParserConfig& config,
45 Logger& logger);
46
48
49private:
50
57 struct UnionFind
58 {
59 std::vector<size_t> parent;
60 std::vector<int> rank_;
61
69 explicit UnionFind(size_t n)
70 : parent(n), rank_(n, 0)
71 {
72 std::iota(parent.begin(), parent.end(), size_t{ 0 });
73 }
74
82 size_t find(size_t x)
83 {
84 if (parent[x] != x)
85 parent[x] = find(parent[x]); // Raccourcissement récursif
86 return parent[x];
87 }
88
95 void unite(size_t a, size_t b)
96 {
97 a = find(a); b = find(b);
98 if (a == b) return;
99 if (rank_[a] < rank_[b]) std::swap(a, b);
100 parent[b] = a;
101 if (rank_[a] == rank_[b]) ++rank_[a];
102 }
103 };
104
119 static size_t findSnapNeighbour(
120 const CoordinateXY& pos,
121 const std::unordered_map<GridCell,
122 std::vector<size_t>,
123 GridCellHash>& grid,
124 const std::vector<CoordinateXY>& nodePos,
125 double cellSize,
126 double tolerance);
127};
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 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 Phase4_TopologyBuilder.h:30
Phase4_TopologyBuilder()=delete
static size_t findSnapNeighbour(const CoordinateXY &pos, const std::unordered_map< GridCell, std::vector< size_t >, GridCellHash > &grid, const std::vector< CoordinateXY > &nodePos, double cellSize, double tolerance)
Cherche un nœud existant dans la snap grid à moins de tolerance.
Definition Phase4_TopologyBuilder.cpp:190
static void run(PipelineContext &ctx, const ParserConfig &config, Logger &logger)
Exécute la phase 4.
Definition Phase4_TopologyBuilder.cpp:20
Fonction de hachage pour GridCell — Cantor pairing.
Definition IntersectionMap.h:78
Clé de cellule de la grille spatiale de binning.
Definition IntersectionMap.h:61
Configuration complète du pipeline GeoParser — POD sans logique.
Definition ParserConfig.h:16
Structure Union-Find interne avec path compression + union by rank.
Definition Phase4_TopologyBuilder.h:58
std::vector< int > rank_
Definition Phase4_TopologyBuilder.h:60
size_t find(size_t x)
Trouve le représentant canonique de x — path compression.
Definition Phase4_TopologyBuilder.h:82
std::vector< size_t > parent
Definition Phase4_TopologyBuilder.h:59
void unite(size_t a, size_t b)
Fusionne les ensembles contenant a et b — union by rank.
Definition Phase4_TopologyBuilder.h:95
UnionFind(size_t n)
Initialise l'Union-Find pour n éléments.
Definition Phase4_TopologyBuilder.h:69
Conteneur central du pipeline GeoParser.
Definition PipelineContext.h:51