Télédétection des feux de forêt

De Wiki de Geonov

Dans cet article, nous utiliserons les images des satellites Sentinel-2 pour extraire l’emprise des incendies de juin 2017 au Portugal.

1 Introduction

1.1 Incendies de juin 2017 au Portugal

Le 17 juin 2017 s’est déclaré un incendie entre les villes d’Aguda et de Pedrógão Grande au Portugal dont l’origine est accidentelle (arbre touché par la foudre lors d’un orage sec). Il s’est étendu au nord-est par l’incendie d’Alvares le 18 juin 2017.

Ces incendies, dramatiques par la surface totale brulée (29 819 Ha à Aguda et 16 950 Ha à Alvares) mais surtout par le nombre de victimes (64 morts et 254 blessés), ont été circonscrits le 22 juin 2017.

Illustration

1.2 Sentinel-2

Les satellites Sentinel-2 fournissent des images multi-spectrales à grande résolution de la Terre disponibles gratuitement. Ces satellites font partie du programme Copernicus, un “programme européen de surveillance de la Terre”.

2 Téléchargement des données

Les incendies ayant été circonscrits le 22 juin 2017, il faut télécharger les images Sentinel-2 de la zone postérieures à cette date. Pour cela nous nous rendons sur le “hub” du projet Copernicus (la création d’un compte gratuit est nécessaire pour télécharger les images).

Ensuite nous zoomons sur la zone concernée et nous dessinons un rectangle.

Téléchargement des images Sentinel-2

Dans les options de recherche avancée, nous indiquons une plage de dates (par exemple du 23 juin à aujourd’hui), la mission Sentinel-2 et la couverture nuageuse maximale (par exemple : [0 TO 10], cela éliminera les images du 24 juin où la couverture nuageuse est très importante). Ensuite nous cliquons sur le bouton de recherche.

Nous obtenons 4 lots d’images :

Téléchargement des images Sentinel-2

En fait il s’agit de deux prises de vue, l’une du 4 juillet et l’autre du 14 juillet 2017, disponibles à deux niveaux de traitement : fichiers au niveau 1C (nommé S2A_MSIL1C) ou au niveau 2A (nommé S2A_MSIL2A). Le niveau 1C correspond aux images d’origine après divers traitements et corrections automatisés. Le niveau 2A est le résultat d’une classification et d’une correction atmosphérique du niveau 1C (Réflectance BOA).

Note.png NOTE : Dans notre exemple, nous prendrons le niveau 1C du 4 juillet afin de montrer que l’on peut soi-même appliquer la correction atmosphérique. Dans la réalité, nous prendrions directement le niveau 2A pour s’épargner une phase du traitement.

3 Préparation des données

3.1 Réflectance BOA

Une fois le fichier ZIP des images Sentinel-2 téléchargé et décompressé, nous ouvrons QGIS et le plugin ‘Semi-Automatic Classification’.

Dans l’onglet “Preprocessing / Sentinel 2”, nous indiquons le dossier contenant les images ([…][…]_DATA) et l’emplacement du fichier “MTD_MSIL1C.xml” (à la racine du dossier décompressé). Ensuite nous cochons la case “Apply DOS1 atmospheric correction” et en profitons pour supprimer les bandes B1, B9 et B10 qui ne nous seront pas utiles pour la suite.

Correction de la réflectance

Enfin nous exécutons le traitement et les images s’ouvrent dans QGIS.

3.2 Découpage

Toute la zone couverte par les images ne nous est pas utile, nous allons donc la découper ce qui accélèrera les traitements ultérieurs.

Pour cela soit vous notez les coordonnées des 4 coins, soit vous créez un nouveau fichier SHP de type polygone dans QGIS, de même projection que les images, par exemple EPSG:32629 dans notre cas.

Pour les incendies du Portugal, la zone à découper est facile à identifier, surtout avec la bande B08 (proche infra-rouge) où une grosse tâche noire indique les zones brulées (deux autres plus petites sont également visibles) :

Aperçu des incendies

Comme nous sommes déjà dans QGIS, il est rapide de créer un rectangle de découpe au format SHAPE.

