我有一个文件夹中有多个栅格图层。我需要从一个包含2500个多边形的矢量文件中提取每个栅格图层的平均值。
我找到了两个函数
如何从这些多个栅格图层中提取平均值,并根据它们的文件名指定不同的列名称?
编辑:
我在某个地方找到了一段代码并实现了它。但是它一直没有进展,而且非常缓慢。
我找到了两个函数
zonal
和extract
。它说extract
可以用于点、线和面。这是唯一的区别吗?(期望回答:是/否)如何从这些多个栅格图层中提取平均值,并根据它们的文件名指定不同的列名称?
编辑:
我在某个地方找到了一段代码并实现了它。但是它一直没有进展,而且非常缓慢。
grids <- list.files("my_path", pattern = "*.tif$")
#check the number of files in the raster list (grids)
length <- length(grids)
#read-in the polygon shapefile
poly <- readShapePoly("my_path/supplimentY.shp")
#create a raster stack
s <- stack(paste0("my_path/", grids))
#extract raster cell count (sum) within each polygon area (poly)
for (i in 1:length(grids)){
ex <- extract(s, poly, fun='mean', na.rm=TRUE, df=TRUE, weights = TRUE)
# the code doesnot progress from here onwards.
# i checked it by adding this line:: print(i)
}
#write to a data frame
dfr <- data.frame(ex)
exactextract
进行更快速的计算 https://github.com/isciences/exactextractr - atsyplenkovterra::zonal
或者terra::extract
。 - Robert Hijmans