Мат. моделирование / ДЗЗ
Практика 2

Автоматизация расчетов в QGIS. Калькулятор растров. Расчет индекса

О чём эта тема

Как из отдельных спектральных каналов снимка получить содержательную карту — на примере расчёта индексов воды через калькулятор растров QGIS.

Аннотация

Тема показывает, как перейти от отдельных спектральных каналов снимка к содержательной карте: загрузку снимка Sentinel-2 по заданной территории, дате и облачности, устройство индексов воды и мутности (NDWI, NDTI) и то, почему разные индексы используют разные комбинации каналов, а также работу с калькулятором растров QGIS — от разовой формулы до автоматизации расчёта в конструкторе моделей. После изучения темы студент сможет рассчитать индекс по формуле в калькуляторе растров и объяснить, какие его значения соответствуют воде, а какие — растительности или сухой поверхности.

Пререквизиты
  • Практика 1 — умение найти и скачать нужный снимок
  • Лекция 1 — понятие канала и растровой модели данных
Мотивация

Практика построена на легенде о затонувшей у датских островов мельнице: можно ли по спутниковому снимку оценить состояние воды в проливе? Один и тот же снимок можно превратить в карту воды, растительности или гари — просто изменив формулу, применённую к его каналам. Это базовый приём, на котором держится вся дальнейшая тематическая обработка данных ДЗЗ.

Практика 2 Автоматизация расчетов в QGIS. Калькулятор растров. Расчет индекса

Данные для занятия Презентация

История о затонувшей мельнице. Легенда гласит, что судно с мельничными жерновами затонуло в проливе между датскими островами Фанё и Маннё — оттого здесь морская вода особенно солёная, а сами острова носят имена сестёр-великанш. Как подтвердить или опровергнуть подобную историю, не выходя в поле? Один из способов — оценить состояние воды в проливе по спутниковым снимкам, рассчитав индекс мутности.

Постановка задачи

Скачайте спутниковый снимок Sentinel-2, красный и зелёный каналы, для анализа территории пролива между датскими островами Фанё и Маннё за 2021 год (с 01.01.2021 по 01.01.2022), облачность >30%.

территория задания — пролив между островами Фанё и Маннё, Дания
Рис. П2.1 — территория задания — пролив между островами Фанё и Маннё, Дания
  1. Открытие Stack Browser в QGIS:

    • Запустите QGIS и откройте панель Stack Browser (если она не отображается, перейдите в меню View > Panels > Stack Browser).
    • В Stack Browser выберите источник данных microsoft planetary computer stack api, предварительно настроив его.
  2. Настройка области интереса (AOI):

    • Введите координаты для области пролива между островами Фанё и Маннё.
    • Убедитесь, что область правильно отображается на карте QGIS.
  3. Поиск и выбор данных Sentinel-2:

    • Используйте интерфейс Stack Browser для выбора снимков Sentinel-2А в указанной области.
    • Укажите временной интервал, интересующий вас, а также настройки для фильтрации по облачности (например, выберите изображения с облачностью менее 30%).
  4. Загрузка данных:

    • Выберите нужные снимки из списка.
    • Скачайте данные непосредственно через Stack Browser в QGIS.

Если забыли, как скачивать снимки — см. Практику 1

Пример скачанного цветосинтезированного в натуральных цветах изображения на заданную территорию:

снимок Sentinel-2 в натуральных цветах на заданную территорию
Рис. П2.2 — снимок Sentinel-2 в натуральных цветах на заданную территорию

Анализ растра. Индекс воды. Индексы мутности

В наши дни данные ДЗЗ часто используются с целью экологического мониторинга, исследования состояния лесов, полей и сельского хозяйства в целом. Помимо данного мониторинга при помощи вегетационных индексов, на сегодняшний день все чаще поступают запросы о мониторинге затопления территорий, выявления уровня горючих материалов в пожароопасных зонах, расчета влагозапаса снежного покрова, увлажнения растительного покрова и многих других задач.

Для этих целей существуют различные индексы воды, рассчитываемые на основе данных дистанционного зондирования Земли. В данной статье рассмотрим самые популярные из них. Для исследования расчетных индексов, которые используются для выделения водных объектов на поверхности Земли, были взяты снимки со спутника Sentinel.

Как появился первый индекс воды

