OSMInfo - получение информации об объектах в точке или облачная идентификация: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 19: | Строка 19: | ||
==Идея== | ==Идея== | ||
Время, которое мы тратим на ответы на вопросы выше можно было бы существенно сократить, если бы, по аналогии с обычной идентификацией, у нас был инструмент облачной идентификации посылающий запросы к некой общедоступной базы географических данных. Такой сервис позволил бы в любой точке получить структурированную информацию по объекту и его окружению без необходимости подгружать дополнительные слои или изменять масштабы отображения. | |||
К счастью, подобная база данных существует и называется [http://osm.org OpenStreetMap]. Более того, существует и сервис позволяющий отправлять запросы к этой базе и получать ответы - [http://overpass-turbo.eu Overpass API]. Нам осталось только создать удобный инструмент отправки и получения результатов и их представления в удобной форме. | |||
==Реализация== | ==Реализация== | ||
===Запросы к Overpass API=== | ===Запросы к Overpass API=== | ||
В процессе работы нам нужно отправлять три запроса к [http://overpass-api.de/api/interpreter интерпретатору Overpass]: | |||
1. Близкие объекты (nearby features) - запрос around: | |||
<pre>[timeout:30][out:json];(node(around:DIST,LAT,LON);way(around:DIST,LAT,LON));out tags geom;relation(around:DIST,LAT,LON);</pre> | |||
2. Объекты, охватывающие точку (enclosing features) - запрос is_in: | |||
<pre>[timeout:30][out:json];is_in(%s,%s)->.a;way(pivot.a);out tags geom;relation(pivot.a);out tags bb;</pre> | |||
3. Геометрии для отношений | |||
<pre>[out:json];rel(RELATION_ID);out geom;</pre> | |||
===Модуль OSMInfo=== | ===Модуль OSMInfo=== | ||
OSMInfo это реализация этих запросов в виде единого инструмента идентификации. | |||
[http://plugins.qgis.org/plugins/osminfo/ Официальная страница] модуля. | |||
[https://github.com/nextgis/osminfo Репозиторий на Github]. Сообщения об ошибках и предложения по улучшению лучше оставлять в [https://github.com/nextgis/osminfo/issues трекере]. | |||
===Отличия от Query Features на osm.org=== | |||
Аналогичный инструмент уже работает на сайте OpenStreetMap - Query Features ([http://www.openstreetmap.org/query?lat=55.75382&lon=37.62927#map=17/55.75410/37.63205 пример]). | |||
Основные отличия OSMInfo от Query Features: | |||
* Query Features это функция страницы osm.org со всеми ограничениями, например вы не можете загрузить туда свои данные, OSMInfo - плагин для QGIS | |||
* В отличие от Query Features, OSMInfo сразу показывает геометрии для отношений; | |||
* | |||
* |
Версия от 00:24, 2 января 2016
Введение
Если вы при работе с ГИС часто меняете локации и имеете дело с большим разнообразием объектов, то наверняка вы сталкивались со следующими вопросами (в любой последовательности).
1. Географический контекст объекта - "Где это?"
Несмотря на то, что все в ГИС имеет координаты, мало кто умеет умеет превращать их в географическое описание в уме и значительную часть времени при работе с ГИС мы тратим на то, чтобы понять географический контекст объекта, на который мы сейчас смотрим. Допустим вы открыли слой с некими объектами, они разбросаны по значительной территории и открыв один из них, возникает первый вопрос - "где он?". Обычно мы отвечаем на этот вопрос подгружая дополнительные слои с административно-территориальным делением: границами стран, областей, районов и т.д., много раз меняем масштаб.
2. Идентификация объекта - "Что это?"
Окей, вы загрузили данные и знаете где находится объект и теперь вам нужно понять что это. Стандартным решением этой проблемы является идентификация, в любых настольных ГИС есть способ щелкнуть по объекту и посмотреть про него всю информацию, содержащуюся в атрибутивной таблице. Это не поможет, если таблица атрибутов не полная и не содержит нужную вам информацию или вы вообще работаете с изображениями и там нет никакой таблицы атрибутов.
Частным встречающееся следствие этого - скрытие (или точнее недораскрытие) информации рендерером. Понятно, что информации об объекте обычно гораздо больше, чем можно показать графически, поэтому создателями базовых подложек информация показывается выборочно. В результате мы мучаемся с тем, что не показывает OSM Mapnik, MapQuest или любая другая растровая подложка на базе OpenStreetMap.
Идея
Время, которое мы тратим на ответы на вопросы выше можно было бы существенно сократить, если бы, по аналогии с обычной идентификацией, у нас был инструмент облачной идентификации посылающий запросы к некой общедоступной базы географических данных. Такой сервис позволил бы в любой точке получить структурированную информацию по объекту и его окружению без необходимости подгружать дополнительные слои или изменять масштабы отображения.
К счастью, подобная база данных существует и называется OpenStreetMap. Более того, существует и сервис позволяющий отправлять запросы к этой базе и получать ответы - Overpass API. Нам осталось только создать удобный инструмент отправки и получения результатов и их представления в удобной форме.
Реализация
Запросы к Overpass API
В процессе работы нам нужно отправлять три запроса к интерпретатору Overpass:
1. Близкие объекты (nearby features) - запрос around:
[timeout:30][out:json];(node(around:DIST,LAT,LON);way(around:DIST,LAT,LON));out tags geom;relation(around:DIST,LAT,LON);
2. Объекты, охватывающие точку (enclosing features) - запрос is_in:
[timeout:30][out:json];is_in(%s,%s)->.a;way(pivot.a);out tags geom;relation(pivot.a);out tags bb;
3. Геометрии для отношений
[out:json];rel(RELATION_ID);out geom;
Модуль OSMInfo
OSMInfo это реализация этих запросов в виде единого инструмента идентификации.
Официальная страница модуля.
Репозиторий на Github. Сообщения об ошибках и предложения по улучшению лучше оставлять в трекере.
Отличия от Query Features на osm.org
Аналогичный инструмент уже работает на сайте OpenStreetMap - Query Features (пример).
Основные отличия OSMInfo от Query Features:
- Query Features это функция страницы osm.org со всеми ограничениями, например вы не можете загрузить туда свои данные, OSMInfo - плагин для QGIS
- В отличие от Query Features, OSMInfo сразу показывает геометрии для отношений;