R栅格:以细胞值为条件的范围

时间:2018-01-29 13:48:50

标签: r coordinates raster geo r-raster

我想获得某些单元格值条件下的栅格图层的范围。请考虑以下示例:

raster1是一个大型栅格对象,填充的值介于1和1000之间。但是,我只想获得值为100的像素的extent。因为这个单元格的子集应该聚集在一起小区域,extent应该相当狭窄。一旦我知道该框的坐标,我就可以crop这个小区域。

到目前为止,我的方法是用相关问题中的建议替换所有值!= 100 NA。考虑到栅格对象的整体大小,此步骤需要花费大量时间并在我想要crop的区域中投入大量计算能力。

有没有人知道如何获得extent条件某个像素值,而不需要事先重新分类整个对象?

1 个答案:

答案 0 :(得分:1)

这是另一种方法

示例数据:

library(raster)
r <- raster(ncol=18,nrow=18)
values(r) <- 1
r[39:45] <- 100
r[113:115] <- 100
r[200] <- 100

“标准”方式:

x <- r == 100
s <- trim(x, values=FALSE) 

通过创建范围来替代路线:

xy <- rasterToPoints(r, function(x){ x ==100 })  
e <- extent(xy[,1:2])
e <- alignExtent(e, r, snap='out')
v <- crop(r, e)

无论哪种方式,都需要查看所有单元格,但至少您不需要创建另一个大型栅格。