В дистанционном зондировании уже много лет используется нормализованный дифференцированный вегетационный индекс NDVI. Для определения состояния всей растительности сравнивают значения в поглощении и отражении красных и инфракрасных лучей. Благодаря этому получают индекс NDVI. Но главным недостатком данного индекса является то, что коэффициент отражения красного канала слишком чувствителен к атмосферным изменениям. Для решения этой проблемы был создан первый водный индекс (NDWI), использующий коротковолновый инфракрасный канал. SWIR канал пробивает практически 80% атмосферы. Его используют для мониторинга лесных пожаров, поиска полезных ископаемых и так далее. Вода способна поглощать ближние инфракрасные волны. Поэтому именно благодаря использованию в расчетах NIR и SWIR каналов мы можем выделить контуры водных объектов и влажных почв.

Нормализованный разностный водный индекс (NDWI)

Нормализованный разностный водный индекс (NDWI) — это индекс, который используется для выявления водных тел в спутниковых или аэрокосмических изображениях. Классический вариант (McFeeters, 1996) основан на разнице в отражении света в видимом зелёном (Green) и ближнем инфракрасном (NIR) диапазонах: вода отражает зелёный свет заметно сильнее, чем NIR, а растительность и почва — наоборот.

Рассчитывается по формуле:

\[ NDWI = \frac{(Green - NIR)}{(Green + NIR)} \]

Используется для: - обнаружения открытых водных объектов (реки, озёра, водохранилища); - анализа восприимчивости исследуемого участка к пожарам; - измерения степени покрытия территории поверхностными водами.

Значения этого индекса колеблются в диапазоне от -1 до 1. Считается, что водные объекты принимают значения от 0,2 до 1, растительность — от -0,1 до 0,4, объекты без влаги — меньше 0.

Главное достоинство NDWI — простота и надёжность выделения водоёмов на снимке. Недостаток — повышенная чувствительность к застройке: тени и некоторые кровельные материалы могут ложно давать высокие значения индекса.

NDWI ≠ NDWI

Под тем же названием NDWI в литературе иногда встречается другая формула — индекс Гао (Gao, 1996), использующий NIR и SWIR вместо Green и NIR: $NDWI_{Gao} = \dfrac{(NIR - SWIR)}{(NIR + SWIR)}$. Эта версия точнее показывает влагозапас растительности, а не открытую воду, и в разных источниках её называют также NDMI или LSWI. При использовании готовых формул из интернета всегда проверяйте, какие именно каналы указаны — под одной аббревиатурой скрываются разные индексы.

Индекс мутности воды (NDTI, Normalized Difference Turbidity Index)

По названию можно догадаться, для чего используется данный индекс. Он характеризует уменьшение прозрачности воды из-за наличия неорганических и органических примесей или же развития планктона в водном объекте.

Рассчитывается по формуле:

\[ NDTI = \frac{(RED - GREEN)}{(RED + GREEN)} \]

Так как в расчете данного индекса используется только видимый диапазон спектра, можно использовать данные съемки с КА, например, World-View 3 с высоким пространственным разрешением, если того требует техническое задание.

Используется для: - выявления мутности воды; - для прогнозирования засухи, так как индекс несет более глобальный показатель — более чувствителен к изменению влагозапаса в растениях.

Значения этого индекса колеблются в диапазоне от -1 до 1. Мутность воды принимает значения от 0.4 до 1.

Пример использования NDTI 1.

пример расчёта NDTI 1 — вода в реке визуально чистая, незамутнённая
Рис. П2.3 — пример расчёта NDTI 1 — вода в реке визуально чистая, незамутнённая

Сравнивая цвет изображения со шкалой значений данного индекса, можно сделать вывод о том, что вода в реке является довольно чистой, не замутненной.

Пример использования NDTI 2.

пример расчёта NDTI 2 — мутная вода реки Кия в окрестностях Мариинска
Рис. П2.4 — пример расчёта NDTI 2 — мутная вода реки Кия в окрестностях Мариинска

Для полноты исследования был выбран еще один снимок со спутника Sentinel 2A, в окрестностях города Мариинск.

Как мы видим на композитном изображении в натуральных цветах, вода в реке Кия довольно мутная, зеленая. Такую же картину нам дает и пересчет в NDTI. Низкие значения индекса отображаются на карте желтым цветом и соответствуют чистой, незамутненной воде, и наоборот.

