You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用terra::distance实现raster::gridDistance的origin与omit参数功能

terra 等效实现 raster::gridDistance 的方法

terra 包没有和 raster::gridDistance 完全参数对应的内置函数,你可以通过栅格预处理+配套函数的方式实现需求,对应示例的复现代码如下:

library(terra)

# 构造和示例完全一致的经纬度栅格
r <- rast(ncol=10, nrow=10, vals=1)
r[48] <- 2     # 起点区域值为2
r[66:68] <- 3  # 不可穿越的障碍物值为3

# ----------------------
# 通用实现(兼容所有terra版本)
# ----------------------
# 步骤1:提取起点图层,仅保留起点位置为有效值,其余设为NA
origin_r <- r
origin_r[origin_r != 2] <- NA

# 步骤2:构造成本栅格,可通行区域成本为1,障碍物设为NA
cost_r <- r
cost_r[cost_r == 3] <- NA
cost_r[!is.na(cost_r)] <- 1

# 步骤3:计算成本距离,逻辑和gridDistance完全一致
d <- costDist(x = origin_r, cost = cost_r)

# 可视化验证结果
plot(d)

如果使用1.5-12及以上版本的terra,distance 函数已经支持自动绕开NA区域计算,代码可以简化为:

# 仅支持terra 1.5-12及以上版本
origin_r <- r
# 仅保留起点为有效值,障碍物和其他区域先设为NA
origin_r[origin_r != 2] <- NA
# 把障碍物区域同步设为栅格掩码,计算距离时自动绕开
d <- distance(origin_r, mask = r != 3)

内容的提问来源于stack exchange,提问作者hugh-allan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:21:01