【问题标题】:Calculate area for different land cover classes in a raster in R计算R中栅格中不同土地覆盖类别的面积
【发布时间】:2017-09-23 14:07:39
【问题描述】:

在以下示例中,我如何获得我的土地覆盖等级 1、2、3、4、5 的总面积:

library("raster")
r <- raster(nrow=10, ncol=10)
r<-setValues(r,c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)))

一种方法可能是根据这些值对栅格进行子集化,但是 a &lt;- area(r[getValues(r)==1]) 之类的方法不起作用,a &lt;- area(r[r==1]) 也不起作用。

website 提供了一个解决方案,但是它需要为每个要分析的值创建新的栅格图层。我宁愿不这样做,因为我的原始栅格包含许多不同的值并且非常大。 here 提出了类似的方法,但它仅适用于小区域。

【问题讨论】:

    标签: r spatial raster area geo


    【解决方案1】:

    您可以在按 r 中的值分组的区域上使用基本函数 aggregate 并将它们相加。

    aggregate(getValues(area(r, weights=FALSE)), by=list(getValues(r)), sum)
      Group.1         x
    1       1  48166136
    2       2 126933351
    3       3 320336528
    

    【讨论】:

    • 这种方法在大面积映射时是否考虑到纬度分辨率的差异?
    • 我相信是的。您的示例代码的纬度坐标有些奇怪,但它确实为不同的网格框生成了不同的区域。
    • 是的。为此,我稍微编辑了我的示例代码以使其更加全面。如果您更改响应中的结果,将会很有帮助。谢谢。
    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2020-05-06
    • 2018-10-25
    • 2018-09-17
    • 2021-08-14
    • 2018-05-13
    相关资源
    最近更新 更多