在 osmchina 数据库中检索中国普速铁路与干线铁道网的实战指南
中国传统普速铁路网络(以“五纵三横”四大干线为代表,如京广线、京九线、陇海线、京沪线、成昆线、宝成线等)承载着中国跨区域大宗货物运输与客运交通的基石地位。
在本地 osmchina 数据库中,普速铁路的拓扑关系极为完整规范。本文总结如何准确检索普速铁道线路并生成空间专题图层的方法。
一、普速铁路在 OSM 中的数据结构特征
- 统一的 operator 与 network 标签:
operator = '中国铁路'/operator:en = 'China Railway'operator:wikidata = 'Q1073489'(中国国家铁路集团有限公司)
- 经典的线路命名与国铁编号 (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)
- 命名标准:以“某某线”为核心,如
- 轨道技术参数:
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,支持一键生成全国铁路干线沿途市县地图。