QGIS
вільна настільна ГІС
Що це таке
QGIS — це настільна програма для перегляду, редагування та аналізу геопросторових даних. Проєкт стартував у травні 2002 року під назвою Quantum GIS, і перша мета була скромною: переглядач геоданих. Відтоді він виріс у повноцінну геоінформаційну систему, яка відкриває шари з файлів, просторових баз даних і вебсервісів карт, накладає їх на одну карту, редагує геометрію й атрибути, проганяє над ними аналіз і верстає результат у друковану карту, атлас чи звіт.
QGIS є офіційним проєктом Open Source Geospatial Foundation, поширюється за GNU General Public License, написаний на C++ з бібліотекою Qt і працює на більшості Unix-платформ, у Windows і macOS. Новий випуск виходить приблизно раз на чотири місяці. Кожен третій із них, починаючи з 2.8, отримує статус випуску з довготривалою підтримкою (LTR) і супроводжується, доки його не замінить наступний такий випуск, а найновіша гілка щомісяця отримує виправний випуск. На момент написання це 3.44.15 і 4.2.3.
Багато з того, що читає QGIS, він читає через інші проєкти. Векторні файли надходять через драйвери GDAL, звідси й такий довгий перелік форматів. Растри приходять тим самим шляхом. Таблиці в PostGIS, SpatiaLite, SQL Server та Oracle читаються напряму, і власний опис можливостей проєкту наголошує, що дані показуються в їхньому рідному форматі й проєкції без перетворення на якийсь внутрішній формат.
Коли QGIS стає спільним інструментом команди, важать ще чотири складники.
Одиниця роботи — проєкт. Файл .qgs — це XML, що описує джерело даних кожного
шару разом зі стилем, підписами, формами й макетами друку. Файл .qgz — це
zip-архів із тим самим XML і файлом .qgd з допоміжними даними. Проєкт можна
також зберегти в GeoPackage або в базі PostgreSQL поруч із шарами, які він
описує.
Processing — це рамка для аналізу: набір алгоритмів від власного провайдера QGIS
і від GDAL, GRASS як ще один провайдер, конструктор моделей, що зшиває алгоритми
в граф, пакетний режим та історія кожного запуску. Ті самі алгоритми працюють і
без робочого столу, через утиліту командного рядка qgis_process:
qgis_process run native:reprojectlayer -- \
INPUT=dorohy.shp TARGET_CRS=EPSG:32636 OUTPUT=dorohy.gpkg
PyQGIS — це інтерфейс Python, на якому стоять плагіни, вбудована консоль і окремі скрипти. А QGIS Server публікує файл проєкту в мережі як стандартні сервіси OGC — WMS, WFS, WCS та OGC API Features — і працює за вебсервером як застосунок FastCGI або CGI.
Чому це важливо
Частина роботи з геоданими лишається ручною, хоч яким добрим буде конвеєр: вирішити, що саме помилкове — межа ділянки чи аерофотознімок під нею, обвести контур будівлі за поверхнею LiDAR, переглянути передані клієнтом дані перед завантаженням. Рішення, на яке впливає QGIS, — у якому інструменті відбувається таке судження і що лишається після нього.
Першу половину визначають ліцензія й платформа. Місця купувати не треба, а той самий випуск ставиться на Linux, macOS і Windows, тож консультант, співробітники клієнта й сервер збірки можуть запускати саме ту версію, в якій зроблено проєкт. Комерційна настільна програма Esri, ArcGIS Pro, працює лише у Windows.
Друга половина стосується того, що переживе сеанс роботи. QGIS читає PostGIS
напряму, тож виправлення потрапляє в ту саму таблицю, з якої бере дані
застосунок, і звіряти потім експорт не доводиться. Історія Processing зберігає
кожен алгоритм із параметрами, і кожен запис можна скопіювати як команду Python
або як команду qgis_process. Виправлення, знайдене вручну в діалоговому вікні,
стає рядком у скрипті, який далі проганяється на кожній новій поставці даних.
Файл проєкту йде ще далі: QGIS Server публікує його без змін, тож стиль,
налаштований на робочому столі, і є тим стилем, який вебклієнт отримує через
WMS.
Ціна здебільшого в дисципліні. Проєкт посилається на дані, яких сам не містить, тож переноситься рівно настільки, наскільки дозволяють збережені в ньому шляхи. А вибір між LTR і найновішим випуском — справжній вибір: один змінюється повільно, інший приносить нові можливості кожні чотири місяці.
Як це виглядає на практиці
На цьому сайті QGIS з’являється як місце, де просторові дані переглядали й виправляли вручну, поруч з інструментами, що робили масову роботу.
З 2015 до 2022 року, на посаді керівника команди розробки GIS-програмного забезпечення, через цю роль пройшло постачання понад тридцяти GIS-проєктів — від розробки й розгортання до підтримки після запуску. QGIS і JOSM були інструментами для самої роботи з даними. Під ними лежав PostgreSQL із PostGIS, GDAL/OGR переносив дані між shapefile, GeoJSON, GeoTIFF, KML і векторними плитками, а попереду стояли вебкарти на Mapbox GL і Leaflet. Тематично проєкти тягнулися від цифрової 2D- і 3D-картографії та обробки даних LiDAR, через георектифікацію й векторизацію, аж до карт приміщень і навігації в них.
Пізніше, у 2022–2024 роках, QGIS став одним з інструментів виправлення: роль інженера даних у масштабному проєкті геопросторової аналітики вимагала знайти й усунути понад 1 000 проблем у географічних даних і часових рядах. QGIS працював разом із GDAL та ArcGIS, і цією комбінацією діагностували й виправляли просторові помилки, а очищення, що повторювалося знову й знову, перейшло до скриптів на Bash. Просторові запити й індексацію обслуговував PostGIS, і ця робота допомогла скоротити на 35% час виконання просторових запитів.
Де виникають проблеми
Робочий стіл робить так, що просторові дані на екрані виглядають правильно, і саме там ховається більшість проблем.
Шар опиняється не там. QGIS на льоту перепроєктовує кожен шар у систему
координат проєкту, тож шари з різних систем лягають один на одного рівно, якщо
кожен шар правильно оголошує власну систему. Shapefile, що прийшов без файлу
.prj, не оголошує нічого, і залежно від налаштування в Options QGIS лишає шар
із невідомою системою, питає про неї або мовчки призначає систему проєкту чи
типову. Як виправляти, залежить від того, яку саме помилку зроблено. Якщо
координати правильні, а хибне лише оголошення, Assign projection або Define
projection змінюють оголошення і не зсувають жодної точки. Якщо ж координати
справді в іншій системі, їх перераховує Reproject layer. Find projection з тієї
самої групи інструментів показує системи, в яких охоплення шару лягло б на
вибрану ділянку, і перетворює здогад на короткий список.
Площі виходять у квадратних градусах. У мові виразів є дві схожі функції
площі. $area слідує налаштуванням еліпсоїда й одиниць проєкту, тож за
вибраного еліпсоїда дає еліпсоїдну площу у вибраних одиницях. area($geometry)
завжди рахує на площині у власній системі шару й повертає її одиниці, тож для
шару в довготі й широті дає квадратні градуси — маленьке дробове число, яке в
таблиці виглядає цілком правдоподібно. Для будь-якого числа, яке читатиме
людина, беріть $area або перед вимірюванням перепроєктуйте шар у прямокутну
систему, що пасує до місцевості.
Проєкт відкривається з половиною шарів. Проєкт зберігає, де лежать дані кожного шару, а не самі дані. Варто перенести теку, перейменувати файл чи відкрити проєкт на комп’ютері колеги — і збережені шляхи ведуть у нікуди. QGIS тоді показує діалог Handle Unavailable Layers, і якщо шари залишити, проєкт відкривається з ними в списку, але порожніми, доки кожне джерело не полагодять. Якщо проєкт зберігає шляхи відносно файлу проєкту, а це налаштування у властивостях проєкту, теку з проєктом і даними можна переносити як одне ціле. Для спільної роботи проєкт і шари тримаються разом, коли проєкт зберігається в тій самій базі PostgreSQL чи GeoPackage, що й шари.
Те саме виправлення наступного місяця проклацують знову. Виправлення,
зроблене в діалоговому вікні, лишає дані в порядку, а метод — у чиїйсь пам’яті.
Наступна поставка з тією самою вадою знову виправляється вручну, щоразу трохи
інакше. Скопіюйте запуск з історії Processing як команду qgis_process того
разу, коли він уперше спрацював, і додайте її до скрипту, що завантажує
поставку.
Що почитати далі
- Foreword — власний опис проєкту: що таке QGIS, з чого він почався і за якою ліцензією поширюється.
- Road Map — цикл випусків, як обирають випуски з довготривалою підтримкою, і поточний розклад.
- Working with Projections — перепроєктування на льоту і що QGIS робить із шаром без системи координат.
- Working with Project Files
— формати
.qgsі.qgz, проєкти в базах даних і відновлення зламаних шляхів. - Using processing from the command line
—
qgis_process, його команди і як передавати параметри. - Introduction — огляд у посібнику QGIS Server: які сервіси він публікує з проєкту.