R - terra::distance() 相当于 raster::gridDistance(..., origin = x, omit = y)

R - terra::distance() equivalent of raster::gridDistance(..., origin = x, omit = y)

UPDATE - 这个问题与 terra 1.4-1 有关,现在已经过时 terra 1.5-12(或更早?)。


我正在寻找 terra 相当于 raster::gridDistance(..., origin = my_origin, omit = my_omit)

我在 terra::gridDistance 上发现了一个旧网页,来自 terra v0.2-8 here, but from what I can gather terra::distance is the current replacement for raster::gridDistance (list of terra's replacement functions here)。

但是,我不知道在 terra::distance 中实现 omit = my_omit(或等效)。从 documentation page 看来,任何非 NA 都被视为 origin,但没有提及 omit,也没有将 origin 更改为特定值的选项(与下面的 raster::gridDistance 示例不同)。

这是来自 raster::gridDistance 的示例:

library(raster)

# world lon/lat raster
r <- raster(ncol=10,nrow=10, vals=1)
r[48] <- 2     # this will be the origin
r[66:68] <- 3  # this will be the area that can't be traversed
plot(r)

d <- gridDistance(r,origin=2,omit=3) 
plot(d)

任何人都可以使用 terra::distance 重现此示例吗?

我可以使用 raster 做我需要做的事情,但我仍在学习如何正确处理空间栅格数据,并且正在努力学习新的 terra 包。

感谢@lovalery 在评论中指出这一点。

在最初的问题中我使用了 terra 1.4-1。截至 2022 年 1 月,terra 1.5-12 已发布(2022 年 1 月 13 日),它现在包含一个与 raster::gridDistance() 函数非常相似的 terra::gridDistance() 函数。

为了完整起见,这是来自 ?terra::gridDistance 的示例:

#world lon/lat raster
r <- rast(ncol=10,nrow=10, vals=1)
r[48] <- 2
r[66:68] <- 3
d <- gridDistance(r,origin=2,omit=3) 
plot(d)

#UTM small area
crs(r) <- "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"
d <- gridDistance(r,origin=2,omit=3) 
plot(d)