Теоретичний матеріал та презентація до Теми №5
4. Просторові запити у SQL
Просторові запити є розширенням реляційної мови SQL, що дозволяє виконувати вибірку, обчислення та аналіз даних на основі їхнього географічного положення, форми та топологічних взаємозв'язків [27; 29].
Просторовий SQL (Spatial SQL) – це сумісна мова для роботи з просторовими даними, що дозволяє використовувати геопросторовий аналіз, просторову науку про дані та розробку додатків [20].
Вона надає користувачам ГІС та геопросторових даних можливість працювати в тому ж місці, що й інші дані в базах даних та сховищах даних, усуваючи традиційну ізоляцію між ГІС та іншими сферами організації.
Просторовий SQL підтримує розширені операції, такі як просторове моделювання та машинне навчання, в тому ж місці, де знаходяться дані [20].
Spatial SQL - це не просто мова запитів. Вона переростає ці межі, а сфера її застосування виходить далеко за межі простого зберігання просторових даних у базах даних. Вона забезпечує швидший просторовий аналіз, підтримує роботу просторових застосунків, уможливлює аналіз просторових даних (spatial data science) і машинне навчання, а також багато іншого [20].
Spatial SQL — це універсальна мова для роботи з просторовими даними, що забезпечує можливості геопросторового аналізу, аналізу просторових даних і розробки застосунків.
Вона дозволяє фахівцям у сфері ГІС та геопросторових технологій працювати з даними безпосередньо там, де вони зберігаються (у базах даних і сховищах даних), усуваючи традиційні бар'єри між ГІС та іншими підрозділами організації.
Spatial SQL підтримує виконання складних операцій, таких як просторове моделювання та машинне навчання, безпосередньо в середовищі зберігання даних [20].
Spatial SQL використовує ті самі елементи й структуру, що й стандартна мова SQL, але дозволяє працювати з додатковими типами даних: GEOMETRY (геометрія) або GEOGRAPHY (географія).
Як змінюється Spatial SQL?
Spatial SQL еволюціонує від компонента мови запитів до бази даних у повноцінний інтегрований елемент сучасного стеку ГІС та геопросторових технологій. Щоб зрозуміти суть цих змін, розгляньмо широкий спектр сценаріїв використання Spatial SQL та ролі фахівців, які їх застосовують [20]:
Адміністратор бази даних може використовувати Spatial SQL для зберігання, керування, оновлення та надання кінцевим користувачам доступу до геопросторових даних у різних екземплярах баз даних (це найбільш традиційний сценарій використання Spatial SQL). Такий фахівець може створювати в базі даних збережені процедури та тригери для оновлення даних у міру їх надходження, а також автоматизувати такі процеси, як зміна проєкцій, маніпуляції з даними, форматування тощо. База даних також може бути інтегрована з іншими інструментами, що надають користувачам можливість переглядати дані, виконувати запити та отримувати до них доступ. Зазвичай робота з базою даних здійснюється через такі інструменти, як pgAdmin або psql (командний рядок) у PostGIS, або ж через графічні інтерфейси чи інструменти командного рядка для хмарних сховищ даних [20].
ГІС-аналітик може виступати кінцевим користувачем даних, що зберігаються в базі даних із підтримкою Spatial SQL, використовуючи їх для виконання запитів, аналізу та візуалізації. Аналітики використовують набори даних (окремо або в поєднанні) для отримання цінної інформації, застосовуючи функції просторових відношень у Spatial SQL та інші аналітичні інструменти. Як правило, вони виконують запити до даних, не вносячи в них змін чи оновлень (за винятком випадків, коли створюють власні копії даних). Доступ до даних та їх візуалізація здійснюються за допомогою Python, Jupyter Notebooks, QGIS, CARTO та інших інструментів. Використання PostGIS та QGIS [20].
Фахівець із просторових даних (spatial data scientist) застосовує просторовий SQL для вирішення різноманітних завдань. Це включає отримання даних із баз даних для подальшого аналізу в Python шляхом їх об’єднання з іншими просторовими або непросторовими наборами даних. Також можуть використовуватися складніші концепції SQL для ранжування, застосування віконних функцій, просторової кластеризації, агрегації та аналізу просторових взаємозв’язків — операцій, які ефективніше виконувати безпосередньо в SQL. Крім того, просторовий SQL застосовується для аналізу просторових зв’язків і збагачення даних, що слугують ознаками (features) для моделей машинного навчання (процес, відомий як просторова інженерія ознак). Зазвичай доступ до цих даних здійснюється через середовища на кшталт Jupyter Notebooks, а в роботі використовуються як бази даних (наприклад, PostGIS), так і сховища даних (наприклад, BigQuery) [20].
Інженер із геопросторових даних (geospatial data engineer) може отримувати доступ до просторового SQL та використовувати його різними способами. Наприклад, він може застосовувати SQL у межах GDAL для виконання операцій із перетворення та керування даними (зокрема, з використанням SpatiaLite). Також можливе використання бази даних разом із сервісами для роботи з тайлами або просторовими об’єктами (feature services), такими як pg_featureserv чи pg_tileserv. SQL використовується для перетворення та об’єднання різних наборів даних із метою створення нової інформації, очищення й перевірки даних, видобування та трансформації значень із різних стовпців, а також для підготовки наборів даних для бізнес-користувачів. Для керування великими обсягами даних та їх завантаження застосовуються сховища на кшталт BigQuery та інструменти на зразок Dataflow з бібліотекою geobeam. У роботі використовуються різноманітні засоби: від командного рядка та настільних програм (як-от QGIS) до інтерфейсів баз даних, скриптів на Python тощо.
Звісно, просторова SQL (spatial SQL) як мова - це , по суті, звичайна SQL, однак вона дозволяє реалізувати безліч додаткових сценаріїв використання; саме ці можливості (і не тільки вони) роблять просторову SQL такою унікальною та потужною.
Як у базах даних, так і у сховищах даних просторову SQL можна використовувати для [20]:
- Запитів до просторових наборів даних та управління ними
- Управління системами координат (проєкціями) та перепроєціювання даних
- Зберігання просторових даних у різних форматах (WKT, GeoJSON тощо)
- Аналізу та розуміння різноманітних типів просторових взаємозв’язків
- Виконання просторової кластеризації та аналізу найближчих сусідів
- Перетворення геометрій за допомогою буферних зон, діаграм Вороного та опуклих чи увігнутих оболонок (hulls)
- Обчислення відстаней — як за прямою лінією, так і з урахуванням кривизни Землі
- Роботи з 3D-даними (запити та управління)
- Створення тригерів для зміни й оновлення даних на основі певних подій, наприклад, операції INSERT у конкретну таблицю
- Підключення до API та інших зовнішніх сервісів
- Створення користувацьких функцій іншими мовами програмування, такими як Python, JavaScript та SQL
- Виконання статистичного аналізу та завдань машинного навчання за допомогою спеціальних функцій та інструментів (наприклад, BigQuery ML)
- Зберігання неструктурованих даних (наприклад, у форматі JSON) та управління ними
- Виведення даних у різних форматах, зокрема GeoJSON або Shapefile
- Створення та генерування тайлів карти для фронтенд-застосунків
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу