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

亚历克斯

我已经使用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.htmlwrite_shp它无法按照您需要的方式进行配置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在打印 Networkx 图的边属性时对边的顺序进行排序

Networkx:如何从csv文件创建图形边缘?

如何根据权重对networkx中的边缘进行排序

如何在networkX图形中弯曲边缘

Gremlin / Neptune:按顶点属性对边缘排序

Networkx:如何从图形中的csv文件添加边缘标签

如何将边缘列表读入networkx的图形中?

如何获取networkx图形中边缘权重的位置?

在 kruskal 算法中对边进行排序的最佳选择?

bokeh中的Networkx绘图:如何基于图形边缘权重设置边缘宽度

如何在networkx的边缘中添加新属性?

使用networkx绘制图形时,如何在边缘上使用颜色?

NetworkX-如何从Shapefile创建MultiDiGraph?

合并到数组中时如何对属性键进行排序

在创建NetworkX图形之前从相同的边缘添加权重

在iOS中,放大位图时如何保留锐利的边缘?

如何使代理与NetLogo中的shapefile的属性进行交互

优雅地访问networkx中的边缘属性

Networkx中的“计数”边缘属性是什么?

在csv文件之外的networkx中创建边缘

使用Networkx在图形中不显示边缘-Python

C ++ Priority Queue实现对图形边缘进行排序

从列表添加边缘时,如何阻止Networkx更改边缘的顺序?

Networkx边缘属性

如何更改使用 imshow 创建的图形的图形边缘?

如何监视networkx图形创建的状态?

使用networkx打印python图形时保留左右孩子

根据属性对相邻边缘进行图形化

如何在Java中对属性进行排序?