【问题标题】:r raster statistics per grid cell zoner 每个网格单元区域的栅格统计数据
【发布时间】:2019-12-16 16:44:00
【问题描述】:

我想计算格线内区域中的网格单元统计数据(见图表)。

获取显示的网格单元的单元统计并不困难,但是如何为所有网格单元完成呢?

library(raster)

filename <- system.file("external/test.grd", package="raster")
r=raster(filename)

plot(r)
e=extent(180000,181000,330000,331000)
plot(e,add=T)
grid()

x=crop(r,e)
cellStats(x,mean)

【问题讨论】:

    标签: r raster


    【解决方案1】:

    您的可重现示例对我不起作用,因为我不确定为什么在您的原始情节不同时使用 r[r&gt;500]=1r[r&lt;=500]=NA?!另外,我不确定rx 是什么?!一种方法如下:

    library(raster)
    
    filename <- system.file("external/test.grd", package="raster")
    r=raster(filename)
    
    # r[r>500]=1
    # r[r<=500]=NA
    
    plot(r)
    xmin <- seq(178000, 181000, 1000)
    xmax <- seq(179000, 182000, 1000)
    ymin <- seq(329000, 333000, 1000)
    ymax <- seq(330000, 334000, 1000)
    
    zonal.mtx <- matrix(nrow=length(xmin), ncol=length(ymin))
    
    library(spatialEco)
    for (i in 1:length(xmin)){
      for (j in 1:length(ymin)){
        e=extent(xmin[i],xmax[i],ymin[j],ymax[j])
        plot(e,add=T)
        grid()
        p <- as(e, 'SpatialPolygons')  
        crs(p) <- crs(r)
    
        p$ID=j
        p <- SpatialPolygonsDataFrame(p,p@data) 
    
        zonal.mtx[i,j] <- zonal.stats(x=p, y=r, stat=sum, trace=TRUE, plot=TRUE)
        #print(zonal.mtx[i,j])
      }
    
    }
    

    注意:这会在计算区域统计数据时绘制数据的每个部分。我相信你已经知道你也可以定义你自己的函数在zonal.stats而不是summean等中使用。

    【讨论】:

    • 您是对的...但是您的示例按预期工作,谢谢!
    • 别担心,Henk,我还稍微编辑了帖子。
    • 是的,我查看了我不知道的 zonal.stats 函数。查看代码,它确实会裁剪。我最初的想法是对范围使用嵌套的 foreach 循环,并使用 raster::zonal 函数。
    • 我的坏@Henk,编辑了我的回复。我想你仍然可以使用foreach
    • 通过 raster::zonal 和 foreach 应该很容易做到,但我遇到了一个问题。我将提出一个新问题。
    猜你喜欢
    • 2020-11-12
    • 1970-01-01
    • 2019-10-02
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多