Osmnx绘制多个图形路线

时间:2018-11-27 07:02:32

标签: python osmnx

如果我在不同地图上绘制每条路线,结果将是完美的。但是,我要在一张地图上绘制多条路线。

我的代码是:

import osmnx as ox, networkx as nx, matplotlib.pyplot as plt, math as m
from haversine import haversine

org = (27.5075, 77.6779)
dst = (27.5067, 77.6694)
dist_fl = (int(haversine(org, dst)*1000))*2
G = ox.graph_from_point(org, simplify=False, distance=dist_fl)
orig_node = ox.get_nearest_node(G, org, method='euclidean')
target_node = ox.get_nearest_node(G, dst, method='euclidean')

nodes, edges = ox.graph_to_gdfs(G)
streets_per_node = ox.count_streets_per_node(G)
route = nx.shortest_path(G, source=orig_node, target=target_node, 
weight='length', method='dijkstra')
node_route = nodes.loc[route]

route_list = [[1352186296, 1352186345], [1352186345, 1352186150, 1350260490, 
1352186112, 1352186349, 1350260516, 4753659536L, 4753498382L], [4753498382, 
4753498383L, 4753498390L], [4753498390, 4753498391L, 4753498392L, 
4753498393L, 4753498394L], [4753498394, 4753498395L, 4753498396L, 
4753498397L, 4753498398L], [4753498398, 4753478108L], [4753478108, 
4753498399L, 4753498400L, 4753498401L], [4753498401, 4753498402L, 
4753498403L], [4753498403, 4753498404L, 4753498405L, 4753657826L, 
4753498406L, 4753498407L, 4753498408L, 4753498409L], [4753498409, 4753498410L, 4753498411L, 4753498412L], [4753498412, 3803339674L], [3803339674, 1352186110, 1352186253, 2265692728L], [2265692728, 1352186308, 1352186133, 1352186328, 1352186316, 1352186071, 1352186187, 1352186095], [1352186095, 1352186361, 1352186263]]

coord_list =[(77.6776527, 27.5069438), (77.6775911, 27.5061476), (77.6747421, 27.5061048), (77.6747447, 27.5065153), (77.6742216, 27.5065135), (77.6741438, 27.507339), (77.6740672, 27.5073159), (77.6738192, 27.5079793), (77.6736687, 27.5079667), (77.6726402, 27.5084229), (77.6720677, 27.5081814), (77.6717673, 27.5093129), (77.6704672, 27.5094812), (77.6690214, 27.507629)]

color_list = ['green', 'green', 'green', 'green', 'red', 'green', 'green', 'green', 'green', 'green', 'green', 'green', 'red', 'red']

fig, ax = ox.plot_graph_routes(G, route_list, fig_height=10, fig_width=10, save=True, filename='outfile_data', show=False, close=False, axis_off=False, edge_linewidth=1, node_size=10, route_color = color_list)

plt.show()

Screenshot

1 个答案:

答案 0 :(得分:0)

一条路线由多行组成。您必须为路线中的每一行创建颜色列表。然后,为下一条路线更改其行数的颜色。例如。如果您有两条路由,比如说sp1和sp2,它们包含连续的OSMid,那么您就必须编写如下内容:

$fromDate = DateTime::createFromFormat('y-m-d', $_POST['fromDate'])->format('Y-m-d');
$endDate = DateTime::createFromFormat('y-m-d', $_POST['endDate'])->format('Y-m-d');

---------------------用以下代码替换颜色列表----

c1 = (len(sp1)-1) * ['r']
c2 = (len(sp2)-1) * ['g']
color_list = c1 + c2
ox.plot.plot_graph_routes(G,[sp1,sp2],route_color = color_list)