1.2.2 Structure du répértoire
Les outils R dépendent d’une certaine structure des fichiers. Le répértoire de base SNSF_Togo
est structuré comme suivant:
SNSF_Togo
=========
├── data # Données de base externes ####################
├── GADM # :: frontières administratives
├── Landsat # :: images satellitaires
├── SRTM # :: données topographiques
└── Worldclim # :: données climatiques
└── SNSF_v1.0_20200106 # Répértoire SNSF v1.0 ########################
├── .Rprofile #:: Script R de initialisation
├── 01_SSTS # SYSTÈME DE SURVEILLANCE TERRESTRE =========
├── 01_data #:: images et autres données pré-traités --
└── 02_BdD #:: base de données SSTS ------------------
├── 02_IFN # INVENTAIRE FORESTIER NATIONAL =============
└── 01_IFN-1 #:: données d'inventaire IFN-1 ------------
├── 03_NRF-MRV # NIVEAU DE REFERENCE / MRV ================
├── 01_MCF #:: Modification Couvert Forestier --------
├── 02_AGB #:: cartographie biomasse -----------------
└── 03_report #:: rapport NRF/MRV -----------------------
├── 04_Manuel # CETTE DOCUMENTATION DU SNSF =============
└── docs #:: site web manuel de référence
└── SNSF_v1.x # Répértoire SNSF version actualisé ###########
├── ...
└── ...
La structure du répertoire est définit dans le script R .Rprofile et peut être ajousté.
C’est seulement les répétoires src
et manual
qui sont mis à diposition dans le dépôt GitHub. Les autres répétoires et données doivent être installés manuellement.
1.2.3 Création d’un nouveau projet
Pour la création d’un nouveau projet avec le code le plus actuel, on clone le dépôt du projet sur GitHub par la commande git clone --single-branch https://github.com/ogardi/NERF-Togo.git NOM-REPERTOIRE
. L’installation d’une version spécifique peut être fait avec git clone -b VERSION --single-branch https://github.com/ogardi/NERF-Togo.git NOM-REPERTOIRE
.
En travaillant avec RStudio, le plus facile est de créer directement un projet RStudio au départ due dépôt GitHub (File > New Project ... > Version Control > Git
) avec les mêmes paramètre que l’installation directe en haut.
Dans une prochaine étape, les données doivent être rendues disponibles, soit par une nouvelle acquisition, soit par une copie des répertoires existants.
- S’il n’est pas encore disponible, le répertoire
../data/
doit être créé et les données de base correspondantes doivent être fournies. - Dans le répertoire
./01_SSTS/02_BdD/
, le réseau d’échantillonnage ainsi que les données d’entraînement et de validation doivent être stockées. - En outre, les données d’inventaire doivent être stockées dans le répertoire
./02_IFN/
.
1.2.4 Définition des variables
Le traitement des images ainsi que les différentes analyses se font via des R-Scripts. Les variables et les fonctions utilisées dans les différents scripts sont définit dans le fichier .Rprofile
, qui est automatiquement chargé au démarrage de R. Si le processus de chargement a réussi, vous pouvez voir un message de bienvenue suivant sur la console R.
Si aucun message n’apparaît, assurez-vous que a) R est lancé dans le répertoire et b) qu’aucun message d’erreur ne se produit. Les messages d’erreur possibles sont des paquets manquants (les paquets correspondants doivent être installés en premier) ou le fait de ne pas trouver les limites administratives de GADM dans ../data/GADM
(doivent également être installés en premier).
Si nécessaire les variables sont ajustées et R est redémarré. Notamment les informations sur la période analysée YEARS.ALL
et les années à prendre en compte pour les différentes évaluations YEARS.JNT
, YEARS.VAL
et YEARS.REF
.
Script R: .Rprofile
###############################################################################
# .Rprofile: Préparer l'environnement (libraries, variables)
# -----------------------------------------------------------------------------
# Bern University of Applied Sciences
# Oliver Gardi, <oliver.gardi@bfh.ch>
# 13 Mai 2020
# Charger libraries ==========================================================
library("sp") # Classes et méthodes pour les données spatiales
library("rgdal") # Geospatial Data Abstraction Library
library("raster") # Analyse et modélisation des données géographiques
library("randomForest") # Algorithme de classification et régression
library("caret") # Outils pour classification et régression
library("openxlsx") # Lire et écrire des fichiers Excel (xlsx)
library("dplyr") # Fonctions pour manipuler des données
library("tidyr") # Fonctions pour reorganiser des données
library("ggplot2") # Production des figures
library("RColorBrewer") # palettes de couleurs
library("foreach") # Faire des calcules en parallèle ...
library("doParallel") # ... sur plusieurs processeurs
library("knitr") # pour la documentation html
# Créer un environnement caché ===============================================
.snsf = new.env()
# Années / Périodes -----------------------------
.snsf$YEARS.ALL <- 1985:2019 # - tous
.snsf$YEARS.JNT <- c(1987, 2003, 2005, 2007, 2015, 2017, 2018) # - conjointes
.snsf$YEARS.REF <- c(1987, 2003, 2015, 2018) # - référence
.snsf$YEARS.NRF <- c( 2003, 2015, 2018) # - NRF
# Répertoires -----------------------------------
.snsf$DIR.RAW.DAT <- "../data"
.snsf$DIR.SST <- "./01_SSTS"
.snsf$DIR.SST.DAT <- paste0(.snsf$DIR.SST, "/01_data")
.snsf$DIR.SST.DAT.LST <- paste0(.snsf$DIR.SST.DAT, "/Landsat")
.snsf$DIR.SST.DAT.WC2 <- paste0(.snsf$DIR.SST.DAT, "/Worldclim")
.snsf$DIR.SST.BDD <- paste0(.snsf$DIR.SST, "/02_BdD")
.snsf$DIR.SST.BDD.GRD <- paste0(.snsf$DIR.SST.BDD, "/01_reseau-SSTS")
.snsf$DIR.SST.BDD.TPS <- paste0(.snsf$DIR.SST.BDD, "/02_train-plots")
.snsf$DIR.SST.BDD.VPS <- paste0(.snsf$DIR.SST.BDD, "/03_val-plots")
.snsf$DIR.IFN <- "./02_IFN"
.snsf$DIR.IFN.DAT <- paste0(.snsf$DIR.IFN, "/01_field-data")
.snsf$DIR.MRV <- "./03_NRF-MRV"
.snsf$DIR.MRV.MCF <- paste0(.snsf$DIR.MRV, "/01_MCF")
.snsf$DIR.MRV.MCF.REF <- paste0(.snsf$DIR.MRV.MCF, "/01_ref-maps")
.snsf$DIR.MRV.MCF.RAW <- paste0(.snsf$DIR.MRV.MCF, "/02_raw-maps")
.snsf$DIR.MRV.MCF.CLN <- paste0(.snsf$DIR.MRV.MCF, "/03_cln-maps")
.snsf$DIR.MRV.MCF.VAL <- paste0(.snsf$DIR.MRV.MCF, "/04_validation")
.snsf$DIR.MRV.AGB <- paste0(.snsf$DIR.MRV, "/02_AGB")
.snsf$DIR.MRV.AGB.REF <- paste0(.snsf$DIR.MRV.AGB, "/01_ref-maps")
.snsf$DIR.MRV.AGB.RES <- paste0(.snsf$DIR.MRV.AGB, "/02_results")
# Système de référence des coordonnées ----------
.snsf$UTM.30 <- crs("+proj=utm +zone=30 +datum=WGS84
+units=m +no_defs +ellps=WGS84 +towgs84=0,0,0")
.snsf$UTM.31 <- crs("+proj=utm +zone=31 +datum=WGS84
+units=m +no_defs +ellps=WGS84 +towgs84=0,0,0")
# Domaine d'intérêt ----------------------------
.snsf$TGO <- spTransform(
readOGR(paste0(.snsf$DIR.RAW.DAT, "/GADM/gadm36_TGO_0.shp")),
.snsf$UTM.31
)
snsf$TGO.REG <- spTransform(
readOGR(paste0(.snsf$DIR.RAW.DAT, "/GADM/gadm36_TGO_1.shp")),
.snsf$UTM.31
)
.snsf$TGO.EXT <- extent(151155, 373005, 670665, 1238175) # xmin, xmax, ymin, ymax
# Noms des couches de données -------------------
.snsf$SST.LSBANDS <- c("B", "G", "R", "NIR", "SWIR1", "SWIR2",
"evi", "msavi", "nbr", "nbr2", "ndmi", "ndvi", "savi")
.snsf$SST.BIOCLIM <- paste0("BIO", 1:19)
# Codes pour les classes ------------------------
.snsf$NONFOR <- 0 # non-forêt
.snsf$PREGEN <- 1 # régénération potentielle
.snsf$REGEN <- 2 # régénération
.snsf$FOREST <- 3 # forêt / forêt initiale
# Divers ----------------------------------------
# Processeurs disponibles pour le calcul parallèle
.snsf$CORES <- detectCores()
# Semence pour le générateur de nombres aléatoires
.snsf$RSEED <- 20191114
# Attacher l'environnement
attach(.snsf)
# Message de bienvenue =======================================================
message("
=> chargé librairies et variables définit en .Rprofile
.oPYo. o o .oPYo. ooooo ooooo
8 8b 8 8 8 8
`Yooo. 8`b 8 `Yooo. o8oo 8 .oPYo. .oPYo. .oPYo.
`8 8 `b 8 `8 8 8 8 8 8 8 8 8
8 8 `b8 8 8 8 8 8 8 8 8 8
`YooP' 8 `8 `YooP' 8 8 `YooP' `YooP8 `YooP'
:.....:..:::..:.....::..::::::::..:::.....::....8 :.....:
:::::::::::::::::::::::::::::::::::::::::::::ooP'.:::::::
:::::::::::::::::::::::::::::::::::::::::::::...:::::::::
\n",
date(),
"\n"
)