Ранее вы узнали, как получить отдельные сцены Landsat, выполнив следующие действия, где l8
и point
— это импортированные данные, представляющие коллекцию Landsat 8 TOA и геометрию интересующей области: Редактор кода (JavaScript)
// Define a point of interest. Use the UI Drawing Tools to import a point
// geometry and name it "point" or set the point coordinates with the
// ee.Geometry.Point() function as demonstrated here.
var point = ee.Geometry.Point([-122.292, 37.9018]);
// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
// Get the least cloudy image in 2015.
var image = ee.Image(
l8.filterBounds(point)
.filterDate('2015-01-01', '2015-12-31')
.sort('CLOUD_COVER')
.first()
);
Предположим, что вы хотите вычислить нормализованный индекс разности вегетации (NDVI) на основе снимка Landsat. Растительность отражает свет в ближней инфракрасной (NIR) области электромагнитного спектра и поглощает свет в красной ( Узнайте больше об отражении NIR растительностью ). NDVI использует это для создания единого значения, приблизительно отражающего фотосинтетическую активность, происходящую в пикселе. Расчет производится по формуле (NIR - красный) / (NIR + красный). Результатом является число от 1 до -1, где пиксели с высокой фотосинтетической активностью имеют высокий NDVI. Вот один из способов вычисления NDVI в Earth Engine:
Редактор кода (JavaScript)
// Compute the Normalized Difference Vegetation Index (NDVI). var nir = image.select('B5'); var red = image.select('B4'); var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI'); // Display the result. Map.centerObject(image, 9); var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']}; Map.addLayer(ndvi, ndviParams, 'NDVI image');
Результат должен выглядеть примерно так, как показано на рисунке 8. Обратите внимание, что мы используем функцию select()
о которой вы узнали в предыдущем разделе о маскировании , для получения ближнего инфракрасного и красного диапазонов, а затем вычисляем NDVI с помощью математических операторов изображений, которые вы также видели ранее в разделе «Математические операции Image
. Наконец, отображаем изображение с палитрой. Здесь мы использовали названия цветов вместо шестнадцатеричных строк в палитре. (Подробнее см. во внешнем справочнике по CSS-цветам .)

Операция нормализованной разности настолько распространена в дистанционном зондировании, что в ee.Image
есть сокращённая функция , полезная для упрощения кода в предыдущем примере:
Редактор кода (JavaScript)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
Отображение функции над коллекцией
Предположим, что вы хотите добавить индекс NDVI к каждому изображению в коллекции. В Earth Engine это можно сделать, вызвав функцию map()
для коллекции. Не путайте map()
с объектом Map
. Первый метод относится к коллекции и использует map в контексте параллельных вычислений, применяя функцию к каждому элементу коллекции. Функция определяет операции, которые будут применены к каждому элементу коллекции. Вы видели простую функцию в руководстве по JavaScript , но теперь мы создадим функцию, включающую функциональность Earth Engine. Например, скопируйте предыдущий код NDVI в функцию, которая возвращает входное изображение с диапазоном NDVI:
Редактор кода (JavaScript)
var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; // Test the addNDVI function on a single image. var ndvi = addNDVI(image).select('NDVI');
Этот код может быть не столь эффективен для вычисления NDVI для отдельного изображения, но эту функцию можно использовать в качестве аргумента функции map()
для добавления канала NDVI к каждому изображению в коллекции. Часто бывает полезно сначала протестировать функцию на одном изображении, чтобы убедиться, что она работает так, как вы ожидаете. После того, как вы протестировали функцию на отдельном изображении и убедились, что она работает так, как вам нужно, вы можете применить её к коллекции:
Редактор кода (JavaScript)
var withNDVI = l8.map(addNDVI);
Чтобы убедиться, что это действительно добавляет диапазон NDVI к каждому изображению в коллекции, вы можете добавить коллекцию withNDVI
на карту и запросить случайное местоположение с помощью вкладки «Инспектор» . Вы должны заметить, что теперь каждое изображение в коллекции имеет диапазон с именем NDVI
.
Создайте самый экологичный пиксельный композит
Теперь, когда вы создали коллекцию изображений, в которой каждому изображению соответствует канал NDVI, мы можем изучить новый способ создания композитов: qualityMosaic()
. Вы могли заметить разрывы между траекториями Landsat, даже в медианном композите пикселей. Частично это может быть связано с различиями в фенологии , поскольку изображения на соседних траекториях были получены в разное время (в частности, с разницей в 8 дней). Один из способов минимизировать это — попытаться установить значения пикселей в композите примерно из одной и той же фенологической фазы, например, времени максимальной зелени растений (когда листья распустились и фотосинтетически активны). Если мы определим максимальную зеленость по максимальному NDVI, мы можем использовать qualityMosaic()
для создания композита, в котором каждый пиксель содержит максимальный пиксель NDVI из коллекции. Теперь вы можете использовать добавленный канал NDVI в вашей коллекции withNDVI
:
Редактор кода (JavaScript)
// Make a "greenest" pixel composite. var greenest = withNDVI.qualityMosaic('NDVI'); // Display the result. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(greenest, visParams, 'Greenest pixel composite');
Результат этого кода должен выглядеть примерно так, как показано на рисунке 9. Сравнивая рисунок 9 с медианным композитом, показанным на рисунке 6 , можно заметить, что композит с самым зелёным пикселем действительно намного зелёнее. Однако при внимательном рассмотрении водоёмов должна быть очевидна другая проблема. В частности, водоёмы теперь выглядят мутными. Это связано с тем, как работает метод qualityMosaic()
: в каждой точке анализируется весь временной ряд, и пиксель с максимальным значением в диапазоне NDVI устанавливается в качестве композитного значения. Поскольку NDVI выше над облаками, чем над водой, водные области получают облачные пиксели, в то время как все участки с растительностью выглядят зелёными, поскольку NDVI достигает максимума, когда растительность в пикселе фотосинтетически активна.

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