OSMInfo - получение информации об объектах в точке или облачная идентификация: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 19: Строка 19:


==Идея==
==Идея==
Благодаря OpenStreetMap и прекрасному Overpass API у вас теперь есть возможность получить всю информацию по любой точке без подгрузки каких бы то ни было дополнительных слоёв с помощью нашего нового модуля для QGIS — OSMInfo.
Время, которое мы тратим на ответы на вопросы выше можно было бы существенно сократить, если бы, по аналогии с обычной идентификацией, у нас был инструмент облачной идентификации посылающий запросы к некой общедоступной базы географических данных. Такой сервис позволил бы в любой точке получить структурированную информацию по объекту и его окружению без необходимости подгружать дополнительные слои или изменять масштабы отображения.
 
К счастью, подобная база данных существует и называется [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 сразу показывает геометрии для отношений;