Commit Graph

16 Commits

Author SHA1 Message Date
f3026f41c9 Préfixer les logs par le nom du fichier LAZ en cours
Ajout d'un FilePrefixFilter qui préfixe chaque message avec [basename]
quand un fichier est en cours de traitement. Les workers paralleles
affichent ainsi clairement quel fichier produit chaque log.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 01:32:19 +02:00
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
54800cb516 Pipeline LiDAR: accélération GPU (CuPy), sortie WebP, script run.sh
- Accélération GPU via CuPy pour SVF, Openness, LRM, MSRM, SAILORE, TPI, wavelet
- Fallback automatique vers numpy si GPU non disponible
- Sortie WebP sans perte (remplace PNG, fichiers plus petits)
- Script run.sh avec options -g (GPU), -w (workers), -r (résolution)
- Docker basé sur nvidia/cuda:12.4.0-devel pour support CuPy
- Docker tourne en uid/gid 1000:1000
- Légendes explicites différenciant LRM vs MSRM vs SAILORE
- Correction bug ordre elif (mslrm avant lrm)
- Retrait de geomorphons et VAT (demande utilisateur)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 22:22:28 +02:00
d8502ff26e Pipeline LiDAR: 19 visualisations archéologiques, corrections SVF/Openness, légendes explicites
- Corriger SVF: ray-tracing 16 azimuts (inversion DEM remplacée)
- Corriger Openness: angle zénith/nadir sur 8 directions (min/max filter remplacé)
- Ajouter MSRM (LRM multi-échelle 5/10/25/50/100m)
- Ajouter TPI multi-échelle (5m + 100m)
- Ajouter détection dépressions (remplissage hydrologique)
- Ajouter SAILORE (LRM adaptatif f(pente))
- Ajouter rugosité de surface (écart-type local 5m)
- Ajouter anomalies statistiques (z-score + Moran's I)
- Ajouter ondelette Mexican Hat (CWT 5 échelles)
- Ajouter texture GLCM (contraste + entropie - homogénéité)
- Ajouter accumulation de flux (D8)
- Retirer geomorphons et VAT composite
- Répertoire par fichier LAZ dans visualisations/
- Support multi-CPU (-w/--workers)
- Légendes explicites avec différenciation entre techniques similaires
- Docker: uid/gid 1000:1000

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 21:13:20 +02:00
7c609d0c24 Remove debug script
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 01:21:36 +02:00
96cd62bc79 Correction orientation nord + filtrage ReturnNumber=0 pour fichiers corrompus
- Inversion axe Y du DTM pour orientation nord correcte
- Fallback filters.range pour fichiers LAZ avec ReturnNumber=0
- Flèche nord vectorielle noire au-dessus de la légende
- 9/9 fichiers traités avec succès

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 01:21:28 +02:00
57b3b78593 Pipeline LiDAR optimisé: suppression classification sémantique, ajout flèche nord vectorielle
- Suppression module classification sémantique (non fonctionnel)
- Suppression section rapports (vue synthétique)
- Ajout flèche du nord vectorielle noire (coin supérieur droit, au-dessus légende)
- Pipeline simplifié à 3 étapes: classification sol, génération DTM, visualisations
- Prétraitement ReturnNumber pour fichiers LAZ corrompus
- Orientation nord garantie sur toutes les cartes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-09 00:46:50 +02:00
e642cde7bc Pipeline LiDAR complet: 9 visualisations + classification sémantique automatique
- Correction bug geojson dans process_lidar.py
- Semantic classifier fonctionnel avec K-Means
- 9 visualisations JPEG selon état de l'art 2024-2025
- Statistiques de classification sémantique exportées en JSON
- Nettoyage automatique des fichiers temporaires

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 23:37:14 +02:00
2cc5b2a5f3 Initial commit: Pipeline LiDAR archéologique Docker
- Dockerfile avec PDAL, GDAL, Python
- Script Python de traitement avec visualisations archéologiques
- Configuration docker-compose avec UID 1000:1000
- Support des fichiers LAZ/LAS pour détection de cavités et structures
- Génération de 6 visualisations JPEG (Hillshade, Slope, SVF, LRM, Openness)
- Légendes explicites avec unités et descriptions
- Nettoyage automatique des fichiers temporaires

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 22:58:36 +02:00