我正在尝试计算图形每条边的 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 的任何实例,但我不知道这是否可能。
感谢帮助。