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

使用leastcostpath包create_lcp生成正确最小成本路径遇阻求助

使用leastcostpath包的create_lcp生成最小成本路径时的问题

我在使用R语言leastcostpath包的create_lcp命令生成正确的最小成本路径时遇到了困难,以下是可复现的最小示例:

当我不通过gdistance包创建transition图层及执行geoCorrection命令,转而使用leastcostpath包的create_cs命令从初始成本栅格生成conductanceMatrix对象时,出现了两个问题:

  • create_cs命令修改了栅格中的原始成本结构
  • 即便基于修改后的成本结构,生成的最小成本路径仍未实现成本最小化

我已查阅leastcostpath包手册及create_cs函数源码,但仍未找到问题成因。

library(sf)
library(terra)
library(leastcostpath)

# 创建带投影坐标的测试成本栅格
nr <- 5
nc <- 3
m <- matrix(
  data = c(1,NA,NA,
           1,1,NA,
           2,3,1,
           1,1,1,
           NA,1,NA),
  nrow = nr,
  ncol = nc,
  byrow = T)

# 构建成本栅格
x0 <- c(1510969,4344218)
cost.r <- rast(
  m,
  extent = ext(c(x0[1],x0[1]+nc,x0[2],x0[2]+nr)),
  crs = "EPSG:3003"
)

# 通过create_cs生成传导矩阵
conductanceMatrix <- create_cs(
  x = cost.r,
  neighbours = 8)
plot(conductanceMatrix)

# 获取栅格单元对应的多边形
pgn.inn <- as.polygons(cost.r,
                       aggregate = F,
                       na.rm = T,
                       na.all = T)
pgn.inn <- st_as_sf(pgn.inn)

# 计算单元质心
ctr.inn <- st_centroid(pgn.inn)

# 选择两个端点
endpts <- ctr.inn[c(1,4) ,1]

# 生成最小成本路径
lcp <- create_lcp(conductanceMatrix,
                  endpts[1,],
                  endpts[2,],
                  cost_distance = T)

# 绘图展示
plot(
  conductanceMatrix,
  colNA = NA,
  axes = F,
  box = F,
  legend = T
)
plot(st_as_sfc(pgn.inn), border = "white", lwd = 0.2, add = T)
plot(
  st_as_sfc(lcp),
  col = "black",
  lwd = 2,
  axes = F,
  add = T
)
plot(
  st_as_sfc(endpts),
  pch = 16,
  cex = 1,
  col = "black",
  axes = F,
  add = T
)

示意图

内容的提问来源于stack exchange,提问作者Laura Roich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:07:54