1 votos

Problema con read_shp() en NetworkX

Estoy tratando de convertir un shapefile de sólo geometría de líneas (una red de calles) a un gráfico NetworkX para ejecutar algunos algoritmos de conectividad en él. Me encuentro con este problema:

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-    
packages/networkx/readwrite/nx_shp.py", line 69, in read_shp
for lyr in shp:
TypeError: 'NoneType' object is not iterable

Parece ser un problema con el módulo ogr que requiere el fcn, pero creo (?) que lo he descargado, y no lanza el error de excepción escrito en el código fuente. ¿Alguna idea?

EDIT: aquí está mi fragmento de código: importar networkx como nx

print 'nx imported'
G=nx.DiGraph()
G=nx.read_shp('shpfile.shp', \
              simplify = False)
print "running fine"

Se queda atascado en el read_shp() y no ejecuta el comando print al final para confirmar que se está ejecutando correctamente.

3voto

GreyCat Puntos 146

Me parece que no entiendes los principios de Nextwokx (ver nx_spatial no lee todas las características del shapefile )

Networkx genera un networkx.DiGraph del shapefile, con nodos y aristas y sólo estos nodos y aristas son iterables, no el Graph

import networkx as nx
G = nx.read_shp('mylines.shp')
print(G.nodes())
[(1.0, 2.0), (3.0, 2.0), (0.0, 0.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (2.0, 4.0), (1.0, 3.0), (2.0, 3.0), (1.0, 4.0), (4.0, 3.0), (4.0, 2.0), (3.0, 4.0), (1.0, 1.0)]
print(G.edges())
[((1.0, 2.0), (1.0, 1.0)), ((3.0, 2.0), (2.0, 1.0)), ((3.0, 1.0), (2.0, 1.0)), ((4.0, 4.0), (3.0, 4.0)), ((2.0, 1.0), (1.0, 1.0)), ((2.0, 4.0), (2.0, 3.0)), ((1.0, 3.0), (1.0, 2.0)), ((2.0, 3.0), (1.0, 2.0)), ((1.0, 4.0), (1.0, 3.0)), ((4.0, 3.0), (4.0, 2.0)), ((4.0, 2.0), (3.0, 2.0)), ((3.0, 4.0), (2.0, 3.0)), ((1.0, 1.0), (0.0, 0.0))]

Por lo tanto, el error for lyr in shp TypeError: 'NoneType' object is not iterable es normal.

Pero no hace falta que navegues nada, utiliza directamente el DiGraph resultante

enter image description here

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