python - Networkx 给出了错误的节点度数

标签 python networkx osmnx

Networkx 似乎给出了错误的学位,它似乎给了我双倍的预期。我通过以下方式对此进行了测试:

for i in G.nodes:
    print(i, G.degree(i), G.edges(i))

这给出了输出:

326171990 4 [(326171990, 915446299), (326171990, 911571535)]
911571527 2 [(911571527, 911571535)]
911571535 6 [(911571535, 326171990), (911571535, 911571527), (911571535, 6821895165)]
915446298 4 [(915446298, 915446299), (915446298, 915446302)]
915446299 4 [(915446299, 915446298), (915446299, 326171990)]

正如你所看到的,它似乎给出了应有的双倍度数。这是针对具有多个节点的多重图,该多重图是从使用 osmnx 库创建的 MultiDiGraph 转换而来的。经过进一步检查后我发现的一个问题是,过去指向一个方向的边在节点的度数中得到了正确的考虑。 Osmnx 将两条道路表示为每个方向各一条的两条边,这可能就是原因,如果是这样,为什么这条边不会被列出两次。任何有关此问题的帮助将不胜感激。

最佳答案

作为引用,这里的答案是使用OSMnx的get_undirected函数从 MultiDiGraph 转换为 MultiGraph。这可以处理从道路中心线边缘的有向图转换为无向图(其中单个边缘代表单个物理路段)的怪癖,包括确保在几何形状不同时保持平行边缘。当您想要使用 OSMnx 获得无向街道网络表示时,此函数是最佳选择。

关于python - Networkx 给出了错误的节点度数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62426198/

相关文章:

python - python标准库中的装饰器(特别是@deprecated)

python - 异常处理 - 如何处理用户输入中的无效数据类型?

python - networkx - 未知节点位置错误

python - 在 networkx 图中查找给定长度的所有路径/步行

python - 在 Python 循环中创建多个变量/字符串

python - 如何干净利落地避免递归函数中的循环(广度优先遍历)

OSMnx - 图形边缘中缺少标签

python - OSMnx: 最好在 "gdf_from_place"中指定位置

python - 使用OSMnx根据OSM highway=* key : maxspeed.评估行程时间可能吗?

python - 如何抓取网站主页的其他页面