Estoy tratando de averiguar cómo encontrar todos los caminos más cortos desde cada punto y cada nodo de una línea a los otros puntos y nodos de líneas de este mapa.
He intentado hacerlo en Python usando NetworkX. Para probarlo, recorté el mapa y traté de buscar sólo los caminos más cortos de cada nodo de una línea a todos los demás nodos de otras líneas de este mapa:
Con esa red de carreteras, tengo 214 nodos (lo que debería resultar en 214x214 caminos más cortos, creo). He intentado hacer el gráfico de la red de carreteras con este código:
#Create the network graph
G = nx.DiGraph()
for k,v in idict.items():
G.add_edge(v[0],v[1], weight = v[2]) # v[0] = first (x,y) of a linestring, v[1] = last (x,y) of a linestring, v[2] = distance
G.add_edge(v[1],v[0], weight = v[2]) # return path
len(G.edges())
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos = pos, node_size=20,arrows = True)
nx.draw_networkx_edges(G, pos = pos)
plt.show()
Y el resultado muestra:
También he tratado de aplicar la función warshall de Networkx Floyd para calcular todos los caminos más cortos de cada punto a otro punto, pero algunos de los resultados regresan al infinito (ya que creo que dice que no se encuentra ningún camino entre los puntos, mientras que en realidad todos los caminos están conectados). En total, sólo vuelve a unos 1720 caminos más cortos
¿Cómo debo proceder para tener el camino más corto de cada nodo a todos los demás nodos del mapa?