Ensuite dans l’onglet “Preprocessing / Clip multiple rasters”, nous cliquons sur l’icône “Refresh list” puis sur “Select all” et nous indiquons la couche SHAPE à utiliser.

Découpage des images

Enfin nous exécutons le traitement et les images découpées (préfixées par défaut par “clip_”) s’ouvrent dans QGIS. Les anciennes images peuvent être supprimées.

3.3 Jeu de bandes

Il nous reste à organiser les bandes (“Band set”) dans un raster virtuel afin de pouvoir facilement visualiser les bandes de son choix.

Dans l’onglet “Band Set”, nous cliquons sur l’icône “Refresh list” puis sur “Select all” et enfin sur “Add band to band set”. Dans la rubrique “Band set definition”, nous trions les bandes par ordre alphabétique puis nous déplaçons la bande 8A en huitième position, juste après la bande 8. Enfin dans “Quick wavelength settings”, nous choisissons “Sentinel-2”, cochons “Create virtual raster of band set” et lançons le traitement.

Découpage des images

Nous pouvons maintenant désactiver toutes les couches rasters dans QGIS pour ne voir que la couche virtuelle. Puis dans la barre d’outils “RGB =”, nous indiquons la combinaison de bandes qui nous intéresse.

Par exemple 3-2-1 (donc les bandes B04-B03-B02 de Sentinel-2 c’est à dire RED-GREEN-BLUE) affichera une image naturelle :

Découpage des images

La combinaison 3-7-10 (donc les bandes B04-B08-B12 de Sentinel-2 c’est à dire RED-NIR-SWIR) affichera une image composite où les habitations apparaitront en rose, la végétation en vert et les zones brulées en violet :

Découpage des images

Dernier exemple avec la combinaison 7-3-2 (donc les bandes B08-B04-B03 de Sentinel-2 c’est à dire NIR-RED-GREEN) qui est classiquement utilisée pour repérer la végétation qui apparait en rouge :

Découpage des images
Note-important.png IMPORTANT : En fait à chaque élément sur le terrain correspondra une combinaison idéale de bandes pour l’identifier. La télédétection va donc consister à jouer avec les combinaisons de bandes pour identifier la signature de chaque type d’élément recherché (route, forêt ou dans notre exemple zone brulée). Et grâce à notre raster virtuel, le passage d’une combinaison à une autre se fera dans la seconde !

4 Télédétection

Maintenant que tout est prêt, il reste à identifier la signature spectrale de chaque élément constitutif des images.

4.1 Fichier d’apprentissage

Nous créons d’abord un fichier d’apprentissage dans le “dock SCP”, rubrique “SCP Input”. Le fichier sera de même projection que les images sources (EPSG:32629 dans notre exemple).

Découpage des images

4.2 ROI

Nous allons maintenant cliquer sur des objets identifiables (ou ROI pour “Regions of Interest”) sur l’image et enregistrer leur signature, on parle de classification.

Chaque ROI appartiendra à une classe principale (“Macroclass”) et à une classe secondaire (“Class”). Par exemple nous pouvons créer 5 classes principales :

  • 1 = Water
  • 2 = Built-up
  • 3 = Vegetation
  • 4 = Bare soil
  • 5 = Burned

Pour enregistrer un ROI, nous utilisons l’icône Découpage des images et nous cliquons sur l’élément de l’image repéré. Ensuite nous indiquons l’identifiant de la classe principale et de la classe secondaire dans le “dock SCP”, rubrique “ROI Creation” et nous validons par un clic sur le bouton Découpage des images.

Découpage des images

Pour une classification complète, cette opération serait à répéter pour chaque couleur visible de l’image… Mais ce qui nous intéresse ici sont les zones brulées. La classification sera donc rapide et au final seule la classe principale “Burned” nous sera utile.

