我正在使用OSMnx返回路標,這些路線圖在networkx中表示爲MultiDiGraph。將MultiDiGraph轉換爲MultiGraph而不會丟失現有邊緣
import osmnx as ox
%matplotlib inline
sg = ox.graph_from_point((37.7936516, -122.4503161), distance=100, network_type='all_private')
ox.plot_graph(sg)
這將返回由六條邊(灰色)連接五個節點(藍點)的曲線圖。
你會注意到兩個節點有兩條連接它們的邊(在右下角)。所以如果你看看sg[a][b]
,你會得到不同於sg[b][a]
的優勢。但如果你拉sg[c][d]
並不總是sg[d][c]
(因爲單向道路)。
我想將其轉換爲MultiGraph,所以我運行sg_u = sg.to_undirected()
,它創建了缺少的sg[d][c]
。但不幸的是,它也覆蓋了現有的「反向」邊緣。
可以很容易地看到,如果在看 '長度' 屬性:
sg[65283442][65283457]
有85.36長度(M,大概)
sg[65283457][65283442]
卻只有41.62
的長度,但運行後to_undirected()
的長度都是41.62。
無論如何只需添加新的「反向」邊緣而不是重新定義它?