我在“县”目录中有120个县shapefile。我想使用R读取每个shapefile,并使用单个栅格图层“ NOAA_normal_crop”对每个shapefile执行区域统计(均值)。
我能够创建一个脚本,以列表形式读取所有shapefile:
library(rgdal) library(raster) library(sf) library(maptools) NOAA_normal <- raster("C:/path/to/raster/noaa_normal.tif") input_path <- "C:/path/to/Counties" files <- list.files(dir, pattern="[.]shp$", full.names=TRUE) allShapes <- lapply(files, readOGR)
但是我仍然需要创建一个循环,遍历每个单独的shapefile并执行区域统计。下面的循环是我尝试过的,但它仅给我一个值,而我想要每个多边形的平均值。
for (i in 1:length(allShapes)){ ex <- extract(NOAA_normal_crop, allShapes[[i]], fun=mean, na.rm=TRUE, df=TRUE) }
编辑:我也尝试过再次使用lapply,但这也不起作用。
lapply(allShapes, extract(NOAA_normal_crop, allShapes, fun=mean, na.rm=TRUE, df=TRUE)) # Error in round(y) : non-numeric argument to mathematical function
感谢您提供任何建议。
我在“县”目录中有120个县shapefile。我想使用R读取每个shapefile,并使用单个栅格图层“ NOAA_normal_crop ....
我相信您的循环是正确的。但是,它不是列表或数组,因此每次迭代都会覆盖该值。你应该试试:
ex = vector()
for (i in 1:length(allShapes)){
ex[i] <- extract(NOAA_normal_crop, allShapes[[i]], fun=mean, na.rm=TRUE, df=TRUE)
}