首页 > 解决方案 > 下载基于标签值并集的 OSM 网络(使用 OSMNx)过滤

问题描述

我想从 OSM 下载一个网络,该网络具有基于高速公路和自行车道标签的 2 个过滤器的联合。

    network=ox.core.graph_from_place ( place_name, custom_filter='["highway"~"cycleway"]["bicycle"!~"no”]’  

此命令使 2 个过滤器相交。所以它得到所有的边缘,高速公路=自行车道,并且自行车道标签不同于值“no”。

但是,如果我想与过滤器联合,["cycleway”~"lane”]我不知道 OSM 的布尔“或”运算符。

我尝试了以下方法,但它不起作用:

    network=ox.core.graph_from_place ( place_name, custom_filter='["highway"~"cycleway"]["bicycle"!~"no”] or ["cycleway”~"lane”]’

    network=ox.core.graph_from_place ( place_name, custom_filter='["highway"~"cycleway"]["bicycle"!~"no”] | ["cycleway”~"lane”]’ 

有没有一种简单的方法来编写自定义过滤器来合并标签值?或者我应该下载比我需要的更多,然后按照#151中的建议删除边缘?

标签: openstreetmaposmnx

解决方案


这就是我基于基础设施过滤器联合提取网络的方式。

# get graphs of different infrastructure types, then combine
place = 'Berkeley, California, USA'
G1 = ox.graph_from_place(place, custom_filter='["highway"~"cycleway"]')
G2 = ox.graph_from_place(place, custom_filter='["cycleway”~"lane”]')
G = nx.compose(G1, G2)

推荐阅读