Використання даних OSM у QGIS

QGIS (раніше Quantum GIS) — це повнофункціональна міжплатформна геоінформаційна система з відкритим кодом. За допомогою QGIS ви можете будь-коли отримати доступ до актуальних даних OSM, вибрати теґи, які потрібно додати, і легко експортувати їх у просту у використанні базу даних SQLite або Shapefile.

У цьому розділі ми розглянемо кроки, необхідні для цього. Ми припускаємо, що ви вже завантажили та встановили QGIS 3.x. Якщо ви ще цього не зробили, ви можете завантажити його з http://www.qgis.org/en/site/forusers/download.html.

Ми будемо використовувати втулок QuickOSM для імпорту даних із бази даних OpenStreetMap. Щоб його встановити, відкрийте вікно Керування втулками з меню Плагіни. Знайдіть QuickOSM і встановіть його. Це додасть пункт до меню «Вектор».

Отримання даних з бази

Перше, що ми зробимо, це отримаємо деякі актуальні дані OSM. Ми можемо зробити це різними способами. Втулок QuickOSM дозволяє нам отримувати великі обсяги даних, оскільки він використовує API Overpass, а не основний сервер бази даних OSM.

  • Відкрийте QGIS та перейдіть до меню Vector -> QuickOSM -> QuickOSM…

quickosm

  • Тут ви можете вибрати один із кількох параметрів. Якщо мапа вже показує потрібну вам ділянку, оберіть зі списку “Canvas extent”. Якщо у вас є шар, завантажений у QGIS із правильним розміром, виберіть “Layer extent” та виберіть шар, який ви хочете використовувати. Використання стандартного “In” вимагає наявності зв’язка чи полігону з такою назвою. В іншому випадку виберіть “Around”, і точки з такою назвою буде достатньо. Ви можете вибрати периметр (типово 1000 м) навколо цієї точки, звідки будуть завантажуватися дані з бази даних.

  • Натисніть “Run Query”.
  • Після закінчення процесу завантаження ви отримаєте сповіщення про його закінчення. Дані будуть завантажені до трьох робочих шарів, по одному для точок, ліній та полігонів, відповідно.

quickosm loaded

Імпорт готових вибірок

Є кілька варіантів отримання готових вибірок місцевості. https://wiki.openstreetmap.org/wiki/Planet.osm#Country_and_area_extracts містить список кількох вебсайтів. Просто виберіть файл .osm або .pbf і завантажте його.

Ви можете використати QuickOSM, щоб імпортувати файли, обравши пункт ‘OSM File’ на панелі ліворуч. QuickOSM допомагає перетворювати OSM-файли в формат зрозумілий QGIS, ви можете використовувати звичайний імпорт векторних шарів:

  • Меню Layer -> Add Layer -> Add Vector Layer…
  • У полі джерело, оберіть ваш файл та натисніть “Add”.
  • Ви можете обрати один чи більше типів шарів з даних вашого файлу.

import osm

  • Натисніть “OK” після чого ви можете закрити це вікно та побачити в основному вікні QGIS нові шари.

import osm loaded

Експорт даних

Для експорту шару в його контекстному меню оберіть Export -> Save Features as… Серед різноманітного переліку форматів, що серед інших містить Shapefile, GeoJSON, PostgreSQL dump, SQLite, оберіть потрібний вам. Інші параметри у вікні експорту будуть показуватись в залежності від обраного формату.

export

Ви можете обрати чи потрібно додавати експортований файл до переліку шарів (типово увімкнено).

Робота з даними

Ми не можемо дати вам навіть приблизний огляд того, що ви можете робити з QGIS, але є багато чудових посібників і книг, які допоможуть вам крок за кроком освоїти програмне забезпечення. Але оскільки дані OSM, імпортовані одним із описаних вище методів, мають свої теги, закодовані особливим чином, ось приклад, як з ними поводитись (кому цікаво, прикладом є вибірка pitcairn-islands-latest зі сторінки завантаження Geofabrik для Австралії та Океанії). Ви можете переглянути дані векторного шару за допомогою ‘Відкрити таблицю атрибутів’ із контекстного меню шару, у цьому випадку шару полігонів.

attribute table

Тут видно, що всі пари ключ-значення для теґів різних об’єктів організовані в спеціально відформатований текстовий рядок у полі ‘other_tags’. Цей тип зберігання даних у PostgreSQL називається «hstore» і є стандартом для даних OSM.

У цьому прикладі полігони – це переважно острови, ліси та будівлі. Спочатку вони показуються таким чином, що острови покривають усе інше. Давайте спродуємо візуалізувати їх по-іншому, щоб відчути, як ідентифікувати різні об’єкти. Скиньте поточні атрибути. У контекстному меню шару полігонів виберіть Properties та перейдіть у цій формі до вкладки Symbology.

symbology

Для початку змініть тип позначок з “Single symbol” на “Rule based” скориставшись списком вгорі вікна.

symbology rule based

Поточні правила показу даних будуть показані у вигляді правила, але без фільтрів. Ми можемо змінити правило натиснувши на кнопку позначену на зображені нижче рожевим прямокутником.

symbology edit rule

Ми б хотіли показувати будинки по іншому. Тобто нам потрібно визначити правило, яке б використовувало допомагало нам використовувати властивості шару. Механізм обробки виразів не в змозі напряму обробляти рядки hstore. Натомість нам допоможе функція в цьому, як показано на скриншоті, hstore_to_map(other_tags)['building'] is not NULL, яка перетворює рядок ‘other_tags’ в набір даних ключ-значення з яких ми можемо вибрати потрібні нам дані, ключ ‘building’ з непорожнім значенням. Тепер ми можемо обрати колір та тип заливки для будинків. Натисніть ‘ОК’ для застосування правила. Тепер ви можете додати інші правила. Натисніть на кнопку з :heavy_plus_sign: внизу вкладки Symbology. Додамо подібні правила для дерев та трави. Після закінчення вкладка Symbology виглядатиме наступним чином:

symbology polygon rules

Як додатковий бонус ми можемо швидко отримати кількість об’єктів для правил. Натисніть крайню праву піктограму в рядку внизу (символ суми), і стовпець ‘count’ буде заповнено, повідомляючи нам, що у нас є 150 будівель у цьому шарі.

Ви можете додати підписи так само як тільки що ми це зробили з візуалізацією. Вкладка ‘Labels’ є наступною після вкладки Symbology. У більшості випадків у вас може виникнути потреба додати назви до об’єктів на мапі. Для цього скористайтесь тим же прийомом, який ми використовували на вкладці Symbology для відбору даних – hstore_to_map(other_tags)['name'].

labels

Після додавання підписів до шару з полігонами та точками у вас має вийти щось подібне:

done

Підсумки

Описаний тут процес дозволяє у простий спосіб отримувати актуальні дані з OSM для ваших проєктів в QGIS. Після того як ви отримали дані у вигляді шарів QGIS ви можете експортувати їх виглядів shapefiles, застосовувати до них фільтри та запити, та й таке інше. За більш докладними відомостями по роботі з QGIS звертайтесь до меню Довідка.