vignettes/biodivMapR_18.Rmd
biodivMapR_18.Rmd
Ce tutoriel accompagne la séquence 6 de la section Cartographie de la biodiversité par imagerie satellite du module de formation COPERNICUS et biodiversité de la Copernicus Academy.
Il permet d’appliquer biodivMapR aux données de réflectance Sentinel-2 précédemment téléchargées et pré-traitées.
Plusieurs modalites d’utilisation sont possibles avec biodivMapR. Ces modalités d’utilisation diffèrent dans le type de données à partir duquel son calculées les espèces spectrales:
composantes sélectionnées à l’issue d’une transformation spectrale (PCA, SPCA, MNF…). C’est la modalité décrite dans les publications de référence présentant la méthode. La transformation spectrale est non supervisée et peut permettre de produire des composantes moins impactees par le bruit que les bandes spectrales originales. Cependant, elle nécessite une étape de selection de composantes par l’utilisateur. De plus, étant guidée par les données, elle ne permet pas d’assurer une reproductibilité des résultats si l’emprise d’analyse est modifiée.
Selection d’indices spectraux jugés pertinents par l’utilisateur. Cette modalité permet de produire des indicateurs de diversité à partir d’informations potentiellement plus proches de traits de végétation pertinents (cf. Schneider et al., 2017). Potentiellement moins demandeuse en terme de temps de calcul que les autres modalités, elle permet de tester des hypothèses relatives à l’importance d’indicateurs associés à des propriétés de végétation.
Selection de variables biophysiques jugées pertinentes par
l’utilisateur. Les méthodes
d’inversion de modèles de transfert radiatif permetttent d’estimer
un certain nombre de variables biophysiques de la vegetation (structure
de canopee, chimie foliaire…). Il est ainsi possible d’utiliser ces
variables biophysiques comme source d’information avec
biodivMapR
. De la même manière qu’avec les indices
spectraux, la sélection des variables biophysiques pertinentes necessite
de prendre en compte i) les caracteristiques spectrales du capteur (la
variable biophysique est-elle accessible ?), et ii) la pertinence des
variables comme source d’information relative a la cartographie de la
biodiversité.
Nous allons ici illustrer les deux premieres approches, basées sur une transformation spectrale des données, et sur la sélection d’indices spectraux.
biodivMapR
Les variables définies lors du précédent tutoriel sont rappelées ici.
library(biodivMapR)
Input_Image_File <- Refl_path
Input_Mask_File <- cloudmasks$BinaryMask
Output_Dir <- file.path(result_path,'biodivMapR')
# Apply normalization with continuum removal
Continuum_Removal <- TRUE
# spectral transformation with standardized PCA
TypePCA <- 'SPCA'
# number of clusters (spectral species)
nbclusters <- 50
# window size: RS diversity will be computed for this window size over the raster
window_size <- 10
# computational parameters
nbCPU <- 4
MaxRAM <- 0.2
Cette étape permet de réaliser un filtre pour eliminer les pixels ennuagés, ombragés ou non végétalisés. C’est un filtre assez grossier car basé sur des règles de décision très simplifiées:
le seuillage du NDVI permet d’éliminer les pixels non végétalisés.
le seuillage dans le domaine visible correspondant au bleu permet d’éliminer les pixels présentant une réflectance particulièrement forte pour de la végétation, laissant supposer la présence de brumes ou de nuages non identifiés par le masque nuage produit par la méthode de correction atmosphérique.
le seuillage dans le domaine proche infrarouge permet d’éliminer les pixels présentant une réflectance particulièrement faible pour de la végétation, laissant supposer que le pixel est situé à l’ombre.
A l’issue de cette étape, le masque défini par
Input_Mask_File
est mis à jour.
# Define levels for radiometric filtering
NDVI_Thresh <- 0.8
Blue_Thresh <- 500
NIR_Thresh <- 1500
Input_Mask_File <- biodivMapR::perform_radiometric_filtering(Image_Path = Input_Image_File,
Mask_Path = Input_Mask_File,
Output_Dir = Output_Dir,
TypePCA = TypePCA,
NDVI_Thresh = NDVI_Thresh,
Blue_Thresh = Blue_Thresh,
NIR_Thresh = NIR_Thresh)
une ACP est appliquée sur les données de réflectance normalisées: normalisation spectrale par continuum removal, puis normalisation de la réflectance entre 0 et 1 pour chaque bande spectrale.
A l’issue de cette transformation, un fichier raster est crée, et l’utilisateur doit alors sélectionner les bandes spectrales ‘pertinentes’. La pertinence de ces bandes doit s’appuyer sur une analyse des motifs presents dans les composantes, afin d’eliminer celles presentant des artefacts ou du bruit, et de selectionner uniquement celles faisant apparaitre des motifs d’interet (contrastes entre types de végétation, entre espèces…).
PCA_Output <- biodivMapR::perform_PCA(Input_Image_File = Input_Image_File,
Input_Mask_File = Input_Mask_File,
Output_Dir = Output_Dir,
TypePCA = TypePCA,
nbCPU = nbCPU,
MaxRAM = MaxRAM,
Continuum_Removal = Continuum_Removal)
# path for the updated mask
Input_Mask_File <- PCA_Output$MaskPath
# Select components from the PCA/SPCA/MNF raster
# Sel_PC = path of the file where selected components are stored
Sel_PC <- biodivMapR::select_PCA_components(Input_Image_File = Input_Image_File,
Output_Dir = Output_Dir,
PCA_Files = PCA_Output$PCA_Files,
TypePCA = PCA_Output$TypePCA,
File_Open = TRUE)
Une fois les composantes sélectionnées, la carte d’espèces spectrales peut être calculée. Ces espèces spectrales sont définies à l’aide d’un algorithme de k-means clustering.
Kmeans_info <- biodivMapR::map_spectral_species(Input_Image_File = Input_Image_File,
Input_Mask_File = PCA_Output$MaskPath,
Output_Dir = Output_Dir,
SpectralSpace_Output = PCA_Output,
nbclusters = nbclusters,
nbCPU = nbCPU, MaxRAM = MaxRAM)
Une carte de diversité (ici correspondant à l’indice de Shannon) peut alors être calculée.
Index_Alpha <- 'Shannon'
biodivMapR::map_alpha_div(Input_Image_File = Input_Image_File,
Output_Dir = Output_Dir,
TypePCA = TypePCA,
window_size = window_size,
nbCPU = nbCPU,
MaxRAM = MaxRAM,
Index_Alpha = Index_Alpha,
nbclusters = nbclusters)
De la même manière, une carte de diversité est aussi calculée.
biodivMapR::map_beta_div(Input_Image_File = Input_Image_File,
Output_Dir = Output_Dir,
TypePCA = TypePCA,
window_size = window_size,
nbCPU = nbCPU,
MaxRAM = MaxRAM,
nbclusters = nbclusters)
Un tutoriel dédié à l’application de biodivMapR sur des indices spectraux issus de données Sentinel-2 est également disponible. Ce tutoriel décrit pas à pas comment calculer ces indices spectraux, puis les utiliser avec les mêmes fonctions que précédemment, en evitant toutefois la phase de transformation spectrale et la sélection de composantes. Le travail de sélection de variables pertinentes est donc attendu en amont de la part de l’utilisateur, ou peut faire l’objet de tests et de selection d’indices si des données de terrain sont disponibles.