计算 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
如何获得土地覆盖的总面积 类 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