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. Если у вас более крупный регион, вам следует использовать "среднее" или другое средство сокращения, которое указывает, как агрегировать пиксели. Также обратите внимание, что для визуализации диаграммы достаточно ее напечатать.
Отступление: простое маскирование облаков для 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. Обратите внимание, что временной ряд выглядит немного более сглаженным, но все равно может содержать пиксели, затронутые облаками. Измените пороговое значение индекса облачности и посмотрите на временной ряд, чтобы понять, как это значение влияет на результаты.
Экспорт изображений
Вы узнали, как экспортировать диаграмму с данными, вычисленными 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 и можете уверенно переходить к более сложному анализу. Обязательно прочитайте документацию и поищите ответы на другие вопросы на форуме. Удачи!