Accélerer l'extraction des données dans un gros RasterStack

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

David Devreker
Messages : 153
Enregistré le : 17 Oct 2011, 10:08

Accélerer l'extraction des données dans un gros RasterStack

Messagepar David Devreker » 22 Mar 2017, 10:04

Bonjour à tous,

Voici ma question : j'effectue des calcules sur des RasterStack par maille et j'aimerais savoir qu'elle est la façon la plus rapide (temps CPU) d'y procéder.

Dans le détail : j'ai 1250 couches rasters sous forme de GeoTif qui correspondent à des images satellites de données chlorophylle journalière sur 6 ans. J'aimerais calculer des statistiques de base (médiane, moyenne ou quartile) synthétisant ses 1250 couches par maille sachant qu'il y a de ~250 mailles (250 carrés de 1/20 de degré de coté). Ces mailles sont stocké dans un shapefile.

Voici mon code :

Code : Tout sélectionner

studyarea <- readShapePoly("c://**.shp", proj4string=sp::CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"))

raster.stack <- stack(fich.tif)  #stockage des rasters en "liste", fich.tif contient les chemins des 1250 GeoTif

val <- extract(raster.stack, studyarea) #extrait les données de chaque raster contenu dans raster.stack en fonction du studyarea : on obtient une liste de liste (nombre de raster * nombre de maille * nombre de données par maille)

val <- lapply(val, function(x) {ifelse((x<=0)=="FALSE", x, x<-NA)}) # on remplace les valeurs négative (nuage et continent) pour qu'elles ne soient pas prise en compt dans les calcules

climato_maille <- lapply(val, function(x){ quantile(x, probs=c(0.9), na.rm=T) } ) #calcul la fonction par liste de données
data.cimato.maille <- as.numeric(unlist(climato_maille))
FID_SG_gri <- as.numeric(studyarea$FID_SG_gri)
data.ref.climato.maille <- data.frame(FID_SG_gri,data.cimato.maille)
Evaluation_MMN_Chla <- merge(studyarea,data.ref.climato.maille , by="FID_SG_gri") # on rajoute les statistiques calculés au shapefile
writeSpatialShape(Evaluation_MMN_Chla, fn=paste0("**.shp"))


Le passage "val <- extract(raster.stack, studyarea)" prend énormément de temps, pensez-vous qu'il existe une méthode plus rapide pour extraire les données par maille et les traiter ?

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité