Pipeline LiDAR Archéologique - Docker

Workflow automatisé pour générer des visualisations exploitables à partir de données LiDAR pour la détection de structures archéologiques.

🎯 Ce que détecte ce pipeline

Visualisation Utilité archéologique
Hillshade multidirectionnel Murs, terrasses, structures linéaires, routes
Slope (Pente) Murs de soutènement, talus, changements brusques
Sky-View Factor Top - structures, tumulus, fondations
Local Relief Model Micro-reliefs, fossés, levées de terrain
Positive Openness Élévations, tumulus, bâtiments
Negative Openness Cavités, fossés, souterrains

📦 Installation Docker

# Clone ou copiez les fichiers dans un dossier
cd /votre/dossier/lidar

# Créez le dossier pour vos fichiers LAZ
mkdir -p input

# Copiez vos fichiers .laz dans input/
cp /chemin/vos/fichiers/*.laz input/

# Build l'image Docker
docker-compose build

# Ou avec docker build
docker build -t lidar-archeo .

🚀 Utilisation

Méthode 1: docker-compose (recommandé)

# Traitement avec résolution 0.5m
docker-compose up

# Résolution plus fine (plus lent)
docker-compose run -e RESOLUTION=0.2 lidar process_lidar.py /data/input -o /data/output -r 0.2

Méthode 2: docker run

# Basic
docker run --rm \
  -v $(pwd)/input:/data/input:ro \
  -v $(pwd)/output:/data/output \
  lidar-archeo

# Avec résolution personnalisée
docker run --rm \
  -v $(pwd)/input:/data/input:ro \
  -v $(pwd)/output:/data/output \
  lidar-archeo \
  process_lidar.py /data/input -o /data/output -r 0.3

# Plus de mémoire pour fichiers volumineux
docker run --rm \
  --memory=16g \
  --memory-swap=16g \
  -v $(pwd)/input:/data/input:ro \
  -v $(pwd)/output:/data/output \
  lidar-archeo

📁 Structure des dossiers

.
├── input/              # Vos fichiers .laz (monté en read-only)
├── output/             # Résultats générés
│   ├── DTM/           # Modèles numériques d'élévation
│   ├── visualisations/# Images PNG prêtes à l'emploi
│   └── rapports/      # Vues synthétiques
├── Dockerfile
├── docker-compose.yml
└── process_lidar.py

📊 Sortie générée

Après traitement, dans output/ :

output/
├── DTM/
│   └── fichier_dtm.tif
├── visualisations/
│   ├── fichier_hillshade_multi.png
│   ├── fichier_svf.png              # ⭐ Sky-View Factor
│   ├── fichier_lrm.png              # Local Relief Model
│   ├── file_positive_openness.png   # Élévations
│   ├── file_negative_openness.png   # ⭐ Cavités
│   └── fichier_slope.png
└── rapports/
    └── fichier_overview.png         # Vue 2x3 synthétique

👁️ Interprétation

Pour détecter les cavités et souterrains

Regardez dans cet ordre :

  1. Negative Openness - Zones bleues foncées = creux
  2. Local Relief Model - Zones bleues = dépressions
  3. Hillshade - Ombres inhabituelles en forme de trous

Pour détecter structures et bâtiments anciens

  1. Sky-View Factor - Structures géométriques claires
  2. Positive Openness - Zones orangées/rouges = élévations
  3. Hillshade - Lignes droites, rectangles, angles

Pour élévations de terrain

  1. Slope - Changements de pente brusques
  2. Positive Openness - Zones en hauteur
  3. LRM - Zones rouges = relief local

⚙️ Paramètres

Résolution (-r)

  • 0.2 - Très fine, bâtiments individuels (lent)
  • 0.5 - Recommandé archéologie (équilibre)
  • 1.0 - Rapide, grandes structures

Ressources Docker

Modifiez dans docker-compose.yml :

deploy:
  resources:
    limits:
      cpus: '4'      # CPU cores
      memory: 8G     # RAM

🔧 Dépannage

# Vérifier que Docker fonctionne
docker --version
docker-compose --version

# Voir les logs en temps réel
docker-compose up -f

# Shell dans le conteneur
docker-compose run lidar bash

# Nettoyer tout
docker-compose down -v
docker system prune -a

Erreur mémoire

# Augmenter la limite mémoire dans docker-compose.yml
# Ou utiliser --memory=16g avec docker run

Erreur PDAL/Whitebox

# Recréer l'image
docker-compose build --no-cache

📝 Prochaines améliorations

  • Classification automatique des structures détectées
  • Export GeoTIFF géoréférencés pour QGIS
  • Interface web pour exploration interactive
  • Support multi-fichiers avec mosaïque

📚 Ressources

Description
No description provided
Readme 890 KiB
Languages
Python 86.6%
Shell 12.5%
Dockerfile 0.9%