Начинаем работу с Overpass Turbo – Часть 1

База данных Open Street Map содержит подробную информацию почти о каждом квадратном метре поверхности Земли. Здания, реки, скамейки в парках, публичные туалеты, пабы и миллионы другой полезной информации – все это перенесено на карту и подробно задокументировано.
Open Street Map (OSM) — это карта по типу Google или Bing. Однако многие люди не подозревают, что к обширному набору картографических данных можно получить прямой доступ. Это позволяет использовать их в различных целях, например, для определения местоположения линий электропередач, определения плотности населения, визуализации случаев COVID по регионам или даже для решения челленджов от Quiztime.
Получить доступ к базе данных OSM можно через их API под названием Overpass. Это очень мощный интерфейс, но может не подходить для начинающих, так как требует небольших знаний в кодинге.

Overpass Turbo предоставляет удобный метод доступа к Overpass. С помощью Overpass Turbo вы можете создавать запросы, выполнять их и визуализировать данные на карте. Результаты можно получить в формате CSV или JSON, что упрощает интеграцию в собственные проекты.
Базовая концепция
Хотя Overpass Turbo удобнее для новичка, чем прямой запрос к Overpass; но он не так прост в использовании, как, скажем, Google Maps. Он гораздо мощнее, но построение эффективных запросов требует понимания типов данных, которые поддерживает OSM.
Синтаксис также намного строже. Если вы введете запрос в Overpass Turbo «пятизвездочный отель рядом с Диснейлендом», вы далеко не уедете.
Прежде чем приступить к созданию запросов, стоит ознакомиться с основными типами данных OSM.
Геометрия
В базе данных OSM есть три основных типа объектов. Они известны как геометрии. Каждый объект, представленный на карте OSM, является одним из этих типов.
Нода

Нода – это одна точка на карте. Она имеет уникальный ID, набор координат и тэгов. Эта скамейка в парке рядом с каналом является нодой.

Путь

Рядом со скамейкой находится железная дорога. Линейные объекты не могут быть представлены на карте одной нодой, поэтому тропинки, дороги, реки и автомагистрали представлены несколькими нодами, соединенными вместе и образующими путь. Путь — это просто набор связанных между собой нод.
Пути в OpenStreetMap не ограничиваются линейными характеристиками, такими как железные дороги или каналы. Они также могут представлять собой фигуры, образованные набором нод. Например, граница аэродрома возле Оснабрюка определяется путем соединения отдельных нод для создания многоугольника. Это позволяет точно отобразить на карте нелинейные объекты.

Отношение (Нода + Путь)
В OSM нода представляет собой одну точку, а путь — серию соединенных нод. Чтобы представить маршрут поезда, который включает станции, сигналы, участки пути и мосты, необходимо объединить ноды и пути в один объект «маршрут» с помощью отношений.
Теперь рассмотрим район Хафен в Оснабрюке. Это административный район, состоящий как из географических границ, представленных путями, так и из административного центра, обозначенного одной нодой. Из-за его сложности и комбинации нод и путей для представления района Хафен в OpenStreetMap используется отношение. Это позволяет правильно представить сложные объекты, которые не могут быть классифицированы только как пути или ноды.

Множество путей образуют границу. Одиночная нода в центре относится к административному центру. Это можно увидеть на информационной панели в OSM (щелкните правой кнопкой мыши на карте и нажмите «query features»):

Район Хафен представляет из себя отношение, состоящее из 5 путей и одной ноды.
Тэги
Теги имеют решающее значение для поиска информации в OSM. Объекты в OSM классифицируются как ноды, пути или отношения, содержащие данные о местоположении, но не имеющие описательной информации. Для решения этой проблемы нодам, путям и объектам присваиваются тэги.
Например, первым объектом, который мы рассмотрели, была скамейка в парке, с ID 4340279543, расположенная на широте 52.2910290 и долготе 8.0265765. Однако одних этих данных недостаточно для целей идентификации или поиска.
Для адекватного описания и индексации объектов OSM требуется дополнительная информация, которая достигается за счет использования тэгов. В случае со скамейкой для её описания присвоено несколько меток:

В Overpass Turbo поиск по запросу в свободном формате, например «скамейка в парке», не гарантирует успешных результатов. Поисковые теги должны точно совпадать с тегами, присвоенными участниками OSM. Угадывание названия тега, скорее всего, даст неверные результаты. Мастер запросов в Overpass Turbo окажет помощь, предлагая теги на основе поисковых терминов. Однако для достижения максимальной точности результатов необходимо знать структуру тегов.
TagInfo
Сайт OSM Taginfo позволяет искать теги, которые уже были добавлены в базу данных. С помощью поисковой строки в правом верхнем углу мы можем искать ключи и значения, составляющие теги, чтобы их можно было добавить в запрос.
Допустим, я хочу найти ветряные турбины. Я ввожу термин «ветряная турбина» в поле поиска Taginfo и получаю следующие результаты:

Теги OSM состоят из пар ключ-значение, где ключи представляют основной тип, а значения — подтип. Например, здание=школа или шоссе=магистраль — обычные пары ключ-значение.
Простое использование тега с именем «ветряная турбина» не будет работать в OSM. У тега должны быть и ключ, и значение.
На представленном изображении показано, как люди создавали пары ключ-значение для описания ветряных турбин. Самый популярный тег — generator:method=wind_turbine.
В этом теге ключом является generator:method, а значением — wind_turbine. Стоит отметить, что в базе данных OSM имеется 240,052 объекта, помеченных этой комбинацией, что делает ее наиболее подходящей для использования при поиске ветряных турбин. С другой стороны, если поиск будет осуществляться с использованием тега Wind turbine, то будет найдено только 18 объектов во всей базе данных, что делает маловероятным получение желаемых результатов.
Вот все результаты для
generator:method = wind_turbine в Оснабрюке:

Рамки поиска
Рамки поиска необходимы при работе с запросами Overpass. Они определяют географическую область, в пределах которой нужно искать данные. Рамка поиска определяется путем задания точек границы на севере, юге, востоке и западе. В Overpass эти координаты обычно указываются в запросе API. Однако Overpass Turbo упрощает этот процесс, автоматически создавая граничную область на основе видимой области карты в правом окне. В коде запроса координаты ограничивающего поля представлены тегом {{bbox}}. Overpass Turbo будет искать данные, соответствующие вашему запросу, только в пределах указанной области ограничительной рамки.
Заключение
В этой статье мы рассмотрели основные составные части OSM и Overpass Turbo. В следующем посте мы объединим их вместе, чтобы создать несколько запросов и начать получать данные.
Оригинал статьи можно прочитать по ссылке.
Также подписывайтесь на наш телеграм, чтоб быть в курсе всех новостей.