Получение всплывающих сообщений о велосипедных дорожках с помощью OpenStreetMap и OSMNX - PullRequest
0 голосов
/ 10 июля 2020

Сообщество OSM в Италии начало обновлять OSM с помощью «аварийных» или «всплывающих» велосипедных дорожек, которые многие администрации создают, чтобы гарантировать социальное дистанцирование, в то время как использование общественного транспорта c сокращается. велосипедные дорожки часто просто окрашены, поэтому они помечаются в OSM следующим образом (например, для правой стороны улицы):

шоссе = второстепенные велосипедные полосы = левая сторона: share_busway, правая сторона: полоса

Я хотел бы получить все эти велосипедные дорожки с помощью OSMNX и custom_filter. Я пробовал следующее:


cf = '["cicleway[left side]"~"share_busway"]'

G = ox.graph_from_bbox(44.493251,44.488272,11.330840,11.301927,custom_filter=cf, simplify=True,truncate_by_edge=False)

, но получаю ответ:

osmnx.core.EmptyOverpassResponse: There are no data elements in the response JSON objects

Мне явно не хватает того, как правильно запросить, но я не знаю, как это сделать.

1 Ответ

2 голосов
/ 13 июля 2020

Вы можете запросить с помощью OSMnx комбинации тегов / значений, как описано в документации и использовании примеров . Как вы можете видеть в OSM , например, тег равен cycleway:right, а его значение - lane.

import networkx as nx
import osmnx as ox
ox.config(use_cache=True)
place = 'Bologna, Italia'

# get everything with a 'cycleway' tag
cf = '["cycleway"]'
G = ox.graph_from_place(place, custom_filter=cf)
print(len(G))

# get everything with a 'cycleway:left' tag
cf = '["cycleway:left"]'
G = ox.graph_from_place(place, custom_filter=cf)
print(len(G))

# get everything with a 'cycleway:right' tag
cf = '["cycleway:right"]'
G = ox.graph_from_place(place, custom_filter=cf)
print(len(G))

# get everything with a 'cycleway:right' tag if its value is 'lane'
cf = '["cycleway:right"="lane"]'
G = ox.graph_from_place(place, custom_filter=cf)
print(len(G))

# get everything with a 'cycleway:right' or 'cycleway:left' tag
cf1 = '["cycleway:left"]'
cf2 = '["cycleway:right"]'
G1 = ox.graph_from_place(place, custom_filter=cf1)
G2 = ox.graph_from_place(place, custom_filter=cf2)
G = nx.compose(G1, G2)
print(len(G))

см. Также { ссылка }

...