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

Создание мозаики для заданной территории. If в калькуляторе растров

О чём эта тема

Как объединить несколько сцен Sentinel-2 в мозаику и выделить береговую линию по индексу NDWI — на примере воспроизведения реальной научной публикации.

Аннотация

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

Пререквизиты
  • Практика 1 — поиск и скачивание снимков
  • Практика 2 — калькулятор растров, индекс NDWI
Мотивация

Практика построена на воспроизведении реальной научной статьи о мониторинге берега Вербяной косы. Способность воспроизвести чужой количественный результат — база доверия к любому исследованию: опрос Nature (2016) показал, что около 90% учёных сталкивались с проблемой невоспроизводимости результатов в своей области.

Практика 3 Создание мозаики для заданной территории. If в калькуляторе растров

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

Зачем воспроизводить чужое исследование

В 2016 году журнал Nature опубликовал результаты опроса 1576 исследователей: 52% сообщили, что в их области существует серьёзный кризис воспроизводимости результатов, ещё 38% — что кризис есть, но умеренный. В сумме 90% опрошенных считают проблему реальной. При этом по направлению «Науки о Земле и окружающей среде» около 65% исследователей не смогли воспроизвести чужой эксперимент, а около 40% — свой собственный.

доля исследователей, не сумевших воспроизвести эксперимент — свой или чужой (Baker M. 1,500 scientists lift the lid on reproducibility // Nature. 2016. Vol. 533. P. 452–454)
Рис. П3.1 — доля исследователей, не сумевших воспроизвести эксперимент — свой или чужой (Baker M. 1,500 scientists lift the lid on reproducibility // Nature. 2016. Vol. 533. P. 452–454)

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

факторы, которые чаще всего называют причиной невоспроизводимости исследований (Baker, 2016)
Рис. П3.2 — факторы, которые чаще всего называют причиной невоспроизводимости исследований (Baker, 2016)

Один из способов научиться отличать надёжный результат от случайного — попробовать самостоятельно воспроизвести опубликованное исследование по количественным методам (материалам и методам), описанным в статье, и сравнить полученный результат с оригиналом. В этой практике мы воспроизведём часть исследования по мониторингу берега косы на спутниковых данных.

Структура научной статьи (формат IMRAD)

Большинство научных статей по естественным наукам строятся по общей схеме IMRAD, где пропорции разделов примерно такие:

I · 25%
M&M · 25%
R · 35%
D · 15%
  • Introduction — введение
  • Materials and Methods — материалы и методы
  • Results — результаты
  • Discussion — обсуждение

Вокруг основного текста статьи также обычно присутствуют Title, Authors, Abstract с ключевыми словами и References — это обязательная часть; Acknowledgements (благодарности) — необязательная.

Рис. П3.3 — пропорции разделов научной статьи по схеме IMRAD

Отдельного ГОСТа именно на оформление научной статьи нет — подготовку к публикации регламентируют смежные стандарты СИБИД:

СтандартЧто регламентирует
ГОСТ 7.32-2017Отчёт о НИР. Структура и правила оформления
ГОСТ Р 7.05-2008Библиографическая ссылка. Общие требования и правила составления
ГОСТ 7.82-2001Библиографическое описание электронных ресурсов
ГОСТ 7.0.11-2011Диссертация и автореферат диссертации. Структура и правила оформления

Источник для воспроизведения: Крыленко В. В., Крыленко М. В. Мониторинг берега Вербяной косы по спутниковым данным // Вестник СГУГиТ (Сибирского государственного университета геосистем и технологий). 2020. №3. URL: cyberleninka.ru/article/n/monitoring-berega-verbyanoy-kosy-po-sputnikovym-dannym (дата обращения: 24.02.2025).

Статья посвящена мониторингу береговой линии Вербяной косы (коса на побережье Азовского моря, ограничивающая Темрюкский залив со стороны моря) по разновременным спутниковым снимкам. Мы воспроизведём один из шагов методики — выделение береговой линии по индексу NDWI.

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

Скачайте снимки Sentinel-2A (зелёный и ближний инфракрасный, NIR, каналы) на территорию Вербяной косы и Темрюкского залива за весну-лето 2023 года (с 01.05.2023 по 01.09.2023), облачность менее 10%.

территория задания — Темрюкский залив и Вербяная коса, Азовское море
Рис. П3.4 — территория задания — Темрюкский залив и Вербяная коса, Азовское море

Территория попадает на границу двух сцен Sentinel-2, поэтому потребуется два снимка — целиком она не поместится в одну сцену:

одна сцена Sentinel-2 покрывает территорию лишь частично — нужен второй снимок и их объединение в мозаику
Рис. П3.5 — одна сцена Sentinel-2 покрывает территорию лишь частично — нужен второй снимок и их объединение в мозаику
  1. Открытие STAC API Browser в QGIS (см. Практику 1).
  2. Поиск данных: Sentinel-2A, каналы Green и NIR, дата съёмки — весна-лето 2023 года, облачность менее 10%.
  3. Загрузка: скачайте оба перекрывающихся снимка, покрывающих область целиком.

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

Сохраняйте проект QGIS так, чтобы в пути к нему не было кириллических символов (например, D:/1, а не D:/Практика 3). Некоторые инструменты обработки растров (в том числе используемые далее) могут работать нестабильно при кириллице в пути.

Как создать мозаику?

Если территория интереса покрывается несколькими сценами, их нужно объединить в единую мозаику: Растр → Прочее → Результат объединения.

путь к инструменту объединения растров: Растр → Прочее → Результат объединения
Рис. П3.6 — путь к инструменту объединения растров: Растр → Прочее → Результат объединения

В открывшемся диалоге в поле Исходные слои выберите все сцены, которые нужно объединить (в нашем случае — два снимка одного канала).

диалог инструмента «Результат объединения»: выбор исходных слоёв
Рис. П3.7 — диалог инструмента «Результат объединения»: выбор исходных слоёв

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

Обработка растров требовательна к оперативной памяти. На ноутбуках и маломощных компьютерах избегайте объединения большого числа сцен или сцен очень высокого разрешения за один раз — это может привести к зависанию QGIS.

Повторите объединение отдельно для канала Green и отдельно для канала NIR — на выходе получится две мозаики.

Настройка отображения растра

Мозаика сразу после создания обычно выглядит неопрятно: разные сцены могли быть сняты в разных условиях освещённости, поэтому яркость и контраст стыков не совпадают.

результат объединения сразу после создания — заметны различия яркости и контраста между сценами
Рис. П3.8 — результат объединения сразу после создания — заметны различия яркости и контраста между сценами

Чтобы выровнять внешний вид, откройте Свойства слоя → Стиль и настройте растяжение контраста индивидуально для каждого канала (Мин/Макс, метод «Растяжение до мин/макс»).

настройка отображения: индивидуальная растяжка минимума и максимума по каналам в свойствах слоя
Рис. П3.9 — настройка отображения: индивидуальная растяжка минимума и максимума по каналам в свойствах слоя

После настройки стыки между сценами становятся значительно менее заметны.

та же мозаика после настройки отображения — стыки между сценами почти незаметны
Рис. П3.10 — та же мозаика после настройки отображения — стыки между сценами почти незаметны

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

Продвинутые методы использования калькулятора растров

Прежде чем переходить к расчётам, убедитесь, что каналы совмещены верно: мозаики Green и NIR должны покрывать одну и ту же территорию с одинаковым разрешением.

мозаика канала Green в оттенках серого
Рис. П3.11 — мозаика канала Green в оттенках серого
мозаика канала NIR в оттенках серого
Рис. П3.12 — мозаика канала NIR в оттенках серого

Рассчитайте индекс NDWI (см. Практику 2) через Растр → Калькулятор растров:

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

результат расчёта NDWI по мозаике: светлые тона — вода, тёмные — суша
Рис. П3.13 — результат расчёта NDWI по мозаике: светлые тона — вода, тёмные — суша

Напомним диапазоны значений индекса: вода обычно принимает значения от 0,2 до 1, растительность — от −0,1 до 0,4, объекты без влаги — меньше 0.

Сохраните исходные данные

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

Оператор IF для маскирования

Если нужно замаскировать часть растра — например, оставить только пиксели, соответствующие воде (NDWI ≥ 0), — используйте выражение вида:

("NDWI@1" >= 0) * "TrueColor@1"

Часть выражения в скобках возвращает 1, если условие истинно (пиксель — вода), и 0 — если ложно (пиксель — суша). Умножение на исходный канал оставляет значения там, где условие истинно, и обнуляет остальные пиксели.

калькулятор растров: список доступных каналов и оператор IF в разделе «Операторы»
Рис. П3.14 — калькулятор растров: список доступных каналов и оператор IF в разделе «Операторы»

На скриншотах ниже слой с рассчитанным индексом сохранён под именем MDWI — это лишь то, как его назвали при сохранении в этом конкретном проекте; по формуле и смыслу это тот же индекс NDWI. Называйте свои слои так, как удобно вам, но старайтесь не путать это с формально иным индексом MNDWI (Modified NDWI), который использует не NIR, а SWIR канал.

Поскольку композит истинных цветов (True Color) состоит из трёх каналов, выражение нужно применить отдельно к каждому каналу:

("NDWI@1" >= 0) * "TrueColor@1"
("NDWI@1" >= 0) * "TrueColor@2"
("NDWI@1" >= 0) * "TrueColor@3"
результат применения маски: обнулённые (замаскированные) пиксели суши показывают подложку карты насквозь
Рис. П3.15 — результат применения маски: обнулённые (замаскированные) пиксели суши показывают подложку карты насквозь

Затем три полученных слоя нужно объединить обратно в один композит через уже знакомый инструмент Растр → Прочее → Результат объединения, включив на этот раз флажок «Поместить каждый исходный файл в отдельный канал» (иначе каналы наложатся друг на друга, а не сформируют RGB-изображение).

объединение трёх замаскированных каналов в один композит — обязательно с флажком «поместить каждый исходный файл в отдельный канал»
Рис. П3.16 — объединение трёх замаскированных каналов в один композит — обязательно с флажком «поместить каждый исходный файл в отдельный канал»
итоговый композит истинных цветов с замаскированной сушей — видна только акватория
Рис. П3.17 — итоговый композит истинных цветов с замаскированной сушей — видна только акватория

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

Флажок «Поместить каждый исходный файл в отдельный канал» легко пропустить по невнимательности. Без него три канала будут объединены как единый одноканальный растр, а не как RGB-композит, и итоговое изображение получится некорректным.

Оператор IF для классификации

Чтобы подготовить изображение к векторизации, его нужно превратить в чистый бинарный (двузначный) растр. Для этого используется тот же оператор IF, но уже не для обнуления, а для явного присвоения одного из двух значений:

IF("TrueColor@1" > 0, 50, 100)

Здесь пикселям с положительным значением (вода — то, что осталось видимым после маскирования) присваивается значение 50, всем остальным (суша, замаскированная ранее в 0) — значение 100. В отличие от маскирования, где результат сохраняет полутона исходного изображения, классификация даёт растр ровно с двумя значениями — то, что нужно для чистой векторизации.

Ниже — интерактивная модель этого шага на синтетическом (не измеренном) поле значений индекса: подвиньте порог и посмотрите, как меняется граница между «водой» и «сушей» и какое выражение IF ему соответствует.

Интерактив

Лаборатория порога NDWI

Слева — синтетическое поле значений индекса (условная граница вода/суша с шумом). Справа — результат классификации по порогу.

Индекс (синтетический)
Классификация по порогу
IF( "NDWI@1" >= 0.00, 1, 0 )

Векторизация бинаризованного изображения

Бинарный растр переводится в векторный контур инструментом Создание изолиний (Растр → Извлечение → Контуры, или GDAL Contour): изолиния строится ровно по границе между значениями 50 и 100, то есть по границе вода/суша — это и есть искомая береговая линия.

извлечённая береговая линия (красным) поверх исходной территории
Рис. П3.18 — извлечённая береговая линия (красным) поверх исходной территории

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

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

Домашнее задание

Сравните полученную вами береговую линию с результатами, приведёнными в статье Крыленко В.В., Крыленко М.В. (2020). Опишите, за счёт чего могут возникать расхождения между вашим результатом и результатом авторов статьи (выбор даты снимка, порог NDWI, разрешение снимка, ручная чистка контура).

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