Réponses:
Voici un exemple de code. Il est assez simple d'adapter ce code pour fonctionner en boucle pour traiter tous vos rasters. Si vos rasters partagent une étendue et une résolution communes, vous pouvez créer une pile de rasters et parcourir les bandes de la pile. Pour créer un vecteur contenant tous les rasters dans un répertoire, dans un format spécifique, vous pouvez utiliser "list.files" puis passer ce vecteur pour l'empiler.
Exemple:
rlist=list.files(getwd(), pattern="img$", full.names=TRUE)
r <- stack(rlist)
# Add required libraries
require(raster)
require(sp)
require(rgdal)
# Set working directory, raster, in and out shapefiles
setwd("C:/test")
inshp="MyPolys"
outshp="PolyMeans"
rdata <- "Year2012.img"
# Read polygon feature class shapefile
sdata <- readOGR(dsn=getwd(), layer=inshp)
# Read raster
r <- raster(rdata)
# Extract raster values to list object
r.vals <- extract(r, sdata)
# Use list apply to calculate mean for each polygon
r.mean <- lapply(r.vals, FUN=mean)
# Join mean values to polygon data
sdata@data <- data.frame(sdata@data, m2012=r.mean)
# Write results
writeOGR(sdata, getwd(), outshp, driver="ESRI Shapefile", check_exists=TRUE,
overwrite_layer=TRUE)
data.frame(sdata@data, m2012=r.mean)
fichier multipolygone: comment le polygone sait-il à quelle valeur attribuer?
Lire le fichier de formes dans une SpatialPolygonsDataFrame
( readOGR
fonction du package rgdal
)
Lire le raster dans un Raster
objet ( raster
fonction du package raster
)
Utilisez extract(raster, spdf)
pour obtenir les cellules de la grille sous chaque polygone. Ensuite, courez mean
dessus.
Répétez sur votre ensemble d'images raster ...