Overpass не находит все кинотеатры - документация Overpass API

В документации по API-интерфейсу openstreetmap есть следующий пример :

area[name="Bonn"];
node(area)[highway=bus_stop];
node(around:100)[amenity=cinema];
out;

Почему этот запрос не дает в результате Кинополис (в Бонне Бад-Годесберг)? См. Здесь: http://rpubs.com/hrbrmstr/overpass для получения результатов от API. Следующие два изображения показывают, что это действительно ‹100 метров пешком.

введите описание изображения здесь К сожалению, мне не удалось отобразить его графически на карте openstreetmap ... Я не знаю, как сделать остановку автобуса в качестве начальной точки маршрута в веб-интерфейсе ...
Здесь это версия Google-Maps. введите описание изображения здесь


person Rentrop    schedule 29.12.2016    source источник
comment
это просто прблм с дополнительным пакетом. завтра у меня будет время взглянуть.   -  person hrbrmstr    schedule 30.12.2016
comment
@hrbrmstr, это было бы здорово. Спасибо!   -  person Rentrop    schedule 30.12.2016
comment
Открыть билет?   -  person Rentrop    schedule 30.12.2016
comment
нп. я просто укажу на это в проблеме   -  person hrbrmstr    schedule 30.12.2016
comment
Это потому, что для этого кинотеатра нет узла, просто путь?   -  person Spacedman    schedule 30.12.2016
comment
@Spacedman, как мне это проверить?   -  person Rentrop    schedule 30.12.2016
comment
@ Floo0 попробуйте выполнить несколько запросов на overpass-turbo.eu (согласно ответу ниже!)   -  person Spacedman    schedule 30.12.2016
comment
Совершенно нормально, если POI в кинотеатре отображается как в OpenStreetMap, POI не обязательно должны быть узлом для начала. Вам просто нужно принять это во внимание и в своем запросе, иначе вы не получите всех результатов - см. Мой ответ ниже.   -  person mmd    schedule 30.12.2016


Ответы (1)


Поскольку вы запрашивали узлы cinema только в своем примере запроса, результат не будет включать путь 42473787. Вот как должен выглядеть ваш запрос, чтобы вместо этого возвращать пути с amenity=cinema:

area[name="Bonn"];
node(area)[highway=bus_stop];
way(around:100)[amenity=cinema];
(._;>;);
out meta;

Чтобы получить и узлы, и пути в одном запросе, просто используйте объединение:

area[name="Bonn"];
node(area)[highway=bus_stop]->.bus_stops;
( 
  way(around.bus_stops:100)[amenity=cinema];
  node(around.bus_stops:100)[amenity=cinema];
);
(._;>;);
out meta;

Попробуйте это в турбо-режиме на эстакаде!

введите описание изображения здесь

person mmd    schedule 30.12.2016
comment
понимается с точки зрения программирования / хранения данных: node! = way. С точки зрения пользователя: всегда ли мне нужно думать о хранилище данных openstreetmap? Как я могу запросить что-нибудь (node, way, rel и т. Д.) На автобусных остановках? Вид *(around.bus_stops:100)[amenity=cinema]. И второе: все ли автобусные остановки? Если я правильно понимаю запрос, node(area)[highway=bus_stop] вернет только nodes. Могут ли быть еще автобусные остановки типа way? В общем: как добраться до всех остановок автобусов, например *(area)[highway=bus_stop] - person Rentrop; 30.12.2016
comment
Да, в настоящее время вам необходимо явно указать каждый тип в своем запросе. По этой теме есть запрос на улучшение, но он еще не реализован. github.com/drolbr/Overpass-API/issues/150 - есть также 3 остановки bus_stops смоделированы как способ - вы также можете назначить их входу .bus_stops через объединение. - person mmd; 30.12.2016