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ê está trabalhando, as coleções de imagens também têm um ID. Assim como nas imagens únicas, é possível descobrir o ID de uma coleção de imagens pesquisando o Data Catalog do Earth Engine no Editor de código e acessando 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 esse conjunto de dados usando o botão Importar e renomeie-o como l8 ou copie o ID no construtor da coleção de imagens:

Editor de código (JavaScript)

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

Como filtrar coleções de imagens

Vale ressaltar 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 coleção por tempo ou espaço, filtre-a. Por exemplo, para filtrar a coleção de 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. Mova para 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 importações, vá para a próxima etapa). Use a ferramenta de desenho de pontos () e marque um ponto na área de interesse. Nomeie a importação como point. Agora, filtre a coleção l8 para receber apenas as imagens que cruzam 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. Confira a guia Docs 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 vez. Por exemplo, não é possível imprimir toda a coleção l8. Depois de executar o método print(), é possível inspecionar as coleções impressas no console. Ao expandir o ImageCollection usando o zippy () e, em seguida, expandir a lista de features, você verá uma lista de imagens, cada uma das quais também pode ser expandida e inspecionada. Essa é uma maneira de descobrir o ID de uma imagem individual. Outra maneira mais programática de conseguir imagens individuais para análise é classificar o acervo para conseguir 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 de imagens impressas, você pode ter observado uma propriedade de metadados chamada CLOUD_COVER. Use essa propriedade para ver a imagem com menos nuvens 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: como exibir imagens RGB

Quando uma imagem multibanda é adicionada a um mapa, o Earth Engine escolhe as três primeiras bandas da imagem e as exibe 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 com escala de zoom 9. Em seguida, a imagem é exibida com um objeto vazio ({}) para o parâmetro visParams (consulte a documentação de 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, B, respectivamente, e estendidas 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 uma composição de cores verdadeiras, é necessário informar ao Earth Engine para usar as bandas "B4", "B3" e "B2" do Landsat 8 para R, G e B, respectivamente. Especifique quais bandas 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 reflectância de alvos típicos da superfície da Terra. Embora as listas possam ser usadas para especificar valores diferentes para cada banda, aqui basta especificar 0.3 como max e usar o valor padrão de zero para o parâmetro min. Combinar os parâmetros de visualização em um objeto e exibir:

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 quando você visualizar coleções de imagens.

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

Tente visualizar bandas diferentes. Outra combinação favorita é "B5", "B4" e "B3", que é chamada de composição de cores falsas. Outras composições de cores falsas interessantes são descritas aqui.

Como o Earth Engine foi projetado para fazer análises em grande escala, você não se limita a trabalhar com apenas uma cena. Agora é hora de exibir 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 Inspetor e clicar na imagem, você verá uma lista de valores de pixel (ou um gráfico) na seção Pixels e uma lista de objetos de imagem na seção Objetos do inspetor.

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