#include <Phase2_GeometricIntersector.h>
|
| static double | computeCellSize (const PipelineContext &ctx) |
| | Calcule la taille de cellule optimale pour la grille.
|
| |
| static SpatialGrid | buildGrid (const PipelineContext &ctx, double cellSize, Logger &logger) |
| | Construit la grille spatiale depuis le RawNetwork.
|
| |
| static size_t | globalSegmentIndex (const PipelineContext &ctx, size_t polyIdx, size_t pointIdx) |
| | Calcule l'indice global d'un segment dans le réseau.
|
| |
| static std::optional< std::pair< double, double > > | intersect (const CoordinateXY &A, const CoordinateXY &B, const CoordinateXY &C, const CoordinateXY &D, double epsilon) |
| | Teste l'intersection entre deux segments UTM.
|
| |
| static bool | areAdjacent (const SegmentId &s1, const SegmentId &s2) |
| | Vérifie si deux segments sont adjacents (partagent une extrémité).
|
| |
◆ Phase2_GeometricIntersector()
| Phase2_GeometricIntersector::Phase2_GeometricIntersector |
( |
| ) |
|
|
delete |
◆ areAdjacent()
| bool Phase2_GeometricIntersector::areAdjacent |
( |
const SegmentId & |
s1, |
|
|
const SegmentId & |
s2 |
|
) |
| |
|
staticprivate |
Vérifie si deux segments sont adjacents (partagent une extrémité).
Les segments adjacents d'une même polyligne ne sont pas testés — ils partagent un point par construction et génèreraient de faux positifs.
- Paramètres
-
| s1 | Premier segment. |
| s2 | Second segment. |
- Renvoie
true si les segments sont adjacents (même polyligne, indices consécutifs).
◆ buildGrid()
Construit la grille spatiale depuis le RawNetwork.
Chaque segment est inséré dans toutes les cellules de sa bounding box.
- Paramètres
-
| ctx | Contexte pipeline. |
| cellSize | Taille de cellule en mètres UTM. |
| logger | Référence au logger GeoParser. |
- Renvoie
- Grille spatiale peuplée.
◆ computeCellSize()
| double Phase2_GeometricIntersector::computeCellSize |
( |
const PipelineContext & |
ctx | ) |
|
|
staticprivate |
Calcule la taille de cellule optimale pour la grille.
Basée sur la longueur moyenne des segments × 2. Garantit un minimum de 50 m pour éviter les cellules trop petites.
- Paramètres
-
| ctx | Contexte pipeline contenant rawNetwork. |
- Renvoie
- Taille de cellule en mètres UTM.
◆ globalSegmentIndex()
| size_t Phase2_GeometricIntersector::globalSegmentIndex |
( |
const PipelineContext & |
ctx, |
|
|
size_t |
polyIdx, |
|
|
size_t |
pointIdx |
|
) |
| |
|
staticprivate |
Calcule l'indice global d'un segment dans le réseau.
Index unique = somme des (taille-1) des polylignes précédentes + pointIndex.
- Paramètres
-
| ctx | Contexte pipeline. |
| polyIdx | Indice de la polyligne. |
| pointIdx | Indice du premier point du segment. |
- Renvoie
- Index global du segment.
◆ intersect()
Teste l'intersection entre deux segments UTM.
Algorithme de Cramer — résout le système linéaire 2×2. Retourne les paramètres t et u si l'intersection est valide.
- Paramètres
-
| A | Premier point du segment source. |
| B | Second point du segment source. |
| C | Premier point du segment croisé. |
| D | Second point du segment croisé. |
| epsilon | Tolérance en mètres UTM. |
- Renvoie
- Paire (t, u) si intersection valide,
std::nullopt sinon. t = position relative sur AB, u = position relative sur CD.
◆ run()
Exécute la phase 2.
Construit la grille spatiale depuis ctx.rawNetwork, puis teste chaque paire de segments candidats via l'algorithme de Cramer. Écrit le résultat dans ctx.intersections.
- Paramètres
-
| ctx | Contexte pipeline. Lit rawNetwork, écrit intersections. |
| config | Configuration — utilise intersectionEpsilon. |
| logger | Référence au logger GeoParser. |
La documentation de cette classe a été générée à partir des fichiers suivants :