- 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>
182 lines
4.7 KiB
Markdown
182 lines
4.7 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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é)
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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` :
|
|
```yaml
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '4' # CPU cores
|
|
memory: 8G # RAM
|
|
```
|
|
|
|
## 🔧 Dépannage
|
|
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Augmenter la limite mémoire dans docker-compose.yml
|
|
# Ou utiliser --memory=16g avec docker run
|
|
```
|
|
|
|
### Erreur PDAL/Whitebox
|
|
```bash
|
|
# 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
|
|
|
|
- [PDAL Documentation](https://pdal.io/)
|
|
- [WhiteboxTools](https://www.whiteboxgeo.com/manual/wbt_book/)
|
|
- [Archéologie LiDAR](https://archaeologydataservice.ac.uk/)
|