Gis 使用光栅对象时提取函数的替代方法

Gis 使用光栅对象时提取函数的替代方法,gis,raster,Gis,Raster,我想知道如何对另一个光栅类别的每个类别的光栅值求和。换句话说,在处理光栅对象时,是否存在函数提取的替代方法?多谢各位 # sample raster with categories cat_r<-raster(ncol=3,nrow=3, xmn=-10, xmx=10, ymn=-10, ymx=10) cat_r[]<-c(1,2,1,3,4,3,4,4,4 ) #4 categories: 1, 2, 3 and 4 #sample raster with pixel val

我想知道如何对另一个光栅类别的每个类别的光栅值求和。换句话说,在处理光栅对象时,是否存在函数提取的替代方法?多谢各位

# sample raster with categories
cat_r<-raster(ncol=3,nrow=3, xmn=-10, xmx=10, ymn=-10, ymx=10)
cat_r[]<-c(1,2,1,3,4,3,4,4,4 ) #4 categories: 1, 2, 3 and 4

#sample raster with pixel values 
val_r <-raster(ncol=3,nrow=3, xmn=-10, xmx=10, ymn=-10, ymx=10)
val_r[]<-c(1,0,1,5,2,5,2,2,2) 

#extract function doesn't work for 
extract(val_r, cat_r, fun=sum)

#I should find the following values: category 1: 2, cat 2: 0, cat 3: 10, cat 4: 8
您可以使用分区方法:

这相当于

s <- stack(cat_r, val_r)
v <- values(s)
tapply(v[,2], v[,1], sum)

# 1  2  3  4 
# 2  0 10  8 
s <- stack(cat_r, val_r)
v <- values(s)
tapply(v[,2], v[,1], sum)

# 1  2  3  4 
# 2  0 10  8