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

R运行lixelize_lines处理路网时coordinates行数不匹配报错如何解决

问题原因

这个报错是由输入道路网络的几何数据异常导致的,lixelize_lines要求输入为仅包含二维LINESTRING类型的sf对象,你导入的GPKG数据大概率存在以下几类问题:

  • 同时存在二维线(XY坐标,2列坐标值)和三维/四维线(带Z高程/M测量值,3/4列坐标值),导致coordinates函数计算时行列数不匹配
  • 混合了MULTILINESTRING多段线和普通LINESTRING单段线
  • 包含零长度线段、自相交等无效几何
修复步骤
  • 第一步:统一坐标维度,移除多余的Z/M维度
library(sf)
library(dplyr)
# 移除坐标中的Z和M维度,统一为二维XY线
mtl_2008network_clean <- st_zm(mtl_2008network, drop = TRUE, what = "ZM")
  • 第二步:拆分多段线为单段线
# 检查几何类型,如果存在MULTILINESTRING则拆分
geom_types <- table(st_geometry_type(mtl_2008network_clean, by_geometry = TRUE))
if ("MULTILINESTRING" %in% names(geom_types)) {
  mtl_2008network_clean <- st_cast(mtl_2008network_clean, "LINESTRING")
}
  • 第三步:修复无效几何,过滤零长度线段
# 修复无效几何
mtl_2008network_clean <- st_make_valid(mtl_2008network_clean)
# 过滤长度大于0的线段
mtl_2008network_clean <- mtl_2008network_clean %>% 
  filter(st_length(.) > units::set_units(0, "m"))
  • 第四步:重新运行lixelize代码
lixels2008 <- lixelize_lines(mtl_2008network_clean, 150, mindist = 50)
附加说明

清理完成后同步生成的50+警告也会一并消失,如果仍有警告可运行warnings()查看具体内容,大概率是剩余长度不足150m的短线段自动跳过的提示,属于正常逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:24:04