下载基于标签值并集的OSM网络(带有OSMNx)过滤

时间:2019-06-19 11:48:29

标签: openstreetmap osmnx

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

2 个答案:

答案 0 :(得分:1)

osmnx使用Overpass API下载OSM数据。 Overpass API没有or运算符,您尝试使用它。有一个简单的union statement,其意思是“先下载X,然后下载Y”(请参见example at overpass-turbo中的“ highway=cyclewaycycleway=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)