Проблема производительности для расчета node_centrality и edge_centrality для больших данных - PullRequest
0 голосов
/ 03 ноября 2018

My Local Osm File содержит отфильтрованные данные (отфильтрованные через OSMFilter) Германии и содержит только следующие магистрали

  1. Автомагистраль
  2. motorway_link
  3. багажник
  4. trunk_link
  5. 1012 * первичный *
  6. primary_link
  7. Вторичный * * 1016
  8. secondary_link
  9. 1020 * третичный *
  10. tertiary_link
  11. 1024 * жилой *
  12. living_street

Я пытаюсь упростить график и извлекать важную информацию, чтобы еще больше минимизировать мою дорожную сеть. Я выполнил следующие шаги

  1. G3 = ox.simplify_graph (G, строгий = 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 - это высокоуровневые вычислительные функции, но как я могу использовать эти функции для своих данных?

1 Ответ

0 голосов
/ 13 ноября 2018

Какой конкретный шаг учитывает длительное время выполнения? По мере того, как networkx рассчитывает эти показатели, они неизбежно будут медленными с огромной сетью (такой как сеть всей Германии), учитывая характер временной сложности алгоритмов. Если networkx является узким местом, подумайте о преобразовании в graph-tool и запуске там алгоритмов.

...