Часто мне или кому то из моих знакомых нужно скачать один конкретный объект из базы данных OpenStreetMap (OSM), не скачивая при этом полного набора данных на регион или страну. Например нужно скачать конкретный административный район, заповедник, озеро или что либо другое. В этой статье я покажу самый удобный и доступный каждому способ скачивания одного объекта из OSM и сохранения его в отдельный векторный слой.
Для работы нам понадобится программа QGIS и модуль OSMInfo. Этот модуль разработан компанией NextGIS с целью просмотра детальной информации по конкретным объектам карты OpenStreetMap из интерфейса QGIS.
UPD: на данный момент в QGIS 3.* описанный в статье модуль не доступен. Для работы с модулем установите себе QGIS 2.* или NextGIS QGIS
Запустите QGIS. Зайдите в управление модулями и установите плагин OSMInfo.
Добавьте на панель слоев карту OpenStreetMap, используя плагин QuickMapServices. Как это сделать смотри на странице «Как добавить геосервис в QGIS».
Приблизь карту к интересующему тебя объекту.
В примере я использовал одно из водохранилищ на территории Харьковской области.
В примере я использовал одно из водохранилищ на территории Харьковской области.
Для использования инструмента «OSMInfo», нажмите меню «Web» → «OSMInfo» → «Получить информацию из OSM».
Или нажмите кнопку «Получить информацию из OSM» на панели инструментов.
Обратите внимание, что когда инструмент «Получить информацию из OSM» активирован, указатель мышки имеет вид стрелки синего цвета. Кликните им по интересующему объекту на карте OpenStreetMap (слой OSM Standart). Откроется окно «OSM Info». Нужно подождать несколько секунд, прежде чем в нем появится информация из OSM про объекты расположенные в месте клика мышкой. Время ожидания зависит от скорости Интернет-соединения и количества объектов.
В окне модуля видим список определенных объектов, на которые накладывается точка клика мышкой.
Если в окне модуля выделить один объект из списка, то контур этого объекта отобразится на карте.
Жму по треугольнику слева от названия нужного объекта.
После этого разворачивается список атрибутов объекта.
После этого разворачивается список атрибутов объекта.
Нажав правой кнопкой мышки по объекту откроем контекстное меню. В нем доступно 2 пункта: «Приблизить» и «Save as temporary layer».
Если нажать «Приблизить», то карта будет спозиционирована так, чтоб определенный объект полностью помещался в область карты.
Для сохранения выделенного объекта в новый слой выбираю пункт «Save as temporary layer».
Видим, что в списке слоев появился новый объект, который называется также как назывался объект в окне «OSM Info». Закрываю окно «OSM Info» нажав на крестик в правом верхнем углу окна.
Открываю атрибутивную таблицу созданного слоя и вижу что в ней есть 1 объект, и для этого оэбъекта есть все атрибуты импортированные из OpenStreetMap.
К сожалению на момент написания статьи у модуля есть 1 важное ограничение — он не получает информацию по полигонам без названия (полигоны у которых не заполнен тег «Name»). Это значит что при помощи этого модуля нельзя скачать безымянный лесной массив или безымянный водоем кликнув по середине этого объекта. Это ограничение связано с ограничениями Overpass, который использует OSM Info для получения данных из OSM. Overpass не воспринимает безымянные объекты как полигоны, и не может соотнести клик по безымянному объекту с этим объектом. Подробнее про технические нюансы работы модуля OSM Info можете посмотреть в соответствующей статье на сайте gis-lab.info
Но есть ЛАЙФХАК, который позволяет обойти это ограничение Overpass!
Нужно кликнуть по краю безымянного объекта. После этого он отобразится в окне «OSM Info» в разделе «Ближайшие». Вместо названия объекта будет отображаться его OSM ID. На примере идентифицирован безымянный луг с наличием только одного тега landuse=meadow. Далее этот безымянный объект можно сохранить как новый слой, по шагам описанным выше в статье.
Смотри видео:
Если вы хотите оперативно получать советы по решению задач в QGIS добавляйтесь в очень полезный Telegram-группу "QGIS взаимопомощь". В это чате уже более полутары тысяч участников, и постоянно идет активное общение и взаимопомощь!
QGIS взаимопомощь✊




Спасибо, полезная статья! Есть еще одно ограничение у этого модуля. Он не работает, когда у выделенного на карте объекта в атрибутах нет типа. И выдает вот такую ошибку:
ОтветитьУдалитьAttributeError: 'NoneType' object has no attribute 'type'
А к сожалению, на карте OSM много таких объектов
С такой ошибкой не сталкивался, но такова уж специфика данных OSM - большое разнообразие не всегда получается корректно обработать.
Удалить