计算R中栅格中不同土地覆盖等级的面积

时间:2017-04-26 09:05:10

标签: r spatial raster area geo

如果给出以下示例,我如何获得土地覆盖等级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 <- area(r[getValues(r)==1])这样的某些方法也不起作用a <- area(r[r==1])

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

1 个答案:

答案 0 :(得分:2)

您可以在由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