每个值为 1 的像元到每个值为 0 的像元的距离
Distance from each cell of value 1 to each cell of value 0
我想计算出值 1 的栅格中每个像元到值 0 的每个像元的距离(以像元数表示)。理想情况下,输出将是另一个栅格,其中每个像元的值将是到值为 0 的像元的最短距离。原始栅格中为 0 的像元将假定值为 0,因为它们在技术上与值为 0 的像元相距 0 个像元。
但是,到目前为止,我对如何执行此操作的搜索没有成功。我相信 QGIS 中的 proximity() 命令可以做到这一点,但是要使用 QGIS (RQGIS) 的 r 扩展,需要通过命令行下载几个项目(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::gridDistance 为您提供必须经过相邻单元格中心时的最短距离
g <- gridDistance(land, 1)
plot(g)
否则,最短路径距离可以用
计算
landna <- reclassify(land, cbind(0,NA))
d <- distance(landna)
并查看 gdistance
包以获取更多距离计算。
我想计算出值 1 的栅格中每个像元到值 0 的每个像元的距离(以像元数表示)。理想情况下,输出将是另一个栅格,其中每个像元的值将是到值为 0 的像元的最短距离。原始栅格中为 0 的像元将假定值为 0,因为它们在技术上与值为 0 的像元相距 0 个像元。
但是,到目前为止,我对如何执行此操作的搜索没有成功。我相信 QGIS 中的 proximity() 命令可以做到这一点,但是要使用 QGIS (RQGIS) 的 r 扩展,需要通过命令行下载几个项目(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::gridDistance 为您提供必须经过相邻单元格中心时的最短距离
g <- gridDistance(land, 1)
plot(g)
否则,最短路径距离可以用
计算landna <- reclassify(land, cbind(0,NA))
d <- distance(landna)
并查看 gdistance
包以获取更多距离计算。