Anteriormente, você aprendeu a acessar cenas individuais do Landsat fazendo algo como isto,
em que l8 e point são importações que representam a coleção TOA do Landsat 8
e uma geometria de área de interesse:
Editor de código (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() );
Agora, suponha que você queira calcular uma imagem do Índice de Vegetação por Diferença Normalizada (NDVI, na sigla em inglês) com base na imagem do Landsat. A vegetação reflete a luz na parte do infravermelho próximo (NIR, na sigla em inglês) do espectro eletromagnético e absorve a luz na parte vermelha (saiba mais sobre a reflectância NIR da vegetação). O NDVI usa isso para criar um valor único que reflete aproximadamente a atividade fotossintética que ocorre em um pixel. O cálculo é (NIR - vermelho) / (NIR + vermelho). Isso resulta em um número entre 1 e -1, em que os pixels com alta atividade fotossintética têm um NDVI alto. Esta é uma maneira de calcular o NDVI no Earth Engine:
Editor de código (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');
O resultado será parecido com a Figura 8. Observe que usamos a função select(),
que você aprendeu na seção anterior sobre
mascaramento, para obter as bandas NIR e vermelha e, em seguida, calcular o NDVI usando operadores matemáticos de imagem que você também já viu na
seção sobre matemática do Image. Por fim, mostre a imagem com uma paleta. Aqui,
usamos nomes de cores em vez de strings hexadecimais na paleta. Consulte
esta referência externa
sobre cores CSS para mais detalhes.
A operação de diferença normalizada é tão comum no sensoriamento remoto que há uma
função de atalho em um
ee.Image que é útil para simplificar o código no exemplo anterior:
Editor de código (JavaScript)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
Como mapear uma função em uma coleção
Agora, suponha que você queira adicionar o NDVI a todas as imagens de uma coleção. A
maneira de fazer isso no Earth Engine é map() uma função na coleção.
Não confunda map() com o objeto Map. O primeiro é um método
em uma coleção e usa map no
sentido de computação paralela
de aplicar uma função a cada elemento em uma coleção. A função define as
operações que serão aplicadas a cada elemento na coleção. Você já viu
uma função simples no tutorial de JavaScript, mas
agora vamos criar uma função que inclui a funcionalidade do Earth Engine. Por exemplo,
copie o código NDVI anterior para uma função que retorna a imagem de entrada com uma banda NDVI:
Editor de código (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');
Esse código pode não ser tão eficiente para calcular o NDVI de uma única imagem, mas essa
função pode ser usada como um argumento para map() para adicionar uma banda de NDVI
a cada imagem na coleção. Muitas vezes, é útil testar primeiro uma função em uma única
imagem para garantir que ela esteja se comportando como esperado. Depois de testar a função
em uma imagem individual e determinar que ela faz o que você quer, é possível mapeá-la
na coleção:
Editor de código (JavaScript)
var withNDVI = l8.map(addNDVI);
Para verificar se isso realmente está colocando uma banda NDVI em cada imagem dessa coleção,
adicione a coleção withNDVI ao mapa e consulte um local aleatório
com a guia Inspector. Cada imagem na
coleção agora tem uma banda chamada NDVI.
Criar um composto de pixel mais verde
Agora que você criou uma coleção de imagens em que cada imagem tem uma banda NDVI, podemos
explorar uma nova maneira de criar compostos: qualityMosaic(). Você deve ter notado
descontinuidades entre os caminhos do Landsat, mesmo na composição de pixel mediano. Parte do
motivo para isso pode ser devido a diferenças na
fenologia como resultado de imagens em
caminhos adjacentes sendo coletadas em momentos diferentes (especificamente, com 8 dias de diferença). Uma maneira de
minimizar isso é tentar definir valores de pixel no composto do mesmo estágio
fenológico, por exemplo, o momento de máxima verdura das plantas (quando as folhas
estão presentes e fotossinteticamente ativas). Se definirmos o máximo de verdor pelo NDVI máximo, podemos usar qualityMosaic() para criar um composto em que cada pixel contém o pixel de NDVI máximo da coleção.
Agora você pode usar a banda NDVI adicionada na coleção withNDVI:
Editor de código (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');
O resultado desse código será parecido com a Figura 9. Ao comparar a Figura 9 com o
composto mediano mostrado na Figura 6,
observe que o composto de pixel mais verde é, de fato, muito mais verde. No entanto, uma análise
mais detalhada dos corpos d'água revela um problema diferente. Especificamente,
os corpos d'água agora aparecem turvos. Isso ocorre devido à forma como o método qualityMosaic()
funciona: em cada local, toda a série temporal é examinada, e o pixel com o
valor máximo na banda NDVI é definido como o valor composto. Como o NDVI é maior sobre
as nuvens do que sobre a água, as áreas de água recebem pixels nublados, enquanto as áreas com vegetação aparecem verdes,
porque o NDVI é mais alto quando a vegetação no pixel é fotossinteticamente ativa.
Agora você já conhece várias maneiras de criar imagens compostas e mosaicos no Earth Engine. É possível criar composições de valor recente, mediana ou pixel mais verde com base em imagens filtradas por horário e local ou em todas as imagens da coleção. Você aprendeu a fazer cálculos nas imagens e extrair informações. A próxima página aborda maneiras de extrair informações do Earth Engine, por exemplo, como um gráfico ou um conjunto de dados exportado para sua pasta do Google Drive.