Coletâneas de imagens

Uma coleção de imagens se refere a um conjunto de imagens do Earth Engine. Por exemplo, a coleção de todas as imagens do Landsat 8 é um ee.ImageCollection. Assim como a imagem SRTM com que você estava trabalhando, as coleções de imagens também têm um ID. Assim como com imagens únicas, é possível descobrir o ID de uma coleção de imagens pesquisando o catálogo de dados do Earth Engine no Editor de código e consultando a página de detalhes do conjunto de dados. Por exemplo, pesquise "landsat 8 toa" e clique no primeiro resultado, que deve corresponder ao conjunto de dados USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance. Importe o conjunto de dados usando o botão Importar e renomeie como l8 ou copie o ID para o construtor da coleção de imagens:

Editor de código (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

Filtrar coleções de imagens

Vale a pena notar que essa coleção representa todas as cenas do Landsat 8 coletadas em todo o planeta. Muitas vezes, é útil extrair uma única imagem ou um subconjunto de imagens para testar algoritmos. Para limitar a coleta por tempo ou espaço, filtre os dados. Por exemplo, para filtrar a coleção e mostrar apenas imagens que cobrem um local específico, primeiro defina sua área de interesse com um ponto (ou linha ou polígono) usando as ferramentas de desenho de geometria. Panorame até a área de interesse, passe o cursor sobre Importações de geometria (se você já tiver uma ou mais geometrias definidas) e clique em +nova camada (se não tiver nenhuma importação, vá para a próxima etapa). Selecione a ferramenta de desenho de ponto () e crie um ponto na área de interesse. Nomeie a importação como point. Agora, filtre a coleção l8 para receber apenas as imagens que se cruzam com o ponto e adicione um segundo filtro para limitar a coleção apenas às imagens adquiridas em 2015:

Editor de código (JavaScript)

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

Aqui, filterBounds() e filterDate() são métodos de atalho para o método mais geral filter() em coleções de imagens, que usa um ee.Filter() como argumento. Acesse a guia Documentos do Editor de código para saber mais sobre esses métodos. O argumento para filterBounds() é o ponto que você digitalizou, e os argumentos para filterDate() são duas datas, expressas como strings.

É possível print() as coleções filtradas. Não é possível imprimir mais de 5.000 itens de uma só vez. Por exemplo, não é possível imprimir toda a coleção l8. Depois de executar o método print(), inspecione as coleções impressas no console. Quando você expande o ImageCollection usando o zippy () e depois a lista de features, uma lista de imagens aparece. Cada uma delas também pode ser expandida e inspecionada. Essa é uma maneira de descobrir o ID de uma imagem individual. Outra maneira mais programática de receber imagens individuais para análise é classificar a coleção para receber a imagem mais recente, mais antiga ou ideal em relação a alguma propriedade de metadados. Por exemplo, ao inspecionar os objetos de imagem nas coleções impressas, você pode ter observado uma propriedade de metadados chamada CLOUD_COVER. Use essa propriedade para receber a imagem menos nublada de 2015 na sua área de interesse:

Editor de código (JavaScript)

// This will sort from least to most cloudy.
var sorted = temporalFiltered.sort('CLOUD_COVER');

// Get the first (least cloudy) image.
var scene = sorted.first();

Agora você já pode mostrar a imagem.

Digressão: exibição de imagens RGB

Quando uma imagem multibanda é adicionada a um mapa, o Earth Engine escolhe as três primeiras bandas da imagem e as mostra como vermelho, verde e azul por padrão, esticando-as de acordo com o tipo de dados, conforme descrito anteriormente. Normalmente, isso não funciona. Por exemplo, se você adicionar a imagem do Landsat (scene no exemplo anterior) ao mapa, o resultado será insatisfatório:

Editor de código (JavaScript)

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

Primeiro, o mapa é centralizado na imagem na escala de zoom 9. Em seguida, a imagem é mostrada com um objeto vazio ({}) para o parâmetro visParams (consulte a documentação Map.addLayer() para mais detalhes). Como resultado, a imagem é mostrada com a visualização padrão: as três primeiras bandas são mapeadas para R, G e B, respectivamente, e esticadas para [0, 1], já que as bandas são do tipo de dados float. Isso significa que a banda de aerossol costeiro ("B1") é renderizada em vermelho, a banda azul ("B2") é renderizada em verde, e a banda verde ("B3") é renderizada em azul. Para renderizar a imagem como um composto de cores verdadeiras, diga ao Earth Engine para usar as bandas do Landsat 8 "B4", "B3" e "B2" para R, G e B, respectivamente. Especifique quais intervalos usar com a propriedade bands do objeto visParams. Saiba mais sobre as bandas do Landsat nesta referência.

Você também precisa fornecer valores de min e max adequados para mostrar a refletância de alvos típicos da superfície da Terra. Embora as listas possam ser usadas para especificar valores diferentes para cada banda, aqui é suficiente especificar 0.3 como max e usar o valor padrão zero para o parâmetro min. Combinar os parâmetros de visualização em um objeto e mostrar:

Editor de código (JavaScript)

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

O resultado será parecido com a Figura 5. Esse código atribui o objeto de parâmetros de visualização a uma variável para possível uso futuro. Como você vai descobrir em breve, esse objeto será útil ao visualizar coleções de imagens.

Tutorial_api_05_true_color.png
Figura 5. Imagem de refletância TOA do Landsat 8 como um composto de cores verdadeiras, esticado para [0, 0,3].

Tente visualizar diferentes bandas. Outra combinação favorita é "B5", "B4" e "B3", chamada de composição de falsa cor. Outros composições interessantes de falsa cor são descritas aqui.

Como o Earth Engine foi projetado para fazer análises em grande escala, você não precisa trabalhar com apenas uma cena. Agora é hora de mostrar uma coleção inteira como um composto RGB.

Mostrar coleções de imagens

Adicionar uma coleção de imagens a um mapa é semelhante a adicionar uma imagem a um mapa. Por exemplo, usando imagens de 2016 na coleção l8 e o objeto visParams definido anteriormente,

Editor de código (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31');
Map.addLayer(landsat2016, visParams, 'l8 collection');

Agora você pode diminuir o zoom e ver um mosaico contínuo onde as imagens do Landsat são coletadas (ou seja, sobre a terra). Além disso, ao usar a guia Inspector e clicar na imagem, você vai encontrar uma lista de valores de pixel (ou um gráfico) na seção Pixels e uma lista de objetos de imagem na seção Objects do inspetor.

Se você diminuiu o zoom o suficiente, provavelmente notou algumas nuvens no mosaico. Quando você adiciona um ImageCollection ao mapa, ele é mostrado como um valor recente composto, ou seja, apenas os pixels mais recentes são exibidos (como chamar mosaic() na coleção). Por isso, é possível notar descontinuidades entre percursos adquiridos em momentos diferentes. É por isso que muitas áreas podem parecer nubladas. Na próxima página, saiba como mudar a forma como as imagens são combinadas para se livrar dessas nuvens irritantes.