OSMnx: создание пользовательских запросов с альтернативной инфраструктурой - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в запросах OSMnx и Overpass в целом. Я пытаюсь понять правильный способ написания пользовательских запросов при работе с не уличными типами инфраструктуры.

В частности, я пытаюсь понять, почему этот запрос работает

import osmnx as ox

my_custom_filter = '["railway"~"disused"]' 

G = ox.graph_from_point((51.5073509,-0.1277583), 
                      distance = 10000,
                      distance_type = 'bbox', 
                      infrastructure = 'way["railway]',
                      network_type = 'none',
                      custom_filter = my_custom_filter
                       )

Но этот выдает ошибку неверного запроса:

import osmnx as ox

my_custom_filter = '["railway"~"disused"]' 

G = ox.graph_from_point((51.5073509,-0.1277583), 
                      distance = 10000,
                      distance_type = 'bbox', 
                      infrastructure = 'way["railway~"rail"]',
                      network_type = 'none',
                      custom_filter = my_custom_filter
                       )

Обратите внимание, что разница заключается просто в том, что я указал железную дорогу в качестве типа железной дороги в последнем запросе.

См. OSM Railway Guide здесь.

Если кто-нибудь может указать мне на какие-либо ресурсы, которые помогли бы мне лучше понять, как создавать пользовательские фильтры - в частности, пользовательские фильтры с более чем одним фильтром, это было бы также отлично. Например, какой будет правильный синтаксис для добавления дополнительного фильтра клиентов.

1 Ответ

0 голосов
/ 04 мая 2020

Вы просто пропустили " в аргументе своей инфраструктуры. Это работает:

import osmnx as ox
ox.config(log_console=True, use_cache=True)
my_custom_filter = '["railway"~"disused"]' 

G = ox.graph_from_point((51.5073509,-0.1277583), 
                      distance = 10000,
                      distance_type = 'bbox', 
                      infrastructure = 'way["railway"~"rail"]',
                      network_type = 'none',
                      custom_filter = my_custom_filter)

Но выдает ошибку EmptyOverpassResponse, поскольку в этой области поиска нет ничего, соответствующего вашему запросу. Однако вы получите график, если вы измените его, например:

import osmnx as ox
ox.config(log_console=True, use_cache=True)
my_custom_filter = '["railway"!~"disused"]' 

G = ox.graph_from_point((51.5073509,-0.1277583), 
                      distance = 10000,
                      distance_type = 'bbox', 
                      infrastructure = 'way["railway"~"rail"]',
                      network_type = 'none',
                      custom_filter = my_custom_filter)
...