为了账号安全,请及时绑定邮箱和手机立即绑定

>OSMnx 中的层次结构节点

>OSMnx 中的层次结构节点

宝慕林4294392 2022-11-01 15:02:44
我正在与 OSMnx 和 Networkx 合作解决车辆路由问题。在我试图实现的解决方案中,我需要一些层次较低的节点直接与层次较高的节点连接,但是,如果 OSMnx 可以选择这样做,这会更容易。有人知道OSMnx是否可以做到这一点?谢谢编辑使用 OSMnx,我以这种方式加载具有不同层次结构的图形和道路节点:G = ox.graph_from_place({'city':'Medellín', 'state':'Antioquia'},network_type='drive', buffer_dist=60000,                                 infrastructure='way["highway"]',                                 custom_filter='["highway"~"motorway|trunk|primary|secondary|tertiary|unclassified|residential"]')custom_filter 为我提供了道路的层次结构。假设我有一个位置并计算离该位置最近的节点,如下所示:orig_node = ox.get_nearest_node(G, c_ori,method='haversine') #c_ori = position原来 orig_node 位于层次较低的道路上(住宅和未分类)。我需要知道 OSMnx 是否有办法直接将该节点与具有更高层次结构(主干、主干等)的最近节点连接?谢谢
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

OSMnx 没有内置功能,只能在层次结构的某个级别搜索道路。但是您可以通过简单地制作第二个图表来仅搜索您想要的道路类型来做到这一点:


import networkx as nx

import osmnx as ox

ox.config(log_console=True, use_cache=True)


# graph of all the streets you want to model

place = {'city': 'Medellín', 'state': 'Antioquia'}

cf = '["highway"~"motorway|motorway_link|trunk|trunk_link|primary|secondary|tertiary|unclassified|residential"]'

G = ox.graph_from_place(place, network_type='drive', buffer_dist=60000, custom_filter=cf)


# graph of only the streets you want to search

cf_search = '["highway"~"motorway|motorway_link|trunk|trunk_link"]'

G_search = ox.graph_from_place(place, network_type='drive', buffer_dist=60000, custom_filter=cf_search)


print(len(G)) #40341

print(len(G_search)) #4562


# find a node in the road types you want to search

point = -75.54838, 6.22752

orig = ox.get_nearest_node(G_search, point, method='haversine')

dest = list(G)[0]


# impute edge speeds, add travel times, solve shortest path

G = ox.add_edge_speeds(G)

G = ox.add_edge_travel_times(G)

route = nx.shortest_path(G, orig, dest, weight='travel_time')

len(route) #141


查看完整回答
反对 回复 2022-11-01
  • 1 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号