Isoler les dalles voisines de raccord dans input/edge_neighbors/

This commit is contained in:
Antoine Jacquin
2026-09-19 23:43:50 +02:00
parent 5ef0232c80
commit 3236d56a4b
4 changed files with 50 additions and 12 deletions

View File

@ -1043,8 +1043,14 @@ def _interpolate_holes(dtm, downsample=8):
# images finales sont recadrées sur la dalle exacte (cf. rendering.py).
EDGE_BUFFER_TAG = "LIDAR_EDGE_BUFFER" # tag GeoTIFF : tampon utilisé (m)
# Sous-dossier de input/ où sont isolées les dalles voisines téléchargées
# pour le seul raccord des bords : elles ne font pas partie du corpus de
# tuiles à rendre (les scans globaux n'énumèrent que input/ à plat).
EDGE_NEIGHBORS_DIRNAME = "edge_neighbors"
# Décalages des 8 voisines d'une dalle (col, row) en km
_NEIGHBOR_OFFSETS = [(-1, -1), (0, -1), (1, -1), (-1, 0),
(1, 0), (-1, 1), (0, 1), (1, 1)]
@ -1055,12 +1061,19 @@ def _tile_coords(name):
def _neighbor_laz_files(source_laz):
"""Liste les 8 fichiers LAZ/LAS adjacents à `source_laz` dans son dossier."""
"""Liste les 8 fichiers LAZ/LAS adjacents à `source_laz`.
Recherche dans le dossier de la source, puis dans le sous-dossier
edge_neighbors/ : les dalles voisines téléchargées pour le seul raccord
des bords y sont isolées — sinon elles s'accumulent à plat dans input/ et
chaque passe globale annexe un anneau de tuiles à rendre en plus.
"""
coords = _tile_coords(source_laz)
if coords is None:
return []
col, row = coords
directory = Path(source_laz).parent
search_dirs = [directory, directory / EDGE_NEIGHBORS_DIRNAME]
neighbors = []
for dcol, drow in _NEIGHBOR_OFFSETS:
nc, nr = col + dcol, row + drow
@ -1068,9 +1081,10 @@ def _neighbor_laz_files(source_laz):
# on accepte aussi la variante sans remplissage pour les dalles exotiques.
names = {f"LHD_FXX_{nc:04d}_{nr:04d}", f"LHD_FXX_{nc}_{nr}"}
matches = []
for name in names:
matches += list(directory.glob(f"{name}_*.las"))
matches += list(directory.glob(f"{name}_*.laz"))
for search_dir in search_dirs:
for name in names:
matches += list(search_dir.glob(f"{name}_*.las"))
matches += list(search_dir.glob(f"{name}_*.laz"))
if matches:
neighbors.append(sorted(matches)[0])
else: