1

我想从 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中的建议删除边缘?

4

2 回答 2

2

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

# 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)
于 2020-10-16T09:11:13.507 回答
1

osmnx 使用 Overpass API 下载 OSM 数据。Overpass APIor在您尝试使用它的方式中没有运算符。有一个简单的联合声明,它的意思是“下载 X,然后下载 Y”(参见overpass-turbo中的“highway=cyclewaycycleway=lane”示例)。我想你必须在 osmnx 中做同样的事情。

于 2019-06-20T07:30:09.413 回答