R栅格:以像元值为条件的范围

Posted

技术标签:

【中文标题】R栅格:以像元值为条件的范围【英文标题】:R raster: extent conditional on cell value 【发布时间】:2018-07-08 05:44:58 【问题描述】:

我想根据某些像元值获得栅格图层的范围。考虑以下示例:

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

到目前为止,我的方法是将所有值 != 100 替换为 NA - 正如相关问题中所建议的那样。考虑到栅格对象的整体大小,这一步会花费大量时间,并且在我无论如何都想crop 的区域中投入大量计算能力。

有谁知道如何以某个像素值为条件获得extent,而无需事先重新分类整个对象?

【问题讨论】:

【参考方案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)

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

【讨论】:

以上是关于R栅格:以像元值为条件的范围的主要内容,如果未能解决你的问题,请参考以下文章

GlobalMapper精品教程029:栅格重分类案例详解

ArcGIS实验教程——实验四十三:ArcGIS栅格重分类(Reclass)案例详解

ArcGIS实验教程——实验四十三:ArcGIS栅格重分类(Reclass)案例详解

ArcGIS实验教程——实验四十三:ArcGIS栅格重分类(Reclass)案例详解

arcgis叠加的优先级

Python遥感图像处理应用篇(二十九):遥感图像拉伸处理