在 osmchina 数据库中检索中国高速铁路(高铁)网的实战指南

中国建成了世界上规模最大的高速铁路网(“八纵八横”客运专线通道)。在 OpenStreetMap 数据库中,高速铁路(High-speed Railway / HSR)与普速铁路虽共享部分物理轨道标准,但拥有独特的标签属性与网络关系结构。

本文总结在本地 osmchina 数据库中,如何高效定位中国高速铁路线路、甄别主线与动车联络线,并提取沿途设站城市的实战经验。


一、中国高铁在 OSM 中的数据结构特征

  1. 关系标签特征:
    • 关系类型:tags->>'route' = 'railway' 或 tags->>'route' = 'train'。
    • 命名习惯:通常包含“高铁”、“客运专线”、“高速铁路”(例如 京沪高铁、贵广客运专线、成贵客运专线)。
    • 国铁线路编码:tags->>'ref' 通常为四位国铁数字编码(如京沪高铁 ref='3002'、贵广客专 ref='3044'、成贵客专 ref='3041')。
  2. 物理轨道与时速标签 (planet_osm_line):
    • railway = 'rail'
    • highspeed = 'yes'
    • usage = 'main'
    • maxspeed = '300' 或 '350'(设计运营时速)
  3. 主线与联络线甄别:
    • 大型枢纽(如北京南、南京南、虹桥、武汉、广州南)附近存在大量“进出站线”、“动走线”、“下行联络线”。
    • 提取骨干大动脉时,应优先挑选 成员数大于 300+ 且名称不带“联络线/进站线”的主干关系。

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

技巧 1:检索国家高铁干线(以京沪高铁为例)

SELECT 
    id, 
    tags->>'name' AS name, 
    tags->>'ref' AS ref, 
    tags->>'wikidata' AS wikidata,
    tags->>'from' AS from_station,
    tags->>'to' AS to_station,
    jsonb_array_length(members) AS way_count
FROM planet_osm_rels
WHERE (tags->>'route' = 'railway' OR tags->>'route' = 'train')
  AND (tags->>'name' = '京沪高铁' OR tags->>'name:zh' = '京沪高铁' OR tags->>'wikidata' = 'Q913275');

技巧 2:两步法提取高铁轨迹几何与里程计算

WITH hsr_ways AS (
    SELECT DISTINCT (m->>'ref')::bigint AS way_id
    FROM planet_osm_rels, jsonb_array_elements(members) m
    WHERE id = 356778 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 hsr_ways w
JOIN planet_osm_line l ON l.osm_id = w.way_id;

技巧 3:空间求交提取高铁沿线设站城市

通过高铁矢量线与地级行政区边界求交:

WITH hsr_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, hsr_line r
WHERE c.geom && r.geom AND ST_Intersects(c.geom, r.geom)
ORDER BY c.adcode;

实战结果:京沪高铁全长约 1,318 公里,沿途串联北京、天津、廊坊、沧州、德州、济南、泰安、济宁、枣庄、徐州、宿州、蚌埠、滁州、南京、镇江、常州、无锡、苏州、上海等 19 个直辖市与地级市。


三、著名高速铁路 OSM 关系速查表

高铁名称 规划区间 线路编码 (ref) Relation ID Wikidata ID
京沪高铁 北京南 $\rightarrow$ 上海虹桥 3002 356778 Q913275
贵广客运专线 贵阳北 $\rightarrow$ 广州南 3044 3999066 Q5616932
成贵客运专线 成都东 $\rightarrow$ 贵阳北 3041 7754722 -
银西高铁 西安北 $\rightarrow$ 银川 3100 11549538 Q17164272
渝万高铁 重庆北 $\rightarrow$ 万州北 3063 4868613 Q15912446
沪渝蓉高铁 (在建/部分段) 上海 $\rightarrow$ 成都 3136 17327779 Q19855970

本项目提供了自动化高速铁路提取工具 scripts/export_hsr_geojson.py,支持一键生成高铁沿线市县空间地图。