0

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

然而,到目前为止,我对如何做到这一点的搜索一直没有成功。我相信QGIS中的proximity()命令可以做到这一点,但是要使用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)

光栅

4

1 回答 1

1

raster::gridDistance 在必须通过相邻单元中心时为您提供最短距离

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

在此处输入图像描述

否则,最短路径距离可以计算为

landna <- reclassify(land, cbind(0,NA))
d <- distance(landna)

并查看gdistance软件包以获取更多距离计算。

于 2019-01-24T03:54:12.333 回答