我有一个数据框,其中包含来自车辆的 GPS 数据。它有经度、纬度值和时间戳。我想在地图上可视化汽车的路线。
OSMNX 有一个函数“plot_graph_route”和“plot_graph_folium”,它将路线作为参数,但我不知道我应该给出什么样的结构。
我不知道我应该给出什么样的结构
OSMnx 文档plot_graph_route
中完整描述了其参数的用法和结构。OSMnx 示例中记录了在 lat-lng 点之间绘制路线的技术,如下所示:
origin_point = (37.792896, -122.412325)
destination_point = (37.790495, -122.408353)
origin_node = ox.get_nearest_node(G, origin_point)
destination_node = ox.get_nearest_node(G, destination_point)
route = nx.shortest_path(G, origin_node, destination_node, weight='length')
fig, ax = ox.plot_graph_route(G, route, origin_point=origin_point, destination_point=destination_point)
文档和示例都类似地描述了该plot_graph_folium
功能。
如果路线由具有 OSM id 的 OSM 节点组成,OSMnx 可以在地图上绘制路线。
您目前拥有的是由一系列(纬度、经度)点组成的原始 GPS 点。第一步应该是地图匹配,将 GPS 数据点映射到最近/最合适的 OSM 节点的过程。如果您可以对所有 GPS 数据点执行此操作,那么您将在 OSM 道路网络上为每个 GPS 数据点拥有最合适的 OSM 节点/点(取决于您的地图匹配算法的复杂程度)。
OSMnx 在获取给定 (lat,long) 的最近节点方面具有非常粗略的地图匹配表示,形式为
origin_point = (37.792896, -122.412325)
origin_node = ox.get_nearest_node(G, origin_point)
正如杰夫在他的回答中提到的那样。您可以选择对所有 GPS 数据点执行此操作,而不仅仅是端点并检索最短路线。但是,话又说回来,这是非常粗略的地图匹配,具体取决于您所需的准确性。
所以本质上,在本练习结束时,您应该有一系列 OSM 节点 ID。如果您将这些作为 ox.plot_graph_route 中的路线参数传递,您应该能够生成“可能”路线所需的可视化。