Commit Graph

8 Commits

Author SHA1 Message Date
df6545460b Logging multiprocessing: configure logger dans les workers spawn + compteur de progression
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:30:01 +02:00
bf4e42d571 Supprimer les RuntimeWarnings: NaN dans nanmean et cast uint8
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:29:03 +02:00
a654ff5964 Préserver les zones sans données: NaN-aware filtering dans les visualisations
- DTM: plus d'interpolation, les zones sans LiDAR restent NaN
- Ajout _fill_nans() et _filter_nanaware(): remplissent les NaN par
  nearest-neighbor avant filtrage, puis restaurent le masque NaN
- Toutes les visualisations avec filtres (LRM, MSLRM, TPI, SAILORE,
  roughness, anomalies, wavelet) utilisent _filter_nanaware pour
  éviter l'érosion des bords de données
- _save_tif() écrit nodata=float('nan') quand le tableau contient des NaN
- Les zones sans données restent vides dans les visualisations
- Les calculs ne sont pas faussés par des valeurs interpolées

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:24:36 +02:00
52409a6510 Pas d'interpolation dans le DTM: les zones sans données restent NaN
- Suppression de l'interpolation NearestNDInterpolator dans create_dtm_fast
- Les pixels sans données LiDAR restent NaN dans le DTM et les
  visualisations — pas de valeurs fictives qui faussent les calculs
- nodata=float('nan') dans le GeoTIFF de sortie pour identifier les vides
- _save_tif() détecte automatiquement les NaN et écrit le flag nodata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:17:48 +02:00
72b1437c1e Fix PDF report: lire WebP via PIL au lieu de matplotlib.imread
matplotlib ne supporte pas WebP. Remplace plt.imread() par
PILImage.open().convert('RGB') dans generate_pdf_report.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:06:21 +02:00
c891c6b23a Fix CUDA fork: spawn multiprocessing + graceful GPU fallback
- multiprocessing.set_start_method('spawn') pour éviter la corruption
  du contexte CUDA dans les processus forkés
- to_gpu() et xp_*_filter() attrapent les erreurs CUDA et tombent
  sur CPU au lieu de crasher
- _gpu_available() vérifie que le GPU est utilisable avant chaque opération
- gpu_cleanup() attrape les exceptions au cas où le GPU serait indisponible

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:04:02 +02:00
ad762e682d Suppression éclairage solaire, GPU accéléré, --file multi, tests unitaires
- Suppression de generate_solar (éclairage solaire) des visualisations
- Accélération GPU de hillshade, slope, aspect, curvature, depressions,
  anomalies, roughness, texture GLCM, flow (sink filling)
- Nettoyage mémoire GPU entre visualisations (gpu_cleanup)
- Correction OOM texture GLCM: calcul entropie bin par bin au lieu d'un
  tableau 3D massif sur GPU
- Correction bug: xp_minimum_filter manquant dans imports visualizations
- Option --file accepte plusieurs noms complets sans extension
- run.sh affiche l'aide si appelé sans arguments
- Option --test pour exécuter les tests unitaires dans Docker
- Filtre ReturnNumber>=1 intégré dans le pipeline PDAL (plus d'erreur SMRF)
- 60 tests unitaires: GPU, visualisations, rendering, DTM, pipeline, CLI
- Ajout pytest au Dockerfile

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 00:57:39 +02:00
f07e915f6d Refactor pipeline en modules + logging verbose/debug + options CLI
- Découpage du monolithe process_lidar.py (~2750 lignes) en package
  lidar_pipeline/ avec 9 modules (gpu, dtm, visualizations, ign,
  rendering, pipeline, cli, __init__, __main__)
- Logging configurable: -v (verbose avec timestamps) et --debug
  (détails internes fichier:ligne)
- Option --force pour régénérer tous les fichiers (par défaut skip
  les WebP existants)
- Option --file NOM pour traiter un seul fichier LAZ (tests rapides)
- ProcessPoolExecutor avec répertoires temporaires uniques par worker
- Suppression du code mort (geomorphons, hillshade_ne, nodata_mask)
- Aucun fichier TIFF résiduel après conversion WebP
- setup.py pour installation pip, stub process_lidar.py compatible

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 00:15:29 +02:00