NetworkX:从 shapefile 创建批处理图
NetworkX: create batch graphs from shapefiles
假设您有以下包含多个 shapefile 的目录:
MyFolder
|
|---S1.shp
|---S2.shp
|---S3.shp
|---
|---
|---S50.shp
并且您想为其中的每一个创建一张图,并将它们命名为相同的(例如,与 S1.shp
关联的图称为 S1
)。
我正在尝试在 for 循环中执行此操作:
import networkx as nx
import os
myfolder=r'C:\Users\MyName\MyFolder'
os.chdir(myfolder)
for root, dirs, filenames in os.walk(myfolder):
for f in filenames:
if f.endswith('.shp') and f[0]=='S': #Consider only the files with an "S" in their name
G=nx.read_shp(f)
pos={k: v for k,v in enumerate(G.nodes())}
pos_x = {k:(round(a,4),round(b,4)) for k,(a,b) in pos.items()}
graph_name=f.split('.', 1)[0]
GG=nx.Graph(name=graph_name)
GG.add_nodes_from(pos_x.keys())
现在 GG=nx.Graph(name=graph_name)
行不符合我的要求,因为该图仍称为 GG
,而不是 S1
等。正确的图形名称存储在 GG.name
中,但我无法通过调用它的 GG.name.
来检索图形
有没有一种方法可以为图表指定一个名称,是文件名,不带扩展名?
您可以制作 GG
一个将文件名映射到图形的字典:
import networkx as nx
import os
myfolder = r'C:\Users\MyName\MyFolder'
os.chdir(myfolder)
GG = dict()
for root, dirs, filenames in os.walk(myfolder):
for f in filenames:
if f.endswith('.shp') and f.startswith('S'):
G = nx.read_shp(f)
pos_x = {k: (round(a, 4), round(b, 4))
for k, (a, b) in enumerate(G.nodes())}
graph_name, graph_ext = os.path.splitext(f)
GG[graph_name] = nx.Graph(name=graph_name)
GG[graph_name].add_nodes_from(pos_x.keys())
然后 S1.shp
关联的图可以被 GG['S1']
访问。
假设您有以下包含多个 shapefile 的目录:
MyFolder
|
|---S1.shp
|---S2.shp
|---S3.shp
|---
|---
|---S50.shp
并且您想为其中的每一个创建一张图,并将它们命名为相同的(例如,与 S1.shp
关联的图称为 S1
)。
我正在尝试在 for 循环中执行此操作:
import networkx as nx
import os
myfolder=r'C:\Users\MyName\MyFolder'
os.chdir(myfolder)
for root, dirs, filenames in os.walk(myfolder):
for f in filenames:
if f.endswith('.shp') and f[0]=='S': #Consider only the files with an "S" in their name
G=nx.read_shp(f)
pos={k: v for k,v in enumerate(G.nodes())}
pos_x = {k:(round(a,4),round(b,4)) for k,(a,b) in pos.items()}
graph_name=f.split('.', 1)[0]
GG=nx.Graph(name=graph_name)
GG.add_nodes_from(pos_x.keys())
现在 GG=nx.Graph(name=graph_name)
行不符合我的要求,因为该图仍称为 GG
,而不是 S1
等。正确的图形名称存储在 GG.name
中,但我无法通过调用它的 GG.name.
有没有一种方法可以为图表指定一个名称,是文件名,不带扩展名?
您可以制作 GG
一个将文件名映射到图形的字典:
import networkx as nx
import os
myfolder = r'C:\Users\MyName\MyFolder'
os.chdir(myfolder)
GG = dict()
for root, dirs, filenames in os.walk(myfolder):
for f in filenames:
if f.endswith('.shp') and f.startswith('S'):
G = nx.read_shp(f)
pos_x = {k: (round(a, 4), round(b, 4))
for k, (a, b) in enumerate(G.nodes())}
graph_name, graph_ext = os.path.splitext(f)
GG[graph_name] = nx.Graph(name=graph_name)
GG[graph_name].add_nodes_from(pos_x.keys())
然后 S1.shp
关联的图可以被 GG['S1']
访问。