在GIS中计算R中的区域统计

时间:2018-04-20 08:04:47

标签: r raster

我在一个文件夹中有多个栅格。我需要在多边形形状文件中提取每个栅格的平均值(有2500个多边形)。

我遇到了两个函数zonalextract。它说提取物也可以用于点,线和多边形。这是唯一的区别吗? (是/否预期)

如何从这些多个栅格中提取均值,并根据这些提取的平均值的文件名指定不同的列名?

编辑::

我在某个地方找到了一个代码并实现了它。但这是永远的,没有任何进展。

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)

1 个答案:

答案 0 :(得分:2)

您不需要循环(在每次迭代时重复相同的操作!)。

应该是这样的:

library(raster)

ff <- list.files("my_path", pattern = "\\.tif$", full=TRUE)
s <- stack(ff)

poly <- shapefile("my_path/supplimentY.shp")

ex <- extract(s, poly, fun='mean', na.rm=TRUE, df=TRUE, weights = TRUE)