首页 > 解决方案 > 在大数据上计算 node_centrality 和 edge_centrality 的性能问题

问题描述

我的本地 Osm 文件包含德国的过滤数据(通过 OSMFilter 过滤)并且仅包含以下高速公路

  1. 高速公路
  2. 高速公路链接
  3. 树干
  4. 中继链接
  5. 基本的
  6. 主链接
  7. 中学
  8. 次要链接
  9. 第三
  10. 三级链接
  11. 住宅
  12. 生活街

我正在尝试简化图形并提取重要信息以进一步最小化我的道路网络。我已按照以下步骤

  1. G3 = ox.simplify_graph(G, strict=True)
  2. G3 = ox.add_edge_lengths(G3);
  3. G3 = ox.remove_isolated_nodes(G3);
  4. node_centrality = nx.closeness_centrality(G3)
  5. nx.set_node_attributes(G3, node_centrality, 'node_centrality')
  6. edge_centrality = nx.closeness_centrality(nx.line_graph(G3))
  7. nx.set_edge_attributes(G3,edge_centrality,'edge_centrality')
  8. ox.save_load.save_graphml(G3,..,..,..)

它等了一整天才看到 GraphML 的输出,但没有看到任何进展。. 我认为 edge_centrality 和 edge_centrality 是高度计算函数,但我如何将这些函数用于我的数据?

标签: pythonopenstreetmapnetworkxosmnx

解决方案


哪个特定步骤导致运行时间长?当 networkx 计算这些度量时,考虑到算法时间复杂度的性质,它们不可避免地会因庞大的网络(例如整个德国的网络)而变慢。如果 networkx 是瓶颈,考虑转换为图形工具并在那里运行算法。


推荐阅读