1 votos

Lectura de un shapefile en networkx como grafo no dirigido

import networkx as nx
from networkx.algorithms import approximation as ax

Road = nx.read_shp('/Users/benjaminhendel/Downloads/scatteredroads.shp') #Reading Road Data 
Base = nx.read_shp('/Users/benjaminhendel/Downloads/testptssnapped.shp') #Reading Terminal Node
nodes = list(Base.nodes) #Creating list of terminal nodes
Road = Road.to_undirected()
st_tree = ax.steinertree.steiner_tree(Road,nodes,weight='length')

Estoy tratando de leer un shapefile en networkx y ejecutar steiner_tree aproximación sobre ella. Me dice que mi grafo es dirigido. Cuando lo hago no dirigido, me da el error:

networkx.exception.NetworkXError: G is not a connected graph. metric_closure is not defined.

2voto

GreyCat Puntos 146

Se dice que un grafo es conexo si existe un camino entre cada par de vértices .

Por lo tanto, cree un nuevo gráfico conectado completo con itertools

 import itertools
 Road = nx.read_shp('stac_graph.shp')
 # control
 Road2 = Road.to_undirected()
 nx.is_connected(Road2)
 False
 # new graph with path between every pair of vertex
 G = nx.Graph()
 # add original nodes
 G.add_nodes_from(Road)
 # create edges
 G.add_edges_from(itertools.combinations(Road, 2))
 # control
 nx.is_connected(G)
 True
 # and
 nodes = list(G.nodes) 
 ax.steinertree.steiner_tree(G,nodes,weight='length')
 <networkx.classes.graph.Graph object at 0xa27c5da58>

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X