Note.png NOTE : L’extension “QuickMapServices” de QGIS permet d’afficher un fond de plan OSM dans QGIS, cela s’avère très utile pour identifier un objet sur les images.
Note-tip.png ASTUCE : Un outil de SCP très pratique également génère un aperçu dans une zone limitée de la classification que l’on obtiendra à partir des ROI actuellement enregistrés.
Il faut d’abord choisir l’algorithme (“Spectral Angle Mapping”) dans le “dock SCP”, rubrique “Classification algorithm” puis cliquer sur l’icône Découpage des images et enfin quelque part sur l’image.

4.3 Classification finale

Une fois satisfait de ses ROI et des aperçus générés par l’outil Découpage des images, il est temps de générer la classification sur l’ensemble des images.

Puisque dans notre exemple c’est la classe principale “Burned” qui nous intéresse, il n’est pas utile de générer une classification reprenant toutes les classes secondaires. Il faut donc cocher “use MC ID” dans le “dock SCP”, rubrique “Classification algorithm”.

4.3.1 Génération de la classification

Pour générer la classification, nous nous rendons dans le “dock SCP”, rubrique “Classification output” et exécutons le traitement. Attention, beaucoup de mémoire RAM sera nécessaire.

Une image TIF reprenant la couleur définie de chaque classe principale est alors générée :

Découpage des images

On distingue bien la zone brulée en rouge, la végétation en vert ou les fleuves en bleu. Évidemment la qualité de cette image dépendra directement de la qualité et de la quantité des ROI créés. Ainsi, pour obtenir cette image, nous n’avons créé que 14 ROI en quelques minutes de travail…

4.3.2 Nettoyage des pixels isolés

Si l’on zoome sur l’image générée précédemment, on se rend compte que beaucoup de petits blocs de pixels parasitent notre image :

Découpage des images

L’outil “Classification sieve” de l’onglet “Post processing” de SCP va nous permettre de corriger cela en diluant ces groupes de pixels erratiques dans leurs voisins. Voici le résultat obtenu avec une taille maximale de 512 pixels pour ces groupes :

Découpage des images

C’est beaucoup plus propre et cela va nous permettre de vectoriser plus facilement cette image.

5 Vectorisation

Le but de cet exemple, rappelons-le, est d’obtenir le ou les polygones d’emprise des feux de forêts survenus au Portugal en juin 2017. La dernière phase est donc de vectoriser notre image, c’est à dire de la transformer en vecteurs.

5.1 Isolation de la classe “Burned”

Tout d’abord nous allons dissoudre toutes les classes principales (excepté “Burned) avec une valeur unique de 0 et remplacer la valeur 5 de la classe principale”Burned" par 255.

Nous utiliserons l’outil “Reclassification” de l’onglet “Post processing” de SCP à cette fin :

Découpage des images

On obtient une image en noir et blanc affichant les zones brulées en blanc :

Découpage des images

5.2 Nettoyage

Vous avez certainement remarqué quelques zones blanches parasites sur l’image précédente. Peut-être que nous aurions pu augmenter la taille maximale lors de la “Classification sieve”. Une autre solution est de passer à la phase suivante (vectorisation) et de supprimer ensuite les polygones qui seront générés directement depuis QGIS.

5.3 Vectorisation

Nous pouvons finalement vectoriser notre image de classification grâce à l’outil “Classification to vector” de l’onglet “Post processing” de SCP.

Le résultat semble satisfaisant, ce qui se vérifie si nous superposons le vecteur généré (ici en rouge) à la bande B08 (NIR) de Sentinel-2 (en gris) :

Découpage des images

5.4 Téléchargement

Si le SHP généré dans cet exemple vous intéresse, vous pouvez le télécharger depuis le cloud de Geonov.

6 Conclusion

Cet exemple détaillé nous a permis de montrer qu’en travaillant uniquement avec des données et des logiciels libres (Images Sentinel-2, QGIS et SCP), il est possible de télé-détecter facilement des emprises au sol, comme celle d’un feu de forêt.

Les images Sentinel-2, dont la résolution est de 10 mètres, permettent de réaliser un travail précis.

Le manuel du plugin ‘Semi-Automatic Classification’ est très complet et fourmille d’exemples. Nous vous renvoyons donc à ce document pour améliorer votre télédétection et utiliser des fonctions plus avancées.