Com a coleção de refletância TOA do Landsat 8 carregada em uma variável chamada l8
, você viu que o código a seguir resulta em um mosaico de valor recente:
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');
Um dos problemas desse composto é que ele está cheio de nuvens. Em vez de apenas usar o último pixel da coleção (quando você adiciona uma coleção ao mapa, o Earth Engine chama implicitamente mosaic()
), é possível reduzir o ImageCollection
(saiba mais sobre como reduzir coleções de imagens).
Composição com redutores
Você conheceu os redutores para receber estatísticas em uma região de imagem. Essa foi uma redução espacial. Reduzir uma coleção de imagens a uma imagem é uma redução temporal quando a coleção representa imagens ao longo do tempo. O tipo de Reducer
usado define como o Earth Engine processa pixels sobrepostos. O Landsat 8 visita o mesmo ponto na Terra a cada 16 dias. Isso significa que, em um período de seis meses, haverá aproximadamente 12 imagens (e mais onde as cenas se sobrepõem). Cada pixel no mapa é derivado de uma pilha de pixels, um de cada imagem na coleção exibida.
Apenas adicionar a coleção ao mapa resulta na seleção do pixel mais recente, que é da imagem mais recente na pilha. Esse comportamento pode ser alterado usando redutores do Earth Engine. Por exemplo, em vez de usar o pixel mais recente da pilha, é possível instruir o Earth Engine a escolher o valor mediano na pilha. Isso tem o benefício de remover nuvens (que têm um valor alto) e sombras (que têm um valor baixo). Quando uma coleção de imagens é reduzida usando o redutor de mediana, o valor composto é a mediana em cada banda ao longo do tempo. Por exemplo, usando cenas do Landsat em 2016:
Editor de código (JavaScript)
// Get the median over time, in each band, in each pixel. var median = l8.filterDate('2016-01-01', '2016-12-31').median(); // Make a handy variable of visualization parameters. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; // Display the median composite. Map.addLayer(median, visParams, 'median');
A novidade neste código é o método median()
aplicado a uma coleção de imagens.
Assim como os métodos de filtragem, esse é um atalho para o método reduce()
mais geral em coleções de imagens, que usa um ee.Reducer()
como argumento. Consulte o pacote ee.Reducer
na guia Documentos do Editor de código para ver uma lista de todos os redutores do Earth Engine. Ao considerar um redutor para uma coleção de imagens, observe que a saída é uma imagem. Portanto, redutores com saídas não numéricas, por exemplo, histogram
ou toList
, não funcionam com uma coleção de imagens.

