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

Calculate area for different land cover classes in a raster in R

如何获得土地覆盖的总面积 类 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, however it requires creating new raster layers for each value to be analyzed. I would prefer rather not to do so since my original raster contains lots of different values and is very large. A similar approach is presented here上提供了一个解决方案,但它仅适用于小区域。

您可以对按 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