Найти в Дзене

Облачная обработка растров: на примере расчета NDVI

Обработка растровых данных за длительные временные периоды требует значительных вычислительных ресурсов и оперативной памяти, что может замедлять анализ и увеличивать нагрузку на систему. Google Earth Engine предоставляет облачную инфраструктуру, позволяющую эффективно обрабатывать и анализировать большие объемы геопространственных данных, сокращая вычислительное время и оптимизируя использование ресурсов. Google Earth Engine (GEE) — это облачная платформа для анализа и визуализации геопространственных данных в больших масштабах. Она используется для обработки спутниковых снимков, геоданных и проведения сложного пространственного анализа. Одной из главных особенностей платформы является огромная база данных – платформа предоставляет доступ к историческим и актуальным спутниковым снимкам (Landsat, Sentinel, MODIS и др.). То есть платформа позволяет проводить обработку растровых данных без скачивания их себе на устройство. В качестве примера использования GEE, можно привести одну из не
Оглавление

Обработка растровых данных за длительные временные периоды требует значительных вычислительных ресурсов и оперативной памяти, что может замедлять анализ и увеличивать нагрузку на систему. Google Earth Engine предоставляет облачную инфраструктуру, позволяющую эффективно обрабатывать и анализировать большие объемы геопространственных данных, сокращая вычислительное время и оптимизируя использование ресурсов.

Google Earth Engine (GEE) — это облачная платформа для анализа и визуализации геопространственных данных в больших масштабах. Она используется для обработки спутниковых снимков, геоданных и проведения сложного пространственного анализа.

Одной из главных особенностей платформы является огромная база данных – платформа предоставляет доступ к историческим и актуальным спутниковым снимкам (Landsat, Sentinel, MODIS и др.). То есть платформа позволяет проводить обработку растровых данных без скачивания их себе на устройство.

В качестве примера использования GEE, можно привести одну из недавних работ Центра Геоданных — анализ изменения индекса NDVI на территории Калужской области за последние 7 лет. В исследовании использовались данные Sentinel-2.

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

-2

Загрузка, обработка и визуализация данных

Перед загрузкой данных я написала функцию расчета NDVI:

function addNDVI(image) {
var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI');
return image.addBands(ndvi); }

GEE при загрузке растров за временной период может либо накладывать снимки друг на друга, либо создавать композиты. Для создания композитов можно использовать ряд функций, например, min/max (выбирает максимальное или минимальное значение пикселя за выбранный период), mean (среднее значение пикселя за выбранный период) и first (показывает первое изображение в коллекции).

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

var dataset2017 = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
.filterDate('2017-06-01', '2017-09-01') // дата
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 3)) // облачность меньше 3%
.map(maskS2clouds) //применение маскировки облачности
.map(addNDVI) // добавление канала с NDVI
.select('NDVI') // выбор канала
.max() // создание композита максимальных значений
.clip(geometry); // вырезание области

Для визуализации результата нужно использовать функцию Map.addLayer и указать имя файла, цветовую палитру (вместо нее можно просто вписать { }) и название файла, которое будет видно в слоях.

Map.addLayer(dataset2017, visParams, 'NDVI_2017');

В результате у меня получилось:

-3

Варианты анализа изменений NDVI

Стандартное отклонение

В качестве многовременного анализа изменений было посчитано стандартное отклонение за 7 лет.

Для этого сначала все, созданные ранее, композиты добавляются в одну коллекцию изображений:

var images = ee.ImageCollection([
dataset2017,
dataset2018,
......
dataset2024
]);

Затем применяется функция расчета стандартного отклонения:

var stdDev = images.reduce(ee.Reducer.stdDev());

Вычисление разницы значений

Для вычисления разности используется функция substract между двумя композитами: из значений 2024 вычитаются значения 2017 года:

var diff = dataset2024.subtract(dataset2017);

Выгрузка результатов

Для выгрузки нужных файлов используется функция exportParams с рядом параметров: название, разрешения, границ, формата и максимально возможного количества пикселей файла, а так же название папки на гугл диске:

var exportParams = {
image: diff, //выбранный обработанный датасет
description: 'kaluga_diff', //название будущего файла
scale: 1, //разрешение
region: geometry, //полигон, по границам которого будет обрезан датасет
fileFormat: 'GeoTIFF',
folder: 'kaluga_diff', //папка на гугл диске (создается автоматически)
maxPixels: 10000000000000
};
Export.image.toDrive(exportParams);

Чтобы быстрее выполнить похожие задачи, можно использовать мой код, изменив только геометрию и даты:

Sign in - Google Accounts