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

如何从OSMnx绘制的地图中获取节点ID并关联节点与ID

解决OSMnx节点ID关联与带ID地图绘制问题

嘿,我来帮你搞定这个OSMnx的节点ID关联和标注问题!其实OSMnx的图结构里已经自带了节点的OSM官方ID信息,只要知道怎么提取和可视化就好,下面分步骤给你讲:

一、关联Node ID与图形节点

OSMnx生成的图是NetworkX的MultiDiGraph对象,每个节点都包含了OSM官方的osmid(也就是你说的node id)以及坐标信息。你可以通过遍历节点数据来获取对应关系:

import osmnx as ox

# 加载任意区域的路网图,这里以曼哈顿为例
G = ox.graph_from_place("Manhattan, New York, USA", network_type="drive")

# 遍历节点,查看内部ID、OSM ID和坐标的对应关系
for node_internal_id, node_data in G.nodes(data=True):
    print(f"NetworkX内部节点ID: {node_internal_id}")
    print(f"OSM官方Node ID: {node_data['osmid']}")
    print(f"节点坐标 (x,y): ({node_data['x']}, {node_data['y']})\n")

如果你需要快速映射两种ID,可以创建字典来保存对应关系:

# 内部ID → OSM ID
internal_to_osmid = {n: d['osmid'] for n, d in G.nodes(data=True)}
# OSM ID → 内部ID
osmid_to_internal = {d['osmid']: n for n, d in G.nodes(data=True)}

二、绘制带有Node ID的地图

你可以在OSMnx绘制的基础地图上,用Matplotlib的文本标注功能添加节点ID,具体步骤如下:

方法1:基础全节点标注

import matplotlib.pyplot as plt

# 先绘制路网图,设置show=False和close=False来保留绘图对象
fig, ax = ox.plot_graph(
    G,
    show=False,
    close=False,
    node_size=30,  # 缩小节点大小避免遮挡标注
    node_color='darkred',
    edge_color='lightgray'
)

# 遍历每个节点,在坐标位置标注OSM ID
for node_internal_id, node_data in G.nodes(data=True):
    x, y = node_data['x'], node_data['y']
    osmid = node_data['osmid']
    # 调整文本参数避免重叠,比如字体大小、对齐方式
    ax.text(
        x, y,
        str(osmid),
        fontsize=7,
        ha='center',  # 水平居中
        va='bottom',  # 垂直靠下,避免覆盖节点
        color='navy'
    )

# 显示最终图形
plt.show()

方法2:筛选重点节点标注

如果节点太多导致标注重叠,你可以只标注特定节点(比如交叉口、高连通度节点):

fig, ax = ox.plot_graph(G, show=False, close=False, node_size=30, node_color='darkred')

# 只标注度大于8的节点(通常是繁忙交叉口)
for node_internal_id, node_data in G.nodes(data=True):
    if G.degree(node_internal_id) > 8:
        x, y = node_data['x'], node_data['y']
        osmid = node_data['osmid']
        ax.text(x, y, str(osmid), fontsize=9, ha='center', va='bottom', color='darkblue')

plt.show()

这样就能清晰地看到你需要的节点ID和图形的对应关系啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:34:25