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

如何使用R将源索引转为包含索引、START_X、START_Y的向量数据列

问题解决方法

报错根源

  • 变量名混用:读取的GDB对象命名为ljz,后续代码中多次使用未定义的network变量,取值逻辑异常
  • 标识符冲突:提前将df定义为数据框对象,后续代码中将df作为函数调用,R无法识别调用逻辑,触发参数缺失报错
  • 空间转换语法错误:st_sfc为sf包专属的几何列创建函数,传入参数格式不符合要求,且未提前加载sf包依赖

正确操作流程

1. 修正依赖加载与数据读取

优先使用sf包替代已停止维护的rgdal/sp处理矢量数据,语法更简洁:

# 加载sf依赖包
library(sf)
# 读取GDB数据
ljz <- st_read("ljz_network.gdb")
# 查看读取到的字段与结构
head(ljz)

读取后ljz本身就是标准空间矢量对象,无需额外做格式转换。

2. 生成ID与目标向量列

直接在原空间对象上新增字段即可:

# 生成向量型ID列
ljz$ID <- 1:nrow(ljz)
# 构造包含索引、START_X、START_Y的source_index向量列,每个元素为长度3的向量
ljz$source_index <- mapply(function(id, x, y) c(id, x, y), 
                           ljz$ID, ljz$START_X, ljz$START_Y, 
                           SIMPLIFY = FALSE)

3. 校验结果

# 查看source_index列的类型,确认是vector格式
class(ljz$source_index[[1]])
# 查看空间对象属性
st_geometry_type(ljz)

内容的提问来源于stack exchange,提问作者Det.D Joker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:30:00