我想从OSM下载一个包含2个基于公路和自行车道标签的过滤器的网络。
network=ox.core.graph_from_place ( place_name, custom_filter='["highway"~"cycleway"]["bicycle"!~"no”]’
此命令使两个过滤器相交。因此,它获得了Highway =单车道,以及单车道标签不同于值“ no”的所有边。
但是,如果我想与过滤器["cycleway”~"lane”]
结合使用,我不知道OSM的布尔值“ OR”运算符。
我尝试了以下操作,但不起作用:
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中的建议删除边缘?
答案 0 :(得分:1)
osmnx使用Overpass API下载OSM数据。 Overpass API没有or
运算符,您尝试使用它。有一个简单的union statement,其意思是“先下载X,然后下载Y”(请参见example at overpass-turbo中的“ highway=cycleway
或cycleway=lane
”)。我猜你必须在osmnx中做同样的事情。
答案 1 :(得分:0)
这是我基于基础结构过滤器联合提取网络的方法。
# 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)