Заверните всё, пожалуйста

Overpass API версии 0.7.54 вышел больше года назад и в нём было так много нового, что Роланд завёл блог проекта, чтобы похвастаться полезными применениями. Язык запросов был и так сложен, но там появились выражения: если, например, добавить (if:count_tags() == 0), то получите объекты без тегов. А чтобы выбрать дороги с повышенной скоростью, пригодится (if:number(t[maxspeed])>110). Наконец, появился важный селектор отбора по идентификатору (id:123,456,...).

Со дня на день выйдет следующая версия API. Роланд уже неделю обновляет описание языка запросов в вики. Там, разумеется, много непонятной дичи вроде операторов цикла и условия, а также «цикла до тех пор, пока результат не стабилизируется». Добавили новые операторы для (if:...): is_closed() и length() для линий, count_by_role(...) для отношений.

Есть и штука, которая будет немедленно полезна каждому, кто когда-либо делал запросы: фильтр nwr, который объединяет в себе node, way и rel. Больше не нужно перечислять все три типа в запросах по тегу: достаточно nwr[shop=pet] — и получите все зоомагазины, каков бы ни был их тип. И самое главное — фильтр уже работает на основном сервере!

В списке запросов для тестирования новой версии можно найти пример, который ещё лучше сократит ваши запросы:

nwr[amenity=recycling](if: t["recycling:glass"] || t["recycling:paper"] || t["recycling:clothes"]);
Поделиться
Отправить
2018   overpass
1 комментарий
freeExec

А вот другие комбинации не добавили, да и ошибка до сих пор сообщат только о

For the attribute «type» of the element «query» the only allowed values are «node», «way», «relation» or «area».