从 OSMnx for NetworKX 保存并重新加载加权图
Save and re-load a weighted graph from OSMnx for NetworKX
我正在使用 OSMnx 获取图形并添加一个新的边属性 (w3),表示每个边的自定义权重。然后我可以使用 NetworkX 和 'length'、'w2' 成功找到 2 点之间的 2 条不同的最短路径。一切正常,这是我的代码:
G = ox.graph_from_place(PLACE, network_type='all_private', retain_all = True, simplify=True,truncate_by_edge=False) ```
w3_dict = dict((zip(zip(lu, lv, lk),lw3)))
nx.set_edge_attributes(G, w3_dict, "w3")
route_1 = nx.shortest_path(G, node_start, node_stop, weight = 'length')
route_2 = nx.shortest_path(G, node_start, node_stop, weight = 'w3')
现在我想将 G 保存到磁盘并重新打开它,以便稍后执行更多导航任务。但保存后:
ox.save_graph_xml(G, filepath='DATA/network.osm')
并重新打开它:
G = ox.graph_from_xml('DATA/network.osm')
我的自定义属性 w3 不见了。我遵循了文档中的 instructions 但没有运气。感觉好像我错过了一些非常明显的东西,但我不明白它是什么..
使用ox.save_graphml
和ox.load_graphml
函数将save/loadfull-featuredOSMnx/NetworkX图to/from盘起来备用。保存 xml 函数的存在只是为了允许序列化为需要它的应用程序的 .osm
文件格式,并且有许多约束符合该格式。
import networkx as nx
import osmnx as ox
ox.config(use_cache=True, log_console=True)
# get a graph, set 'w3' edge attribute
G = ox.graph_from_place('Piedmont, CA, USA', network_type='drive')
nx.set_edge_attributes(G, 100, 'w3')
# save graph to disk
ox.save_graphml(G, './data/graph.graphml')
# load graph from disk and confirm 'w3' edge attribute is there
G2 = ox.load_graphml('./data/graph.graphml')
nx.get_edge_attributes(G2, 'w3')
我正在使用 OSMnx 获取图形并添加一个新的边属性 (w3),表示每个边的自定义权重。然后我可以使用 NetworkX 和 'length'、'w2' 成功找到 2 点之间的 2 条不同的最短路径。一切正常,这是我的代码:
G = ox.graph_from_place(PLACE, network_type='all_private', retain_all = True, simplify=True,truncate_by_edge=False) ```
w3_dict = dict((zip(zip(lu, lv, lk),lw3)))
nx.set_edge_attributes(G, w3_dict, "w3")
route_1 = nx.shortest_path(G, node_start, node_stop, weight = 'length')
route_2 = nx.shortest_path(G, node_start, node_stop, weight = 'w3')
现在我想将 G 保存到磁盘并重新打开它,以便稍后执行更多导航任务。但保存后:
ox.save_graph_xml(G, filepath='DATA/network.osm')
并重新打开它:
G = ox.graph_from_xml('DATA/network.osm')
我的自定义属性 w3 不见了。我遵循了文档中的 instructions 但没有运气。感觉好像我错过了一些非常明显的东西,但我不明白它是什么..
使用ox.save_graphml
和ox.load_graphml
函数将save/loadfull-featuredOSMnx/NetworkX图to/from盘起来备用。保存 xml 函数的存在只是为了允许序列化为需要它的应用程序的 .osm
文件格式,并且有许多约束符合该格式。
import networkx as nx
import osmnx as ox
ox.config(use_cache=True, log_console=True)
# get a graph, set 'w3' edge attribute
G = ox.graph_from_place('Piedmont, CA, USA', network_type='drive')
nx.set_edge_attributes(G, 100, 'w3')
# save graph to disk
ox.save_graphml(G, './data/graph.graphml')
# load graph from disk and confirm 'w3' edge attribute is there
G2 = ox.load_graphml('./data/graph.graphml')
nx.get_edge_attributes(G2, 'w3')