Оглавление

Предисловие

Популярная OpenSource настольная ГИС – QGIS обладает широкими возможностями не только по работе с векторными данными, но обладает отличным базовым инструментарием по работе со спутниковыми растровыми данными.

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

Загрузка космоснимка

Загрузка космоснимка
Загрузка космоснимка

Вначале космоснимок необходимо получить, сделать это можно на специализированных сайтах, порталах. Сайт с понятным интерфейсом и обширнейшим архивом космоснимков находится по ссылке earthexplorer.usgs.gov.

В статье рассматривается пример со снимком с космического аппарата Sentinel-2A.

Подготовка

После получения космоснимка, zip-архив необходимо распаковать на локальный носитель.

Папка с космоснимком Sentinel-2 будет выглядеть таким образом:

Структура космоснимка Sentinel-2A
Структура космоснимка Sentinel-2A

Все каналы необходимые для дальнейшей работы в QGIS находятся в папке [имя_снимка] > [GRANULE] > [имя_снимка] > [IMG_DATA].

Создание виртуального растра

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

Функция [Build Virtual Raster]
Функция [Build Virtual Raster]

Вызываем функцию [Build Virtual Raster] и далее следуем инструкции:

  1. [Input layers]. Выбираем входные каналы. Добавляем каналы в том порядке, в котором хотим создать необходимый композит в модели RGB. Например для Sentinel-2 комбинация 4-3-2 соответствует цветам на привычном фотоизображении. Для получения данного композита, нужно последовательно выбрать вначале 4-й канал, затем 3-й и затем соответственно 2-й;
  2. [Resolution] = highest. Разрешение обработки, нам нужно максимальное;
  3. [[v] Place each input file into a separate band]], ставим галочку. Это важная опция, подразумевающая, что каждый отдельный канал космоснимка соответствует отдельному каналу цветовой модели RGB, в которой происходит отображение результирующего растра;
  4. [Virtual], указываем путь и имя сохранения виртуального растра (метафайл). Пути каналов прописываются относительные, поэтому при перемещении космоснимка одновременно необходимо перемещать виртуальный растр. Таким образом, чтобы не запутаться в путях и сохранять рабочим метафайл, виртуальный растр рекомендуется создавать внутри корневой папки космоснимка;
  5. принцип именования файла виртуального растра:
    • принцип формирования имени файла должен строиться на сокращённом (минимальном) имени космоснимка, можно только даты, плюс комбинации каналов;
    • рассмотрим конкретный пример: Полное имя космоснимка (директории) S2A_MSIL1C_20190118T081251_N0207_R078_T37TGL_20190118T093512.SAFE;
    • предлагаемый вариант именования виртуального растра: 2019-01-18_b432. Пояснение: дата (YYYY-MM-DD Формат ISO 8601:2004), b432 (b от слова band, в англоязычной терминологии ДЗЗ — канал), комбинация каналов 4-3-2;
  6. [Run].

Область интереса

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

Если применяются снимки сверхвысокого разрешения (2м, 1м, 0,5м), желательно применение пирамид (метод создания уменьшенных копий изображения разных уровней), для достижения высокой скорости работы.

1-й способ. Полигональная вырезка

Процесс создания полигональной вырезки (клиппинг изображения):

  1. создаём полигональный слой, сохраняем его, даём условное имя bound_box;
  2. рисуем прямоугольник с помощью инструмента [Add Rectangle from Extent], находящегося на панели инструментов [Shape Digitizing Toolbar];
  3. вызываем функцию [Clip Raster by Mask Layer] и далее следуем инструкции:
    1. [Input layer] = 2019-01-11_b432, выбираем наш космоснимок — виртуальный растр;
    2. [Mask layer] = bound_box, выбираем полигональный слой, шаблон для вырезки;
    3. [[v] Match the extent of the clipped raster to the extent of the mask layer]], ставим галочку. Обязательная опция отвечающая за то, чтобы размер вырезаемой области на выходе соответствовал размеру области маски;
    4. [Run].

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

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

2-й способ. Вырезка по выделению или экстенту

Вызываем функцию [Clip Raster by Extent] и далее следуем инструкции:

  1. Input layer] = 2019-01-11_b432, выбираем наш космоснимок — виртуальный растр;
  2. [Clipping extent] = Select Extent on Canvas. Позволяет вручную выбрать прямоугольную область вырезаемой области космоснимка;
  3. [Run].

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

Корректировка изображения

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

Корректировка параметров изображения
Корректировка параметров изображения

Используя панель инструментов [Raster Toolbar] можно быстро выровнять необходимые яркостные параметры снимка. Удерживание клавиши клавиатуры Shift при нажатии на кнопку яркости или контрастности значительно увеличивает изменяемое значение.

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

Сохранение и компрессия

Мы создали нужный нам фрагмент космоснимка, который сохранён во временной папке в несжатом виде, с целью дальнейшей обработки. Теперь произведём компрессию в JPEG.

Сохранение конечного файла в GeoTIFF с JPEG-компрессией
Сохранение конечного файла в GeoTIFF с JPEG-компрессией

В панели [Layers] правой кнопкой мыши нажимаем по временному растровому слою [Clipped] > [Export] > [Save As] и следуем инструкции:

  1. [Output mode] = (*) Rendered image. Данная опция означает, что изображение будет сохранено с текущими настройками отображения растра в программе QGIS;
  2. [Format] = GeoTIFF;
  3. [File name]. Указываем путь и имя сохранения конечного изображения.
  4. Имя файла, следует давать более детальное нежели при именовании виртуального растра:
    • Из базового имени космоснимка S2A_MSIL1C_20190118T081251_N0207_R078_T37TGL_20190118T093512.SAFE, формируем S2A_L1C_2019-01-18_T37TGL_b432_trun.TIFF.
    • Пояснения. S2A — спутник Sentinel 2A, L1C — уровень обработки, 2019-01-18 — дата съёмки, T37TGL — «квадрат съёмки», b432 — комбинация каналов, trun — Труновский район, т. е. в конце мы конкретизируем место съёмки. Детальное имя желательно давать потому, что формируемый файл будет уже автономным и имя файла будет хранить базовую информацию о снимке.
  5. [Advanced parameters] > [Profile] = JPEG compression, quality=75. Данный параметр обеспечивает эффективную компрессию JPEG внутри GeoTIFF, хоть и с потерями качества, но практически не заметными на глаз, зато JPEG значительно снижает размер занимаемого пространства.
  6. [OK].

На выходе получаем конечный продукт — фрагмент космоснимка в формате GeoTIFF с JPEG компрессией. Данный файл можно открыть в любом вьювере (просмотрщик) изображений, в отличие от изначального GeoTIFF, с которым в большинстве своём могут работать только специализированные ГИС инструменты.

В качестве примера эффективности сжатия, приведём информацию. Вырезанная область космоснимка, по маске bound_box, из примера выше, занимала в несжатом файле 124,5 MB, после преобразования в GeoTIFF с компрессией JPEG, размер стал 12,3 MB, т.е. в 10 раз меньше.

Выводы

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

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

Базовая работа с космоснимками в QGIS