我有两个简单的点(纬度,经度)和一个名为速度的参数。我需要找到路线和到达时间。
例如:
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]