OSMnxを使用して、networkxのMultiDiGraphsとして表されるロードマップを返します。既存のエッジを失うことなく、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)
これは、6つのエッジ(灰色)によって接続された5つのノード(青色のドット)のグラフを返します。
2つのノードに2つのエッジが(右下に)接続されていることがわかります。したがって、sg[a][b]
を見ると、sg[b][a]
とは異なるエッジが表示されます。しかし、sg[c][d]
を引くと、(片道のために)いつもsg[d][c]
であるとは限りません。
私はこれをMultiGraphに変換したいので、sg_u = sg.to_undirected()
を実行すると、sg[d][c]
が作成されます。しかし残念ながら、既存の "逆"エッジも上書きされます。
それは '長さ' を見ると属性かどうかを確認するのは簡単です:
sg[65283457][65283442]
が唯一の41.62
しかし、実行した後の長さを持っている
sg[65283442][65283457]
は(おそらく、M)85.36の長さを有しto_undirected()
はいずれも長さが41.62です。
新しい「リバース」エッジを再定義するのではなく単に追加するだけですか?