使用osmnx.speed.add_edge_speeds时同类型道路speed_kph值不一致问题
问题原因分析
函数逻辑误解:
add_edge_speeds的实际逻辑并非给所有同道路类型的边统一赋值该类型的平均maxspeed,而是分两步处理:- 对已经带有
maxspeed标签的边,直接保留其解析后的速度值(OSM中的maxspeed可能是单个数值、范围值或分时段值,函数会自动解析为标准数值) - 仅对没有
maxspeed标签的边,才用该道路类型下所有有maxspeed边的平均值进行填充
- 对已经带有
你的数据特性:洛杉矶县的motorway路段在OSM中大多已标注了实际限速值(不同路段限速可能不同),这些边的
speed_kph会直接使用自身的限速数据;只有少数缺失maxspeed标签的边才会被填充为该类型的平均速度(也就是你计算出的101.6),因此会出现同属motorway但速度值存在差异的情况。验证方法:你可以通过以下代码查看
maxspeed标签的存在与否和speed_kph的对应关系,直观确认差异来源:# 标记是否有maxspeed标签 gdf_edges['has_maxspeed'] = gdf_edges['maxspeed'].notna() # 分组查看不同情况下的平均速度 print(gdf_edges.groupby(['highway', 'has_maxspeed'])['speed_kph'].mean().round(1))
另外注意:你代码最后一行df = df[['u','v','ref','highway','speed_kph']][1:1]是取空数据集(左闭右开的切片1:1不包含任何行),若要查看多行数据,应改为[1:]。
内容的提问来源于stack exchange,提问作者Z. G.
相关产品推荐
相关产品推荐

