0

我正在尝试计算图形每条边的 x 距离内的交叉点数量,然后使用颜色渐变显示,但是分开的道路显示为多个交叉点,而不仅仅是一个。

下面的脚本显示了我当前使用 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 clean intersections 函数并将其与现有图集成,将边缘的从/到属性调整到新节点?

我在想你可能能够识别哪些节点被删除,然后用替换它的新节点 id 替换该 id 的任何实例,但我不知道这是否可能。

感谢帮助。

4

1 回答 1

0

有没有办法使用 osmnx clean intersections 函数并将其与现有图集成,将边缘的从/到属性调整到新节点?

目前有一个拉取请求打开以添加此功能:https ://github.com/gboeing/osmnx/pull/249

一般来说,此时,您需要创建图形的投影副本,将交叉点清理到某个米容差范围内,然后计算该图形上的交叉点。

于 2019-05-07T23:56:45.057 回答