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

使用R Terra生成河网失败:河网存在不连通问题

使用R Terra替代QGIS PCRaster生成河网时的连通性问题

问题背景

我尝试用R的Terra包替代QGIS中的PCRaster工具生成河网,使用包自带的卢森堡DEM示例数据,调用flowAccumulation()和terrain("flowdir")函数后,得到的河网存在不连通的问题。

Terra官方示例代码

elev <- rast(system.file('ex/elev.tif',package="terra"))
flowdir <- terrain(elev,"flowdir")
weight <- cellSize(elev,unit="km")
flowacc_weight <- flowAccumulation(flowdir,weight)
flowacc  <- flowAccumulation(flowdir)
plot(flowacc)

结果对比

  • Terra生成的河网:存在不连通的断裂情况
  • QGIS中用PCRaster处理同一份DEM:得到完全连通的汇流累积结果

问题定位

经排查,问题根源在于存在海拔相等的相邻单元格时,Terra的汇流计算逻辑会导致河网出现断裂。

测试用DEM数据

以下两个DEM可用于复现问题:

# 含等高相邻单元格的DEM(会出现河网不连通问题)
elev_A <- c(78, 72, 69, 71, 58, 49,
          74, 67, 56, 49, 46, 50,
          69, 53, 44, 37, 38, 48,
          64, 58, 55, 22, 31, 24,
          68, 61, 47, 34, 16, 19,
          74, 53, 34, 34, 11, 12) |> matrix(ncol = 6, byrow = TRUE) |> rast()

# 修改后无等高相邻单元格的DEM(可生成连通河网)
elev_B <- c(78, 72, 69, 71, 58, 49,
          74, 67, 56, 49, 46, 50,
          69, 53, 44, 37, 38, 48,
          64, 58, 55, 22, 31, 24,
          68, 61, 16, 34, 16, 19,
          74, 53, 34, 34, 11, 12) |> matrix(ncol = 6, byrow = TRUE) |> rast()

求助

有没有人遇到过同样的问题?或者有可行的解决思路?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:30:55