Détection de changement d'occupation du sol (LULC) par NDVI à partir d'images Sentinel-2 — commune d'Isalo, Madagascar
# 🌍 Détection automatisée du changement d'occupation du sol — Isalo, Madagascar
Chaîne de traitement automatisée en **R** pour détecter les changements d'occupation du sol (LULC — Land Use/Land Cover) entre 2019 et 2025 sur la commune d'Isalo, à partir d'images satellite **Sentinel-2** (NDVI + classification non supervisée).
Projet réalisé dans le cadre du **M2 SIGD (Systèmes d'Information Géomatique et Décisionnel)** — EMIT.
## 🎯 Objectif
Automatiser un pipeline complet — de la recherche d'images satellite à la production de statistiques de surface — pour quantifier l'évolution de la végétation et de l'artificialisation des sols sur la commune d'Isalo entre deux périodes de référence.
## ⚙️ Méthodologie
1. **Recherche des scènes Sentinel-2** disponibles sur la tuile couvrant la zone, directement via Google Cloud Storage (bucket public `gcp-public-data-sentinel-2`)
2. **Filtrage temporel** : sélection d'une scène par période de référence (janvier–juin 2019 vs janvier–juin 2025)
3. **Téléchargement** des bandes nécessaires (B04 rouge, B08 proche infrarouge, SCL classification de scène) en 10m/20m de résolution
4. **Calcul du NDVI** `(B08 - B04) / (B08 + B04)`, avec masquage des nuages/ombres/cirrus via la bande SCL, puis recadrage sur la zone d'intérêt (AOI)
5. **Classification non supervisée** (k-means, 4 classes) du NDVI en catégories d'occupation du sol : sol nu/bâti, végétation clairsemée, modérée, dense
6. **Comparaison temporelle** entre les deux classifications (matrice de transition + carte binaire de changement)
7. **Statistiques de surface** par classe, en hectares, exportées en CSV
### 🔧 Point technique notable
`sen2r`, la librairie R habituellement utilisée pour automatiser la recherche/téléchargement Sentinel-2, est abandonnée depuis fin 2023 et ne reconnaît pas le format de version de traitement ESA actuel (`N9905`). La chaîne contourne ce blocage en interrogeant **directement le bucket Google Cloud public** via `gsutil`, sans dépendre de `sen2r …