неориентированный график plot_route_folium приводит к ошибке IndexError: индекс 0 выходит за пределы оси 0 с размером 0, когда

#osmnx

#osmnx

Вопрос:

plot_route_folium не работает для неориентированного графика, что я могу сделать?

Таким образом, он работает для графика

 G = ox.graph_from_place(place, simplify=False, custom_filter=custom_filter_ways)
orig = 25635046.0
dest = 3603422387.0
route = nx.shortest_path(G, orig, dest, weight='length')
route_map = ox.plot_route_folium(G, route)
 

Но если я хочу сделать

 Gu = ox.get_undirected(G)
route_undirected = nx.shortest_path(Gu, orig, dest, weight='length')
route_map_u = ox.plot_route_folium(Gu, route_undirected)
 

Я получаю следующую ошибку:

 ---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-50-8b91fb9c57b4> in <module>
----> 1 route_map_u = ox.plot_route_folium(Gu, route_undirected)

C:ProgramDataAnaconda3envsoxlibsite-packagesosmnxfolium.py in plot_route_folium(G, route, route_map, popup_attribute, tiles, zoom, fit_bounds, route_color, route_width, route_opacity, **kwargs)
    202     gdf_edges = utils_graph.graph_to_gdfs(G.subgraph(route), nodes=False, fill_edge_geometry=True)
    203     route_nodes = list(zip(route[:-1], route[1:]))
--> 204     index = [
    205         gdf_edges[(gdf_edges["u"] == u) amp; (gdf_edges["v"] == v)].index[0] for u, v in route_nodes
    206     ]

C:ProgramDataAnaconda3envsoxlibsite-packagesosmnxfolium.py in <listcomp>(.0)
    203     route_nodes = list(zip(route[:-1], route[1:]))
    204     index = [
--> 205         gdf_edges[(gdf_edges["u"] == u) amp; (gdf_edges["v"] == v)].index[0] for u, v in route_nodes
    206     ]
    207     gdf_route_edges = gdf_edges.loc[index]

C:ProgramDataAnaconda3envsoxlibsite-packagespandascoreindexesbase.py in __getitem__(self, key)
   4099         if is_scalar(key):
   4100             key = com.cast_scalar_indexer(key, warn_float=True)
-> 4101             return getitem(key)
   4102 
   4103         if isinstance(key, slice):

IndexError: index 0 is out of bounds for axis 0 with size 0
 

Построение графика работает как

 fig, ax = ox.plot_graph_route(Gu, route_undirected)
 

Ответ №1:

Смотрите Документы: для используемой вами функции требуется MultiDiGraph аргумент, но вместо этого вы передаете его a MultiGraph . Хотя функция не применяет строгие проверки типов, вы передали ей неожиданный тип аргумента.