如何在ox.plot_graph绘制的OSMNx路网图上标注GPS坐标点
OSMNx路网图标注GPS坐标点解决方案
完全可以实现标注需求。ox.plot_graph 方法默认会返回matplotlib的fig(画布)和ax(坐标轴)对象,你直接基于ax对象添加散点标注即可,具体实现方法如下:
实现步骤
- 导入依赖库,定义目标GPS坐标
- 调用
ox.graph_from_point获取目标区域路网 - 调用
ox.plot_graph时新增show=False、close=False参数,保留画布和坐标轴对象 - 调用ax的
scatter方法添加坐标点标注,调整样式确保显示在顶层
示例代码
import osmnx as ox import matplotlib.pyplot as plt # 目标GPS坐标,格式为 (纬度, 经度) target_point = (39.6654413, 20.8586396) lat, lon = target_point # 按中心点获取1000米半径范围内的机动车路网,dist参数可按需调整 road_net = ox.graph_from_point(target_point, dist=1000, network_type='drive') # 绘制路网,保留画布不自动关闭 fig, ax = ox.plot_graph(road_net, show=False, close=False) # 标注目标GPS点,红色、尺寸100、层级10确保在路网上方显示 ax.scatter(lon, lat, c='red', s=100, zorder=10) # 可选:添加点的文字标注 # ax.text(lon + 0.0002, lat + 0.0002, '目标坐标点', c='red', fontsize=12, zorder=10) plt.show()
注意事项
scatter方法传入的坐标顺序为(经度, 纬度),和graph_from_point传入的坐标顺序相反,填反会导致点位置错误- 必须给
ox.plot_graph加show=False和close=False参数,否则绘制完路网后画布会直接关闭,无法新增标注 zorder参数控制元素显示层级,数值越大越靠上,设置为10即可避免点被路网元素覆盖
内容的提问来源于stack exchange,提问作者Joey Lu
相关产品推荐
相关产品推荐

