- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 OSMnx 返回路线图,这些路线图在 networkx 中表示为 MultiDiGraph。
import osmnx as ox
%matplotlib inline
sg = ox.graph_from_point((37.7936516, -122.4503161), distance=100, network_type='all_private')
ox.plot_graph(sg)
这将返回由六个边(灰色)连接的五个节点(蓝点)组成的图。
您会注意到两个节点有两条边连接它们(在右下角)。因此,如果您查看 sg[a][b]
,您将获得与 sg[b][a]
不同的优势。但是,如果您拉 sg[c][d]
,并不总是有 sg[d][c]
(因为单向道路)。
我想将其转换为 MultiGraph,因此我运行 sg_u = sg.to_undirected()
来创建缺失的 sg[d][c]
。但不幸的是,它也会覆盖现有的“反向”边缘。
如果查看“长度”属性,很容易看出:
sg[65283442][65283457]
的长度为 85.36(推测为米)
sg[65283457][65283442]
长度只有41.62
但运行 to_undirected()
后,两者的长度均为 41.62。
有没有办法简单地添加新的“反向”边缘而不是重新定义它?
最佳答案
OSMnx有一个内置函数get_undirected处理将街道网络的 MultiDiGraph 转换为 MultiGraph 的怪癖。
import osmnx as ox
%matplotlib inline
sg = ox.graph_from_point((37.7936516, -122.4503161), distance=100, network_type='all_private')
sgu = ox.get_undirected(sg)
print(sgu[65283457][65283442])
打印:
{0: {'from': 65283442,
'geometry': <shapely.geometry.linestring.LineString at 0x1a0c10b67b8>,
'highway': 'residential',
'length': 85.36240139096256,
'oneway': True,
'osmid': 8915222,
'to': 65283457},
1: {'from': 65283457,
'geometry': <shapely.geometry.linestring.LineString at 0x1a0c10b64a8>,
'highway': 'residential',
'length': 41.620571785809716,
'oneway': True,
'osmid': 8915224,
'to': 65283442}}
sgu
是一个多重图。正如您所看到的,它在这些节点之间保留了两条(即平行的)无向边以及每个节点的所有属性。
此外,是的,OSMnx 图边长为 in meters默认情况下。
关于python - 将 MultiDiGraph 转换为 MultiGraph,而不丢失现有边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394548/
对于 networkx 中的 multiDiGraph,其边由列表边中的元组表示,请问我如何访问或打印出属性字典中的属性元素,例如我怎样才能打印出 multiDiGraph 的长度或类型或 chann
我有一个来自 networkx 包的 MultiDiGraph 类型的有向图 G。 下面两次通话的号码不同。它们不应该是一样的吗? G.number_of_edges() networkx.conve
如果我有一个非常简单的有向多重图 G = nx.MultiDiGraph() G.add_edge('A', 'B', key=1) G.add_edge('B', 'C', key=2) G.add
我有一个多图,其中的边没有权重。我想增加一些权重 G=MultiDiGraph(): …… for u, v, data in G.edges_iter(data=True): G.ed
我有一个包含自环的 NetworkX MultiDiGraph。根据documentation ,这是 MultiDiGraph 的有效属性。 A MultiDiGraph holds directe
我在 networkx MultiDigraph 中有多个等长且彼此平行的线图,我如何遍历这些图并将边添加到具有边的相对节点(注意,节点在嵌套列表中)即连接 2 & 2a、3 和 3a 等 nodes
我对NetworkX的阅读documentation建议这应该有效,但似乎不起作用? 考虑: import networkx as nx g = nx.MultiDiGraph() g.add_nod
MyNetwork 是 networkx.MultiDiGraph 的实例。我想知道是否保证多次运行以下代码会产生完全相同的列表,其中包含 MyNetwork 中的所有边(以及边属性): AllEdg
有没有一种快速方法可以将networkx MultiDiGraph对象转换为DiGraph?我正在创建一个 scale_free_graph使用此代码: import networkx as nx G
我刚刚开始学习 NetworkX 并尝试学习如何将它与 Shapefile 一起使用。 现在我有一个带有道路网络的 .shp 文件,我想用 NetworkX 在图表中表示它,这样我就可以找到 2 个
我正在使用 OSMnx 返回路线图,这些路线图在 networkx 中表示为 MultiDiGraph。 import osmnx as ox %matplotlib inline sg = ox.g
我正在使用 Python 的流行网络库 networkx。从以下代码中,我希望打印的语句是等效的。 import networkx as nx graph = nx.Graph() mgraph =
是否可以使用 connectionstyle 在具有不同曲率的相同节点处以某种方式绘制不同的边? ? 我写了下面的代码,但我得到了所有三个边重叠: import networkx as nx impo
如何在循环中遍历 G(networkx multidigraph)以导出为 OSM 或导出到某个数据库中?或者是否有任何内置函数可以将其导出为 json ? 最佳答案 您可以使用 OSMnx 的 sa
在我的多向图中,我想找到 2 个节点之间所有可能的(简单)路径。我设法获得了所有路径,但无法区分源节点到达目标节点所采用的边(假定它是多有向图)。 例如,我有 A->B->C,其中 (A,B) 和 (
我正在编写一个 QGIS 插件,它将使用 NetworkX 库来操作和分析流网络。我的数据来自代表流网络的形状文件。 (箭头代表水流方向) 在此流网络内有 braids这是我需要保留的重要特征。我将编
我是一名优秀的程序员,十分优秀!