Объединение двух графиков Networkx в один - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь сгенерировать граф из двух шейп-файлов, которые представляют железнодорожную сеть.

Первый шейп-файл (track.shp) содержит строки строк, представляющие дорожки. Второй шейп-файл (crossings.shp) содержит точки, представляющие железнодорожные переезды.

Мое намерение состоит в том, чтобы создать сеть графов, в которой узлы являются этими точками пересечения и обрезать дорожки между этими пересечениями.

Это является представлением обоих шейп-файлов. Зеленые точки - это пересечения (предполагаемая вершина) network

Я использовал NetworkX's read_shp для чтения обоих шейп-файлов, где один граф содержит ребра, а другой граф узлы.

Я пытаюсь объединить их в один график.

Я пытался использовать объединение, как показано в этом ответе , но я получаю KeyError, когда пытаюсь сделать что-то полезное, например, отобразить полученный график, вероятно, из-за расхождений в моих данных.

Данные точки выборки: (-97.2099838 49.9057139) Данные выборки LineString: [-99.68137 49.19066, -99.68154 49.17139]

Вот мой код:

G_nodes = nx.read_shp("crossings.shp")
positions_nodes = {k: v for k,v in enumerate(G_nodes.nodes())}

G_edges = nx.read_shp("tracks.shp")
positions_edges = G_edges.edges() 

X = nx.compose(G_edges, G_nodes)

# Display resulting graph
nx.draw_networkx_edges(X, X.nodes)
plt.xlim(450000, 470000) 
plt.ylim(430000, 450000)
plt.title('From shapefiles to NetworkX')
...