Raccorder les bords de tuiles voisines et encadrer les rendus en cours

Le MNT de chaque dalle s'étend d'une bande de 100 m remplie avec les
points sol des 8 tuiles voisines (option « Raccord des bords ») : les
rendus à grand noyau (openness, SVF, LRM) deviennent continus d'une
dalle à l'autre, les images restent recadrées sur le kilomètre exact.

Pendant une génération, la carte encadre les dalles du run : orange
pulsant en cours de rendu, rouge en échec — les coins WGS84 sont portés
par /api/status pour toutes les dalles non terminées.

La file de génération trie les dalles du nord au sud et passe à 10
workers GPU.
This commit is contained in:
Antoine Jacquin
2026-09-19 20:44:44 +02:00
parent 204b2ad111
commit 5f018fe2b6
15 changed files with 1075 additions and 247 deletions

View File

@ -143,13 +143,6 @@ def main():
"et les images). Sans ce flag, changer --ground-classification suffit : la "
"méthode enregistrée est comparée et un changement déclenche la reclassification."
)
parser.add_argument(
"--bare-earth",
action="store_true",
help="Sol nu : ramener le DTM au retour le plus bas de chaque cellule. "
"Requalifie le point le plus bas de chaque colonne en terrain — utile sous "
"végétation dense ou en relief raide où la classification du sol sous-couvre le terrain."
)
parser.add_argument(
"--openness-downsample",
type=int,
@ -159,13 +152,27 @@ def main():
"grille décimée par blocs puis rééchantillonnage. Défaut : 2 (~8× plus "
"rapide, rendu quasi identique) ; 1 = pleine résolution"
)
parser.add_argument(
"--edge-buffer",
type=float,
default=0.0,
metavar="METRES",
help="Raccord des bords : étendre le MNT d'une bande de N mètres remplie avec "
"les points sol des 8 tuiles LAZ voisines, pour que les rendus à grand "
"noyau (openness, SVF, LRM) soient continus d'une tuile à l'autre. "
"100 m couvre tous les rayons ; les images finales sont recadrées sur "
"la dalle 1 km exacte. 0 = désactivé (défaut). Un changement de valeur "
"régénère les DTM concernés."
)
parser.add_argument(
"--no-strip-align",
action="store_true",
help="Désactiver le calage vertical des faisceaux de vol. Par défaut, les écarts "
"verticaux ≥ 0,5 cm entre lignes de vol (PointSourceId) d'une tuile sont mesurés "
"sur les points sol et corrigés avant rastérisation du MNT (offsets consignés "
"dans DTM/*_stripalign.json)"
"sur les points sol et corrigés avant rastérisation du MNT, puis la gigue "
"intra-faisceau (décalages aléatoires des lignes de balayage successives d'une "
"même passe, type vibration capteur) est corrigée par fenêtres de temps GPS "
"(offsets et séries consignés dans DTM/*_stripalign.json)"
)
parser.add_argument(
"--keep-tif",
@ -360,9 +367,9 @@ def main():
ign_classes=args.ign_classes,
force_classify=args.force_classification,
keep_tif=args.keep_tif,
bare_earth=args.bare_earth,
strip_align=not args.no_strip_align,
openness_downsample=args.openness_downsample,
edge_buffer=args.edge_buffer,
quality=quality,
only_viz=only_viz,
skip_viz=skip_viz,