Кратчайшие пути Networkx для двухточечных слоев - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть задача узнать лучший путь от дома до станции метро.

enter image description here

На рисунке ниже представлены три типа данных:

  • оранжевые точки - входы на станции метро
  • фиолетовые точки - центральные точки домов
  • синие линии - это дорожная сеть (пусть она сначала содержит все типы дорожные данные)

Цель состоит в том, чтобы определить кратчайший путь от каждой точки дома до ближайшего входа в метро и построить слой полилинии. Я думал об использовании библиотеки arcpy для этого, но недавно слышал о модуле networkx, но сейчас я знаю только, как загрузить данные в граф, однако я не могу понять, как искать желаемый кратчайший путь и что делать следующий вообще.

Вот мой черновик для загрузки данных в nx.Multigraph ():

import arcpy
import networkx as nx 
import numpy as np

line_fc = 'lines'
points_hs = 'house_points'

graph = nx.MultiGraph()
with arcpy.da.SearchCursor(line_fc, 'SHAPE@') as sc:
    for row in sc:
        line_geom = row[0].getPart(0)
        list_geom_cors = np.array([(n.X, n.Y) for n in line_geom])
        graph.add_edges_from(list_geom_cors)

with arcpy.da.SearchCursor(points_hs, 'SHAPE@XY') as sc:
    for row in sc:
        graph.add_node(row[0])

Как правильно выполнить эту задачу?

...