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.
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.