实际上,我尝试使用 SpatialPolygonsDataFrame 计算栅格的主要像素值。这是我发现的一些代码,可能会导致正确的方向:
library(raster)
# Create interger class raster
r <- raster(ncol=36, nrow=18)
r[] <- round(runif(ncell(r),1,10),digits=0)
r[]<-as.integer(r[])
# Create two polygons
cds1 <- rbind(c(-180,-20), c(-160,5), c(-60, 0), c(-160,-60), c(-180,-20))
cds2 <- rbind(c(80,0), c(100,60), c(120,0), c(120,-55), c(80,0))
polys <- SpatialPolygonsDataFrame(SpatialPolygons(list(Polygons(list(Polygon(cds1)), 1),
Polygons(list(Polygon(cds2)),2))),data.frame(ID=c(1,2)))
# Extract raster values to polygons
( v <- extract(r, polys) )
# Get class counts for each polygon
v.counts <-lapply(v,table)
到目前为止,一切都很好,但我真的很难提取计数最高的列的列名称。
我尝试过类似的事情:
v.max<- lapply(v.counts,max)
但列信息会丢失。后:
v.max<- lapply(v.counts, max.col)
结果我只得到“1”。
如果有人能给我提示我做错了什么,我将不胜感激。还有另一种方法可以提取多边形中的主要像素值吗?