在python中计算两点之间的路线和到达时间

问题描述 投票:0回答:0

我有两个简单的点(纬度,经度)和一个名为速度的参数。我需要找到路线和到达时间。

例如

point1: (1,1)   
point2: (5,5)   
speed: x km/h
one possible route is : (1,1) -> (2,2) -> (3,3) -> (4,4) -> (5,5)

现在我还需要路线中每个点的到达时间。像这样:

[(1,1),0:00] -> [(2,2),1:00] -> [(3,3),2:00] -> [(4,4),3:00] -> [(5,5),4:00]   

第一个元素显示点,第二个元素显示到达时间(到达该点所花费的时间显示到达该点的时间的任何其他值)

一个重要的事情是我想在真实世界的地图上运行它,然后将使用世界地图中的纬度和经度。


所以...我做了这个

import osmnx as ox
import networkx as nx
ox.settings.log_console=True
ox.settings.use_cache=True


start_latlng = (35.73509, 51.4171)
end_latlng = (35.73674, 51.40611)
mode      = 'walk'
optimizer = 'time'

graph = ox.graph_from_place('tehran', network_type = mode)
orig_node = ox.distance.nearest_nodes(graph, start_latlng[1],start_latlng[0])
dest_node = ox.distance.nearest_nodes(graph, end_latlng[1],end_latlng[0])

shortest_route = nx.shortest_path(graph,
                                orig_node,
                                dest_node,
                                weight=optimizer)


print(shortest_route)

结果是这样的:

[1649103291, 717069600, 1922773706, 423733650, 4444063663, 3376783364, 2178480086, 2178480071, 2179951182, 1880160160, 3429927627, 3856787096, 3856787099, 436153557, 1649103461, 29004286, 423746569]

1- 问题是我不知道这些数字是什么意思?我知道我可以绘制它们,但我需要纬度,经度而不是这个!

2-秒 我不知道每个点的到达时间。我的意思是从起点到另一点需要多少时间。

3- 太慢了!我需要更快的方法。

那我怎样才能得到这样的结果呢?

[(1,1),0:00] -> [(2,2),1:00] -> [(3,3),2:00] -> [(4,4),3:00] -> [(5,5),4:00]   
python networkx geopandas shortest-path osmnx
© www.soinside.com 2019 - 2024. All rights reserved.