Лаборатория индексов: один пиксель, три формулы

Прежде чем считать индексы для целого снимка в QGIS, полезно увидеть, как они ведут себя на одном пикселе. Подвиньте ползунки каналов или выберите готовый тип поверхности — индексы NDWI, NDWI (Gao/LSWI) и NDTI пересчитаются мгновенно.

Интерактив

Лаборатория спектральных индексов

Значения каналов — иллюстративные (не измеренные), чтобы показать порядок величин и логику формул, а не точные спектры конкретных поверхностей.

NDWI (Green, NIR)0.00

NDWI Gao / LSWI (NIR, SWIR)0.00

NDTI (Red, Green)0.00

Калькулятор растров

Note

Как мы уже выяснили, изображение — это матрица. Следовательно, все правила операций над матрицами распространяются и на этот калькулятор.

Калькулятор растров, доступный из меню Растр (см. figure_raster_2), позволяет выполнять различные вычисления на основе значений пикселей. Результат вычислений сохраняется как изображение в GDAL-совместимом формате.

калькулятор растров в меню «Растр» QGIS
Рис. П2.5 — калькулятор растров в меню «Растр» QGIS

В списке Каналы растров перечислены доступные растровые слои. Добавить растр в выражение можно двойным щелчком по его имени в списке. При построении выражения можно использовать кнопки операторов или просто набирать их в соответствующем поле.

В группе Результаты расположены настройки результирующего слоя. Здесь можно задать: - Охват области вычислений по охвату исходного растра, или - Ввести координаты X, Y и желаемое количество строк и столбцов для получения необходимого разрешения итогового слоя.

Если исходный слой имеет другое разрешение, величины будут пересчитаны по алгоритму «ближайший сосед».

В разделе Операторы перечислены все доступные операторы. Добавить оператор в поле выражения можно, нажав соответствующую кнопку. Доступны: - Математические операторы (+, -, *, ...), - Тригонометрические функции (sin, cos, tan,...).

В группе Выражения можно создавать и редактировать математические выражения для обработки растровых данных. Здесь можно комбинировать каналы растров, операторы и функции для выполнения вычислений. Выражения можно вводить вручную или использовать доступные кнопки для вставки операторов и функций.

При создании выражений важно помнить, что каждый элемент (растр, оператор, функция) должен быть правильно соединен, чтобы результат вычислений был корректным. Выражение можно сразу протестировать, применив его к выбранному растровому слою.

Если выражение корректно, его можно сохранить и применить для получения нового результирующего растрового слоя.

интерфейс калькулятора растров после ввода выражения
Рис. П2.6 — интерфейс калькулятора растров после ввода выражения

Пример расчета NDTI

Для расчета Индекса мутности (NDTI) с использованием калькулятора растров можно воспользоваться следующим примером:

  1. Загрузка растровых слоев: Загрузите растровые слои с изображениями в красном (RED) и зеленом (GREEN) диапазонах. Эти данные могут быть получены, например, с помощью спутниковых изображений.

  2. Открытие калькулятора растров: Перейдите в меню Растр и выберите Калькулятор растров.

  3. Построение выражения: В поле выражения введите следующую формулу для расчета NDTI:

формула NDTI в поле выражения калькулятора растров
Рис. П2.7 — формула NDTI в поле выражения калькулятора растров

\[ NDTI = \frac{(RED - GREEN)}{(RED + GREEN)} \]

Где: - RED — полоса красного света, - GREEN — полоса зеленого света.

  1. Настройка параметров: В группе Результаты настройте область и разрешение для итогового слоя. Если необходимо, укажите новые координаты или количество строк и столбцов для сохранения требуемого разрешения.

  2. Применение и сохранение: Нажмите OK, чтобы применить выражение. Итоговый слой будет создан и отображен на карте. Если установлен флажок Добавить результат в проект, новый слой будет автоматически добавлен в проект.

результирующий слой NDTI после применения калькулятора
Рис. П2.8 — результирующий слой NDTI после применения калькулятора

Итоговый слой будет показывать значения индекса мутности для каждого пикселя, что позволяет анализировать мутность воды в исследуемом районе.

Настройка псевдоцветного отображения

