Fix basename: retirer .copc.laz au lieu de .laz seul

Les fichiers LiDAR HD IGN ont l'extension .copc.laz (double extension).
Path.stem ne retire que .laz, laissant .copc dans le basename.
Ajout de _file_basename() qui retire les extensions connues
dans l'ordre: .copc.laz, .copc.las, .laz, .las.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jacquin Antoine
2026-05-10 12:02:32 +02:00
parent 0904592fa2
commit beb88684cb
2 changed files with 24 additions and 3 deletions

View File

@ -24,6 +24,20 @@ except RuntimeError:
logger = logging.getLogger("lidar")
def _file_basename(path):
"""Extract base name from a LAZ/LAS file, removing all known extensions.
Handles double extensions like .copc.laz correctly:
'file.copc.laz' -> 'file', not 'file.copc'
"""
name = Path(path).name
# Remove known LiDAR extensions (order matters: longest first)
for ext in ['.copc.laz', '.copc.las', '.laz', '.las']:
if name.lower().endswith(ext):
return name[:-len(ext)]
return Path(path).stem
class FilePrefixFilter(logging.Filter):
"""Adds a file prefix to log messages when processing a specific file."""
def __init__(self):
@ -208,7 +222,7 @@ class LidarArchaeoPipeline:
def process_file(self, laz_file):
"""Process a single LAZ file through the full pipeline."""
basename = laz_file.stem
basename = _file_basename(laz_file)
_file_filter.basename = basename
t_start = time.time()
@ -358,7 +372,7 @@ def _process_file_standalone(laz_file_str, input_dir, output_dir, resolution, fo
worker_logger.addFilter(_file_filter)
pipeline = LidarArchaeoPipeline(input_dir, output_dir, resolution=resolution, workers=1, force=force, ground_method=ground_method, force_classify=force_classify)
basename = Path(laz_file_str).stem
basename = _file_basename(laz_file_str)
pipeline.temp_dir = pipeline.output_dir / f"temp_{basename}"
pipeline.temp_dir.mkdir(exist_ok=True)
laz_file = Path(laz_file_str)