gpt4 book ai didi

python - 从 networkx 中的 shapefile 创建图形时如何保留或至少对边缘属性进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:14 24 4
gpt4 key购买 nike

我使用 shapefile 在 networkx 中制作了一个图表:

import networkx as nx
layer = nx.read_shp(path)
G=layer.to_undirected()

操作其边缘属性后,我必须将结果保存在 shapefile 中,因此:

nx.write_shp(G,out_path)

问题是,这个新的 shapefile 将具有完全随机的属性顺序;可以理解,因为属性存储在字典中。我也无法用 OrderedDict 解决这个问题:

# Does NOT work
for edge in G.edges(data=True):
edge = list(edge)
edge[2] = OrderedDict(sorted(edge[2].items()))
edge=tuple(edge)

有没有办法对每条边的属性进行排序或更改顺序?

最佳答案

这个:

for edge in G.edges(data=True):
edge = list(edge)
edge[2] = OrderedDict(sorted(edge[2].items()))
edge=tuple(edge)

对输出(或G指向的对象的内容)没有影响,因为这样做:

edge = tuple(edge)

您仅修改局部变量edge;这不会影响 G.edges(data=True) 返回的值,更不会影响 G 的内部状态。这适用于任何(Python)程序,并且与networkx或您的程序没有任何关系。

因此,除非您编写自己的算法来序列化数据并将其转储到文件中,或者除非您可以告诉 networkx 它应如何序列化数据,否则无法更改文件内容。 ...除非我遗漏了一些东西,但根据 http://networkx.lanl.gov/reference/readwrite.nx_shp.html , write_shp 无法按照您需要的方式进行配置。

关于python - 从 networkx 中的 shapefile 创建图形时如何保留或至少对边缘属性进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com