Псевдоцветное отображение используется для улучшения визуализации растровых данных, где значения пикселей растрового изображения преобразуются в цветовые градации. Это помогает лучше интерпретировать данные, особенно в случае, когда диапазон значений слишком велик или сложен для визуального восприятия.

  1. Открытие настроек слоя: В Списке слоев выберите растровый слой, для которого необходимо настроить псевдоцветное отображение, и щелкните правой кнопкой мыши. Выберите Свойства или Настройки слоя.

  2. Перейти на вкладку "Стиль": В окне свойств слоя перейдите во вкладку Стиль.

  3. Выбор типа отображения: В разделе Изображение выберите Однокональное псевдоцветное. Это позволит вам использовать цветовую палитру для отображения значений растрового слоя.

  4. Выбор цветовой палитры: В разделе Цветовой ряд выберите подходящую палитру.

  5. Настройка интервала значений: Укажите минимальные и максимальные значения растрового слоя, которые будут отображаться с помощью выбранной палитры. Это позволяет контролировать, какие значения будут отображаться определенными цветами.

  6. Настройка прозрачности: В разделе Прозрачность можно задать уровень прозрачности слоя, чтобы сделать его менее заметным при наложении на другие слои.

  7. Применение изменений: Нажмите ОК, чтобы применить настройки и закрыть окно свойств. Теперь растровый слой будет отображаться с псевдоцветным отображением.

Конструктор моделей QGIS

Warning

Сохраните проект QGIS Так, чтобы в его пути Не было кириллицы! Конcтруктор моделей QGIS не умеет обрабатывать кириллицу даже в названии путей к файлам!!!

Конструктор модели (The Model Designer) в QGIS позволяет пользователям создавать сложные модели для автоматизации различных процессов внутри QGIS. Он предоставляет удобный интерфейс для создания моделей без необходимости писать код.

конструктор моделей QGIS — общий вид рабочей области
Рис. П2.9 — конструктор моделей QGIS — общий вид рабочей области
  1. Открытие редактора моделей:
  2. Перейдите на верхнюю панель QGIS, выберите Анализ данных и в раскрывающемся меню выберите Редактор моделей.
  3. Либо используйте комбинацию клавиш Ctrl + Alt + G для быстрого доступа.

  4. Задание имени модели:

  5. В левом нижнем углу откроется панель свойств. В строке Имя укажите уникальное имя для вашей модели.

  6. Добавление входных данных (Inputs):

  7. На левой вертикальной панели выберите вкладку Данные. Здесь будут отображаться все доступные данные, которые можно использовать как входные параметры в модели. Выберите необходимые данные, такие как векторные или растровые слои.

  8. Создание алгоритмов (Processes):

  9. Переключитесь на вкладку Алгоритмы в нижней части левой панели. Здесь представлены все доступные алгоритмы и процессы, которые могут быть добавлены в вашу модель. Перетащите необходимые процессы в рабочую область модели и соедините их между собой, чтобы задать логику работы модели.

  10. Настройка алгоритмов:

  11. Для каждого добавленного алгоритма можно настроить входные и выходные параметры, задав их в окне настроек. Включите параметры, такие как путь к файлам, фильтры или другие параметры, которые требуют настройки для корректной работы алгоритма.

  12. Сохранение модели:

  13. После завершения построения модели, сохраните её, нажав кнопку Сохранить. Модели можно сохранять в формате .model для дальнейшего использования.

  14. Тестирование модели:

  15. Чтобы протестировать модель, нажмите на зелёный треугольник в верхней панели редактора моделей. Это запустит выполнение всех алгоритмов модели, и вы сможете увидеть результаты в QGIS.

Интерфейс Конструктора моделей

Любая модель в QGIS состоит из трёх основных компонентов:

  1. Вход (Input):
  2. Это данные, которые подаются в модель на начальном этапе. Входные данные могут быть как растровыми, так и векторными слоями, таблицами, или другими типами геопространственной информации.
  3. В модели можно настроить различные параметры входа, например, выбрать слой для анализа или указать путь к файлу.

  4. Алгоритмы (Algorithms):

  5. Алгоритмы представляют собой процессы или операции, которые происходят внутри модели. Это могут быть операции по анализу, обработке данных, фильтрации, созданию новых слоёв и т.д.
  6. В QGIS можно использовать встроенные алгоритмы, такие как операции на векторах, растровые операции, геостатистический анализ и многое другое.

  7. Выход (Output):

  8. Выходные данные — это результат работы модели. После выполнения алгоритмов модель генерирует результаты, которые могут быть сохранены в виде новых слоёв, таблиц, отчетов или других форматов.
  9. Выходные данные часто используются для визуализации, дальнейшего анализа или экспорта в другие системы.
