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

为何OSMNX新nearest_nodes与旧get_nearest_node结果不同?如何复现旧结果?

问题原因

1. 函数参数定义差异

旧版get_nearest_node的输入坐标顺序是(纬度lat, 经度lon),而新版nearest_nodes的参数要求是X=经度lon, Y=纬度lat,你代码里把经纬度传反了,才会返回错误的节点。
你给出的坐标中51开头的是纬度值,7开头的是经度值,你把纬度传给了X参数、经度传给了Y参数,相当于传入了完全错误的地理位置,两次查询的错误坐标刚好离同一个节点最近,所以两次nearest_nodes都返回了同一个节点ID317558105。两点相同的情况下计算出来的最短路径只有一个节点,调用绘图函数时子图没有边,就会抛出graph contains no edges的报错。

解决方法

调整nearest_nodes的参数传值,把经度传给X、纬度传给Y即可,修改后的代码如下:

# 原来的错误写法:orig = ox.nearest_nodes(G, X=51.262336765, Y=7.143472955)
# 修正后的写法
orig = ox.nearest_nodes(G, X=7.143472955, Y=51.262336765)
print(orig) # 和旧版get_nearest_node返回的279086833一致
dest = ox.nearest_nodes(G, X=7.1491453, Y=51.2521799)
print(dest) # 和旧版get_nearest_node返回的269525495一致

修改后返回的节点就和旧版get_nearest_node完全一致,后续路径计算、绘图逻辑都可以正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:27:04