Networkx Как узнать длину определенного ребра в мультидиграфе - PullRequest
1 голос
/ 06 марта 2019

Привет, я загружаю график drive_service из одного места во Франции, и я пытаюсь получить длину определенного ребра ... есть ли вообще это сделать?

import osmnx as ox

name_place = 'Aubervilliers, France'

graph_aubervillier = ox.graph_from_address( name_place ,network_type="drive_service")


graph_aubervillier[348206084][256242027]

AtlasView ({0: {'шоссе': 'жилой', 'геометрия':, 'osmid': 31297114, 'junction': 'окольный', 'oneway': True, 'length': 26,204}})

1 Ответ

4 голосов
/ 06 марта 2019

Когда вы вызываете graph_aubervillier[348206084][256242027], вы возвращаете все возможные ребра между этими двумя узлами.Обратите внимание, что график представляет собой MultiDiGraph, который может иметь несколько ребер между двумя узлами.

Итак, если вы хотите получить все длины между двумя узлами, вам нужно выполнить итерации по объекту AtlasView:

import osmnx as ox

name_place = 'Aubervilliers, France'

graph_aubervillier = ox.graph_from_address(name_place ,network_type="drive_service")

edges_of_interest = graph_aubervillier[348206084][256242027]

for edge in edges_of_interest.values():
    # May not have a length. Return None if this is the case.
    # Could save these to a new list, or do something else with them. Up to you.
    print(edge.get('length', None))
...