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

如何在ArcGIS、QGIS或R中删除或合并平行铁路线?

铁路Shapefile平行轨道处理方案(保留单条/合并为一条)

ArcGIS解决方案

保留单条轨道、删除另一条

  • 若轨道有区分属性(如track_side字段标记左/右轨):
    1. 打开「选择图层 by 属性」工具,输入筛选表达式(例:"track_side" = 'left'),选中目标轨道
    2. 右键图层→「数据」→「导出数据」,将选中要素保存为新Shapefile即可
  • 若无区分属性:
    1. 运行「近邻分析」工具,设置搜索距离为轨道实际间距(如5米),生成含NEAR_FID字段的结果图层
    2. 打开属性表,按FID排序后,筛选FID < NEAR_FID的记录(避免重复选择成对轨道),选中后导出或删除未选中要素

合并两条平行轨道为一条(生成中心线)

  • 方法1(需ArcGIS Advanced许可):
    1. 选中成对的平行轨道,运行「创建中心线」工具,设置偏移容差匹配轨道间距,直接生成中心线要素
  • 方法2(通用版):
    1. 对轨道图层运行「缓冲区」工具,设置半径为轨道间距的一半(如轨道间距4米则设2米),生成面要素
    2. 对缓冲面运行「要素转线」工具,得到近似中心线,再用「简化线」工具优化线条平滑度

QGIS解决方案

保留单条轨道、删除另一条

  • 若轨道有区分属性:
    1. 打开图层属性表,使用「筛选」功能输入表达式(例:"track_side" = 'right'),选中目标轨道
    2. 右键图层→「导出」→「导出选中要素」,保存为新文件
  • 若无区分属性:
    1. 打开「处理工具箱」→「矢量分析」→「近邻查询」工具,生成含相邻要素FID的字段(如near_fid)
    2. 打开属性表,用字段计算器生成临时字段:is_keep = if("fid" < "near_fid", 1, 0),筛选is_keep=1的记录后导出或删除其他要素

合并两条平行轨道为一条(生成中心线)

  • 方法1:
    1. 选中成对平行轨道,打开「处理工具箱」→「矢量几何」→「创建中心线」工具,设置容差为轨道间距,生成中心线
  • 方法2:
    1. 运行「缓冲区」工具,半径设为轨道间距一半,生成面要素
    2. 运行「多边形转线」工具得到中心线,再用「简化几何」工具调整线条平滑度

R语言解决方案(基于sf包)

保留单条轨道、删除另一条

  • 有属性区分的情况:
    library(sf)
    # 读取Shapefile数据
    rail <- st_read("railway.shp")
    # 筛选保留右轨(假设存在track_side字段)
    rail_single <- rail[rail$track_side == "right", ]
    # 保存结果
    st_write(rail_single, "railway_single.shp")
    
  • 无属性区分的情况:
    library(sf)
    # 读取数据
    rail <- st_read("railway.shp")
    # 计算每条线的最近邻要素ID
    nn_ids <- st_nearest_feature(rail)
    # 标记保留的要素(仅保留FID小于对应最近邻FID的线,避免重复)
    keep_flag <- seq_len(nrow(rail)) < nn_ids
    rail_single <- rail[keep_flag, ]
    # 保存结果
    st_write(rail_single, "railway_single.shp")
    

合并两条平行轨道为一条(生成中心线)

library(sf)
library(dplyr)

# 读取数据
rail <- st_read("railway.shp")

# 为成对轨道分配组ID(通过近邻关系分组)
rail <- rail %>%
  mutate(nn_id = st_nearest_feature(.),
         group_id = pmin(seq_len(nrow(.)), nn_id))

# 按组生成中心线
rail_center <- rail %>%
  group_by(group_id) %>%
  summarise(geometry = st_union(geometry) %>% st_centroid() %>% st_cast("LINESTRING"))

# 保存结果
st_write(rail_center, "railway_center.shp")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:25:30