gpt4 book ai didi

r - 分区统计 R(栅格/多边形)

转载 作者:行者123 更新时间:2023-12-04 11:59:01 25 4
gpt4 key购买 nike

在 R 中,与包 'raster' 中的 'extract' 相比,计算包 'spatialEco' 的函数 'zonal.stats' 中的平均值存在偏差。对于这两种情况,我使用多边形作为区域字段,并使用栅格作为值。
下面是一个例子:

library(raster)
library(spatialEco)
library(sp)

#Create raster
ras <- raster(nrows=100, ncols=80, xmn=0, xmx=1000, ymn=0, ymx=800)
val <- runif(ncell(ras))
values(ras) <- val

#Create polygon within raster extent
xym <- cbind(runif(3,0,1000), runif(3,0,800))
p <- Polygons(list(Polygon(xym)),1)
sp <- SpatialPolygons(list(p))
spdf <- SpatialPolygonsDataFrame(sp, data=data.frame(1))

#z1 zonal statistics using "spatialECO"
z1 <- zonal.stats(spdf, ras, stats="mean")

#z2 zonal statistics using "raster"
z2 <- extract(ras, spdf, fun=mean)
z2和z1偏差的原因是什么?

最佳答案

每种算法都使用不同数量的像素来计算区域统计数据;因此,差异可能是由(z1高于z2)引起的。根据这个小例子,我会推断出 zonal.statsextract 限制更少.因此,可能 zonal.stats考虑落在多边形内的栅格的每个值;然而,extract只考虑中心位于多边形内的像素(检查函数的文档)。

# Create a function to count the number of pixels used to calculate the zonal stats
counter <- function(x, na.rm = T) {
length(x)
}

#z1 zonal statistics using "spatialECO"
z1 <- zonal.stats(spdf, ras, stats="counter")

#z2 zonal statistics using "raster"
z2 <- extract(ras, spdf, fun=counter)

关于r - 分区统计 R(栅格/多边形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63037975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com