Ao diminuir o zoom na composição mediana, você verá algo como a Figura 6. Isso deve ter uma aparência consideravelmente melhor do que o valor composto recente que você criou antes. Nesse momento, vale a pena voltar atrás e considerar o que foi feito para criar essa média combinada. O Earth Engine carregou toda a coleção do Landsat 8 nos EUA continentais e calculou a mediana de cada pixel. É muita coisa! É claro que você pode calcular as medianas anuais filtrando primeiro a coleção, como fez antes. O ponto é que, se você tivesse que baixar todas essas imagens e fazer essa composição, seria um grande projeto. Com o Earth Engine, você recebe um resultado em segundos.
Saiba mais sobre composição e mosaico neste link.
Mascaramento
Embora a mediana seja uma melhoria em relação ao valor recente, talvez você queira mascarar partes da imagem. A máscara de pixels em uma imagem torna esses pixels transparentes e os exclui da análise. Cada pixel em cada banda de uma imagem tem uma máscara. Os que têm um valor de máscara igual ou inferior a 0 serão transparentes. Os que têm uma máscara de qualquer valor acima de 0 serão renderizados. A máscara de uma imagem é definida usando uma chamada como
image1.mask(image2)
. Essa chamada usa os valores de image2
e os transforma na máscara de image1
. Todos os pixels em image2
com o valor 0 serão transparentes em image1
.
Por exemplo, suponha que você queira mascarar todos os pixels de água no composto de mediana. Uma máscara de água pode ser criada usando o conjunto de dados descrito por Hansen et al. (2013), que está no catálogo de dados do Earth Engine. Saiba mais sobre o conjunto de dados de Hansen et al. neste tutorial. Nesse conjunto de dados, a água tem o valor 2, a terra tem o valor 1 e "sem dados" tem o valor 0. Use um pouco de lógica para criar uma imagem de máscara com zeros onde não há terra:
Editor de código (JavaScript)
// Load or import the Hansen et al. forest change dataset. var hansenImage = ee.Image('UMD/hansen/global_forest_change_2015'); // Select the land/water mask. var datamask = hansenImage.select('datamask'); // Create a binary mask. var mask = datamask.eq(1); // Update the composite mask with the water mask. var maskedComposite = median.updateMask(mask); Map.addLayer(maskedComposite, visParams, 'masked');
Há algumas novidades nesse código que vale a pena mencionar em detalhes. Primeiro, a função select()
é útil para extrair as bandas de interesse de uma imagem. Aqui, selecionamos apenas a banda que nos interessa: datamask
. A próxima novidade é o operador lógico eq()
, que significa "igual a". Usamos eq(1)
para criar uma imagem binária em que todos os pixels que não têm o valor 1 na banda datamask
(aqueles que são água ou não têm dados) recebem o valor 0 na imagem resultante.
Como resultado dessa mascaragem, todos os pixels no composto da mediana que estão sobre a terra (de acordo com o conjunto de dados de Hansen et al.) ficam visíveis, mas aqueles sobre a água (ou sem dados) são transparentes e serão excluídos de qualquer análise feita na imagem maskedComposite
.
Mosaico
Ao combinar os conceitos de coleções de imagens, operadores lógicos, mascaramento e composição, é possível alcançar resultados cartográficos interessantes. Por exemplo, suponha que você queira uma imagem em que os pixels de terra sejam mostrados em cores verdadeiras e todos os outros pixels sejam mostrados em azul. Para isso, faça algo como:
Editor de código (JavaScript)
// Make a water image out of the mask. var water = mask.not(); // Mask water with itself to mask all the zeros (non-water). water = water.mask(water); // Make an image collection of visualization images. var mosaic = ee.ImageCollection([ median.visualize(visParams), water.visualize({palette: '000044'}), ]).mosaic(); // Display the mosaic. Map.addLayer(mosaic, {}, 'custom mosaic');
Há muita coisa acontecendo nesse código, então vamos analisar. Primeiro, usamos o operador lógico not()
para inverter a máscara que criamos antes. Especificamente, not()
transforma todos os zeros em uns e todos os não zeros em zeros. Não é totalmente correto chamar essa variável de water
porque ela também inclui alguns pixels sem dados, mas está tudo bem no contexto cartográfico atual. Em seguida, mascaramos a "água" com ela mesma. Isso resulta em uma imagem em que todos os pixels de água são 1 e todo o resto é mascarado. A etapa final é combinar as imagens com
mosaic()
. Como mosaic()
funciona em uma coleção de imagens, transmitimos uma lista de imagens que queremos combinar no construtor da coleção e chamamos mosaic()
como a etapa final. A ordem das imagens nessa lista é importante. Especificamente, a imagem de saída vai conter o último pixel não mascarado da
pilha de imagens na coleção de entrada. Nesse caso, isso funciona porque a camada de água é a última imagem (superior) da coleção e contém apenas pixels não mascarados onde há água.
As imagens na coleção são imagens de visualização. Quando você chama
visualize()
em uma imagem, ela é transformada em uma imagem de 3 bandas e 8 bits de acordo com os parâmetros de visualização
transmitidos. Os parâmetros de visualização padrão funcionam bem para imagens de 3 bandas e 8 bits. Portanto, não é necessário usar parâmetros de visualização ao adicionar a imagem ao mapa. O resultado será semelhante ao mostrado na Figura 7.

Neste ponto, você já viu maneiras de visualizar coleções de imagens como composições de valores recentes, métodos para combinar coleções de imagens usando redutores e métodos para criar composições personalizadas mascarando e criando mosaicos de uma coleção de imagens. Na próxima página, saiba como adicionar um índice de vegetação a todas as imagens de uma coleção e usar o índice para criar uma composição de "pixel mais verde".