从值1的每个像元到值0的每个像元的距离

时间:2019-01-23 21:08:17

标签: raster

我想算出从值1的栅格中的每个像元到值0的每个像元的距离(以像元数为单位)。理想情况下,输出将是另一个栅格,其中每个像元的值为距值为0的像元的最短距离。在原始栅格中为0的像元将假定值为0,因为从技术上讲,它们距离值为0的像元有0个像元。

但是,到目前为止,我对如何执行此操作的搜索均未成功。我相信QGIS中的接近性()命令可以做到这一点,但是要使用QGIS的r扩展(RQGIS)需要通过命令行下载多个项(SAGA,GRASS和QGIS),并且尝试安装时遇到了错误如果有人知道用R专门执行此操作的方法,那么SAGA会喜欢它。

这里是一个包含1和0的栅格,可以作为该问题的可重现示例:

library(raster)
#create raster and add 1's and 0's
land <- raster(matrix(0, 8, 10), xmn=408027.5, xmx=413027.5, ymn=4370000, 
ymx=4374000)
land[4:8, 2:5] <- 1
land[2:3, 8:9] <- 1
land[1,0:10] <- 1
land[is.na(land[])] <- 0
#plot the raster
plot(land)

raster

1 个答案:

答案 0 :(得分:1)

raster :: gridDistance可让您通过邻近的细胞中心时距离最短

g <- gridDistance(land, 1)
plot(g)

enter image description here

否则,可以使用

计算最短路径距离
landna <- reclassify(land, cbind(0,NA))
d <- distance(landna)

有关更多距离的计算,请参见gdistance包。