在 osmchina 数据库中检索中国普速铁路与干线铁道网的实战指南

中国传统普速铁路网络(以“五纵三横”四大干线为代表,如京广线、京九线、陇海线、京沪线、成昆线、宝成线等)承载着中国跨区域大宗货物运输与客运交通的基石地位。

在本地 osmchina 数据库中,普速铁路的拓扑关系极为完整规范。本文总结如何准确检索普速铁道线路并生成空间专题图层的方法。


一、普速铁路在 OSM 中的数据结构特征

  1. 统一的 operator 与 network 标签:
    • operator = '中国铁路' / operator:en = 'China Railway'
    • operator:wikidata = 'Q1073489'(中国国家铁路集团有限公司)
  2. 经典的线路命名与国铁编号 (ref):
    • 命名标准:以“某某线”为核心,如 京广线、京九线、陇海线、成昆线、京哈线。
    • 国铁干线编码(tags->>'ref'):
      • 0001:京广线(北京 $\rightarrow$ 广州,3,891 ways)
      • 0002:京沪线(北京 $\rightarrow$ 上海,2,894 ways)
      • 0003:陇海线(连云港 $\rightarrow$ 兰州,3,064 ways)
      • 0005:京九线(北京 $\rightarrow$ 九龙,4,383 ways)
      • 0007:京哈线(北京 $\rightarrow$ 哈尔滨,2,142 ways)
      • 0057:宝成线(宝鸡 $\rightarrow$ 成都,1,889 ways)
      • 0085:成昆线(成都 $\rightarrow$ 昆明,2,287 ways)
  3. 轨道技术参数:
    • gauge = '1435'(标准轨距)
    • electrified = 'contact_line'(接触网供电电气化)
    • usage = 'main'(国家骨干铁路)

二、高效查询普速铁路的 SQL 技巧

技巧 1:利用官方国铁编码(如 ref = '0001')精准锁定主干线

SELECT 
    id, 
    tags->>'name' AS name, 
    tags->>'ref' AS ref, 
    tags->>'wikidata' AS wikidata,
    tags->>'from' AS from_city,
    tags->>'to' AS to_city,
    jsonb_array_length(members) AS way_count
FROM planet_osm_rels
WHERE tags->>'route' = 'railway'
  AND (tags->>'ref' = '0001' OR tags->>'name' = '京广线');

技巧 2:空间线段去重聚合并计算全长

WITH rail_ways AS (
    SELECT DISTINCT (m->>'ref')::bigint AS way_id
    FROM planet_osm_rels, jsonb_array_elements(members) m
    WHERE id = 193064 AND (m->>'type') = 'W'
)
SELECT 
    COUNT(l.osm_id) AS way_count,
    ROUND((SUM(ST_Length(l.way)) / 1000)::numeric, 1) AS total_track_km,
    ST_AsGeoJSON(ST_Simplify(ST_Transform(ST_Union(l.way), 4326), 0.001)) AS geojson
FROM rail_ways w
JOIN planet_osm_line l ON l.osm_id = w.way_id;

技巧 3:空间求交提取沿线地级市与区县

WITH rail_line AS (
    SELECT ST_Transform(ST_Union(l.way), 4326) AS geom
    FROM planet_osm_line l
    WHERE l.osm_id IN (/* 京广线关联 way_ids */)
)
SELECT 
    c.adcode, 
    c.name,
    c.level
FROM map_province c, rail_line r
WHERE c.geom && r.geom AND ST_Intersects(c.geom, r.geom)
ORDER BY c.adcode;

实战结果:京广铁路(全长 2,270+ 公里)贯穿北京、保定、定州、石家庄、邢台、邯郸、安阳、鹤壁、新乡、郑州、许昌、漯河、驻马店、信阳、广水、随州、孝感、武汉、咸宁、岳阳、长沙、株洲、衡阳、郴州、韶关、清远、广州等 26 个地级行政区 与 90+ 个区县。


三、中国经典八大普速铁路干线速查表

铁路名称 国铁编码 (ref) 起止站点 Relation ID Wikidata ID
京广线 0001 北京 $\rightarrow$ 广州 193064 Q2673907
京沪线 0002 北京 $\rightarrow$ 上海 163022 Q915161
陇海线 0003 连云港东 $\rightarrow$ 兰州西 284857 Q634214
京九线 0005 北京西 $\rightarrow$ 香港红磡 162982 Q1038486
京哈线 0007 北京 $\rightarrow$ 哈尔滨 198494 Q1074605
宝成线 0057 宝鸡 $\rightarrow$ 成都 1912130 Q801901
成昆线 0085 成都 $\rightarrow$ 昆明 10286390 Q171748
湘黔线 0015 株洲 $\rightarrow$ 贵阳 193060 Q11075677

本项目提供了普速铁路通用自动化提取脚本 scripts/export_railway_geojson.py,支持一键生成全国铁路干线沿途市县地图。