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

Geopandas计算德国高速公路长度为何远超官方数据?

德国高速公路OSM数据长度与官方数据差异问题

近期基于OpenStreetMap开展统计工作,使用Overpass导出德国高速公路(Autobahnen)数据,通过geopandas计算长度时,结果与德国联邦交通及数字基础设施部(BMVI)公布的官方数据不符。

按常理,因高速公路双向路段单独映射,计算总长度应约为官方数据的两倍,且Overpass查询已排除连接匝道、出口等路段。但对比最长的十余条高速公路,多数计算结果明显高估,比官方数据高出50%-60%(见附图)。

selected Autobahnen计算长度与官方长度对比

差异原因分析

  • 重复路段导致重复计算:OSM是众包数据,部分高速公路路段可能被多次绘制(不同用户重复添加、历史版本残留等),即使是同一方向的路段,也可能存在多个重复的way对象,求和时会重复计算长度。

  • 投影坐标系的失真问题:计算时使用了epsg=3857(Web墨卡托投影),该投影在中高纬度地区会产生显著的距离失真。德国地处中高纬度,用此投影计算出的长度会比实际地理长度偏长,这是高估结果的核心因素之一。建议更换为德国专用的等距投影,如epsg=25832(UTM 32N,覆盖德国大部分区域)或epsg=3035(欧洲等距圆柱投影)。

  • 非主线路段的混入:尽管查询时过滤了highway="motorway",但部分并行的非主线路段(如施工临时便道、单独映射的应急车道、服务区内部连接路)可能被误标记为motorway,这些路段不属于官方统计的主线长度范畴,却被计入了计算结果。

  • 统计口径的差异:BMVI的官方数据通常统计的是单向主线的设计长度,而OSM数据可能包含实际建设中的延伸段、未正式通车的路段;另外,官方数据可能按行政归属合并或去重统计,而OSM是按道路物理分段存储,两者统计逻辑本身存在差异。

使用的代码

Overpass 查询代码

[out:json][timeout:100];
{{geocodeArea:Deutschland}}->.searchArea;
way["highway"="motorway"]["ref"="A 7"](area.searchArea);
out body;
>;;
out skel qt;

Python 计算代码

import geopandas as gpd
import pandas as pd

autobahn = "A7"
columns = ["ref", "length_m"]

df_total = pd.DataFrame(columns=columns)

gdf = gpd.read_file(f"https://fliessbaden.de/wp-content/uploads/A7.geojson")
gdf = gdf.to_crs(epsg=3857)

gdf["length_m"] = gdf.geometry.length

total_m = gdf['length_m'].sum()
total_km = total_m / 1000
print(autobahn + ": " + str(round(total_km, 2)) + " km")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:05:07