Очистка разделенных дорог на графике для точного подсчета перекрестков на расстоянии х - PullRequest
0 голосов
/ 03 мая 2019

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

Скрипт ниже показывает мою текущую работу с использованием osmnx для создания графа, а затем networkx кратчайший путь для поиска путей по всем узлам.Возвращает счетчик, который находится в пределах расстояния x, а затем среднее значение узлов для ребер.

Я знаю, что у osmnx есть функция чистого пересечения, но она не интегрируется с существующим графиком.

import osmnx as ox
import networkx as nx

location = 'location'
distance = x
net_type = 'drive'

G = ox.graph_from_place(location, buffer_dist=distance, network_type=net_type)
G = ox.project_graph(G)

shortest = nx.shortest_path_length(G, weight='length')

count_list = []
for node in list(shortest):
    int_count = 0
    for key in node[1]:
        if node[1].get(key) <= 400:
            int_count += 1
        else:
            break
    count_list.append(int_count)

intersections = dict(zip(G.nodes, count_list))

nx.set_node_attributes(G, intersections, 'int400')

nodes = list(G.nodes)
data_nodes = list(G.nodes(data=True))
for edge in G.edges(data=True):
    node_from = data_nodes[nodes.index(edge[0])][1]['int']
    node_to = data_nodes[nodes.index(edge[1])][1]['int']
    average = round(((node_from + node_to) / 2))
    edge[2]['int'] = average

Мне бы хотелось, чтобы он учитывал только одно пересечение, где пересекаются дорогиразделенные дороги.

Я совершенно новичок в их использовании, поэтому некоторые из приведенного выше кода могут быть выполнены по-другому.Но мое основное внимание уделяется получению точного количества пересечений для каждого узла / ребра в графике.

Есть ли способ использовать функцию чистых пересечений osmnx и интегрировать ее с существующим графиком, настраивая параметры from / to?атрибуты ребер для новых узлов?

Я думал, что вы могли бы определить, какие узлы удалены, а затем заменить любой экземпляр этого идентификатора новым идентификатором узла, который заменил его, но я незнать, возможно ли это.

Благодарим за помощь.

1 Ответ

0 голосов
/ 08 мая 2019

Есть ли способ использовать функцию очистки пересечений osmnx и интегрировать ее с существующим графиком, настраивая атрибуты from / to ребер для новых узлов?

В настоящее время естьоткрытый запрос на добавление для добавления этой функциональности: https://github.com/gboeing/osmnx/pull/249

Как правило, на этом этапе вы хотите создать проецируемую копию вашего графика, очистить пересечения с точностью до некоторого допуска метра, а затем подсчитать пересечения наэтот график.

...