три компонента модели: вход, алгоритмы, выход
Рис. П2.10 — три компонента модели: вход, алгоритмы, выход

Пример автоматизации расчета индекса мутности

  1. Выберем два раза Растровый слой во вкладке данные и перетащим в правую часть экрана. Первый раз назовем Red, второй Green, чтобы различать их впоследствии
добавление двух растровых слоёв Red и Green во входные данные
Рис. П2.11 — добавление двух растровых слоёв Red и Green во входные данные
  1. По итогу переноса должно получится так:
входные слои Red и Green на рабочей области конструктора
Рис. П2.12 — входные слои Red и Green на рабочей области конструктора
  1. Вспомним, каким алгоритмом мы рассчитывали NDTI. Алгоритмом под названием Калькулятор растров. Переключим вкладку и надём его.
поиск алгоритма «Калькулятор растров» во вкладке Алгоритмы
Рис. П2.13 — поиск алгоритма «Калькулятор растров» во вкладке Алгоритмы

Если значок отличается

Если не видите «Калькулятор растров» с данным значком, то попробуйте вбить Raster calculator. Если и после этого не нашли, то используйте версию GDAL.

  1. Работа с Калькулятором растров требует определить входные данные (Red и Green), формулу для расчёта и выходное имя слоя

  2. Во вкладке Входные слои (реже input/extent layers) выберите растровые данные Red и Green, нажав на ...

выбор входных слоёв Red и Green в калькуляторе растров
Рис. П2.14 — выбор входных слоёв Red и Green в калькуляторе растров
  1. Формула задается в общем виде в разделе выражение (!обратите внимание, в каком порядке идут Red и Green, кто раньше идет, тот будет A, тот что выбран вторым станет B!)
формула индекса в поле «Выражение» — важен порядок A и B
Рис. П2.15 — формула индекса в поле «Выражение» — важен порядок A и B

Типичная ошибка

Перепутать порядок входных слоёв A и B в калькуляторе растров. Формула (A@1 - B@1) / (A@1 + B@1) даёт правильный результат, только если A и B соответствуют тем каналам, для которых формула выводилась. Перестановка местами не вызывает ошибку выполнения, но меняет знак результата на противоположный — визуально это может выглядеть как «вода» там, где на самом деле суша, и наоборот.

  1. Результат расчета назовем NDTI
имя результирующего слоя — NDTI
Рис. П2.16 — имя результирующего слоя — NDTI
  1. При правильном выборе вы получите следующую схему:
итоговая схема модели: входы и калькулятор растров соединены
Рис. П2.17 — итоговая схема модели: входы и калькулятор растров соединены

Проследив линии, можно убедиться, что они идут в калькулятор растров, калькулятор растров на выходе формирует одно изображение с именем NDTI

  1. Проверка работоспособности модели. Для этого запустите модель, нажав на кнопку проигрывателя (сверху на панеле зеленый треугольник)
запуск модели кнопкой воспроизведения
Рис. П2.18 — запуск модели кнопкой воспроизведения
  1. В открывшемся окне вам будет предложено выбрать из имеющихся в проекте QGIS растров. Убедимся, что расчет производится верно: для этого передадим зеленый канал в Green, красный канал в RED
выбор конкретных растров (Red, Green) при запуске модели
Рис. П2.19 — выбор конкретных растров (Red, Green) при запуске модели
  1. Если все было сделано верно, то вы увидите процесс обработки растра. По завершению растр откроется в проекте.
результат работы модели — рассчитанный слой NDTI в проекте QGIS
Рис. П2.20 — результат работы модели — рассчитанный слой NDTI в проекте QGIS

Warning

Если модель сломалась, то убедитесь, что Сохранили проект QGIS Так, чтобы в его пути Не было кириллицы! Убедитесь, что файл сохраняется в том месте. где путь не имеет кириллицы! Убедитесь, что вы не назвали файл с кириллицей! И только после этого вносите изменения в модель!

Tip

Если вы уверены, что ошиблись с формулой, то вы всегда можете щелкнуть правой кнопкой мыши по любому из компонентов и выбрать "изменить".

Контрольные вопросы