Экспорт диаграмм и изображений

Earth Engine – это мощный аналитический инструмент, но вам может потребоваться экспортировать результаты анализа, чтобы встроить диаграммы, изображения, карты и т. д. в отчеты или публикации. В этом разделе вы узнаете, как создавать диаграммы и изображения, которые можно экспортировать и просматривать в другом программном обеспечении. В предыдущем разделе вы использовали код, подобный приведенному ниже, чтобы добавить слой NDVI к каждому изображению в коллекции, где переменная l8 ссылается на коллекцию отражательной способности Landsat 8 TOA:

Редактор кода (JavaScript)

// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

// Map a function over the Landsat 8 TOA collection to add an NDVI band.
var withNDVI = l8.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

Новости чартов

Предположим, что вам нужна диаграмма NDVI за определенный период времени в заданном местоположении. Чтобы создать такую диаграмму, сначала выберите интересующее местоположение. Создайте точку, выбрав инструмент рисования точек () и создав геометрию одной точки в интересующей вас области. Если вы уже импортировали данные, наведите указатель мыши на раздел Импорт геометрии и нажмите + Новый слой. Найдите точку в области сельского хозяйства, лиственного леса, однолетних пастбищ или другого растительного покрова с годовым циклом. Укажите название импорта: roi. Информацию о программном создании геометрических объектов можно найти на этой странице.

Теперь давайте используем точку roi, чтобы построить график NDVI по времени в пикселе под этой точкой. Диаграммы в Earth Engine создаются с помощью пакета ui.Chart. Подробнее о том, как создавать диаграммы в Earth Engine… В частности, для создания диаграммы за определенный период времени можно использовать метод ui.Chart.image.series():

Редактор кода (JavaScript)

// Create a chart.
var chart = ui.Chart.image.series({
  imageCollection: withNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'NDVI over time'});

// Display the chart in the console.
print(chart);

Для геометрии roi мы выбрали точку в сельскохозяйственном районе, в результате чего получилась диаграмма, похожая на рисунок 10. Обратите внимание, что параметры конструктора диаграммы включают редуктор и масштаб, например reduceRegion(). Поскольку точка, которую мы указываем в качестве региона, может пересекаться только с одним пикселем, достаточно использовать редуктор first. Если у вас более крупный регион, вам следует использовать "среднее" или другое средство сокращения, которое указывает, как агрегировать пиксели. Также обратите внимание, что для визуализации диаграммы достаточно ее напечатать.

Tutorial_api_10_ndvi_chart.png
Рисунок 10. Диаграмма Landsat NDVI с течением времени в геометрии точки.

Отступление: простое маскирование облаков для Landsat

Вы могли заметить, что временной ряд значений NDVI в точке выглядит немного зашумленным. Скорее всего, это связано с облаками. Чтобы уменьшить этот эффект, в Earth Engine включен алгоритм маскирования облаков для датчиков Landsat с тепловым диапазоном: ee.Algorithms.Landsat.simpleCloudScore(). В качестве входных данных используется изображение отражательной способности Landsat TOA и добавляется полоса с именем cloud, которая является индексом облачности в пикселе от 0 до 100, от наименьшей до наибольшей облачности соответственно. Изменив функцию, которую вы сопоставили с коллекцией, вы можете использовать произвольный порог (20) для индекса облачности, чтобы немного очистить диаграмму:

Редактор кода (JavaScript)

var cloudlessNDVI = l8.map(function(image) {
  // Get a cloud score in [0, 100].
  var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');

  // Create a mask of cloudy pixels from an arbitrary threshold.
  var mask = cloud.lte(20);

  // Compute NDVI.
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');

  // Return the masked image with an NDVI band.
  return image.addBands(ndvi).updateMask(mask);
});

print(ui.Chart.image.series({
  imageCollection: cloudlessNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'Cloud-masked NDVI over time'}));

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

Tutorial_api_11_cloudless_chart.png
Рисунок 11. Диаграмма NDVI с маской облаков за определенный период времени в геометрии точки.

Экспорт изображений

Вы узнали, как экспортировать диаграмму с данными, вычисленными Earth Engine. А как экспортировать изображение целиком? Предположим, вы создали композитное изображение с самыми зелеными пикселями, как описано в предыдущем разделе:

Редактор кода (JavaScript)

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

Единственное отличие этого кода от того, что вы делали ранее, заключается в том, что теперь мы используем коллекцию с маской облаков. Вы можете экспортировать подмножество (определенное регионом) с помощью пакета Export. Подробнее об экспорте растровых изображений и векторных данных из Earth Engine… Например, чтобы экспортировать изображение, которое можно легко встроить в другие документы, создайте изображение визуализации, как вы делали ранее, и экспортируйте его в папку Google Диска:

Редактор кода (JavaScript)

// Create a 3-band, 8-bit, color-IR composite to export.
var visualization = greenest.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

// Create a task that you can launch from the Tasks tab.
Export.image.toDrive({
  image: visualization,
  description: 'Greenest_pixel_composite',
  scale: 30
});

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

Причина, по которой следует соблюдать осторожность при экспорте без аргумента region, заключается в том, что если вы установите относительно небольшое значение для scale, а карта будет уменьшена до большой области, вы экспортируете потенциально очень большое изображение в папку на Диске. Дополнительную информацию и список возможных параметров конфигурации можно найти в документации по Export.image.toDrive() на вкладке Документация.

На этом введение в Earth Engine API завершено. Теперь вы знакомы с большинством наиболее распространенных функций Earth Engine и можете уверенно переходить к более сложному анализу. Обязательно прочитайте документацию и поищите ответы на другие вопросы на форуме. Удачи!