使用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
相关产品推荐
相关产品推荐

