Exportar gráficos e imagens

O Earth Engine é uma ferramenta analítica avançada, mas talvez seja necessário exportar os resultados da sua análise para incorporar gráficos, imagens, mapas etc. em relatórios ou publicações. Nesta seção, você vai aprender a criar gráficos e imagens que podem ser exportados e visualizados em outros softwares. Na seção anterior, você usou um código como o seguinte para adicionar uma banda de NDVI a cada imagem em uma coleção, em que a variável l8 faz referência à coleção de reflectância TOA do Landsat 8:

Editor de código (JavaScript)

// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

// Map a function over the Landsat 8 TOA collection to add an NDVI band.
var withNDVI = l8.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

Criando o gráfico

Suponha que você queira um gráfico de NDVI ao longo do tempo em um determinado local. Para criar esse gráfico, a primeira etapa é escolher um local de interesse. Crie um ponto usando a ferramenta de desenho de pontos () e faça uma geometria de ponto único na sua área de interesse. Se você já tiver importações, passe o cursor sobre Importações de geometria e clique em + nova camada primeiro. Localize o ponto em uma área de agricultura, floresta decídua, pastagem anual ou alguma outra cobertura de terra com um ciclo anual. Nomeie a importação como roi. Consulte esta página para saber como criar geometrias de forma programática.

Agora, vamos usar o ponto roi para criar um gráfico de NDVI ao longo do tempo no pixel abaixo desse ponto. Para criar gráficos no Earth Engine, use o pacote ui.Chart. Saiba mais sobre como criar gráficos no Earth Engine. Para criar um gráfico ao longo do tempo, use o método ui.Chart.image.series():

Editor de código (JavaScript)

// Create a chart.
var chart = ui.Chart.image.series({
  imageCollection: withNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'NDVI over time'});

// Display the chart in the console.
print(chart);

Para a geometria roi, escolhemos um ponto em uma área agrícola, resultando em um gráfico semelhante à Figura 10. Observe que os parâmetros para o construtor do gráfico incluem um redutor e uma escala como reduceRegion(). Como o ponto que estamos fornecendo como região só pode cruzar um pixel, basta usar o redutor "first". Se você tiver uma região maior, use "mean" ou outro redutor que especifique como agregar pixels. Além disso, para visualizar um gráfico, basta imprimi-lo.

Tutorial_api_10_ndvi_chart.png
Figura 10. Gráfico do NDVI do Landsat ao longo do tempo em uma geometria de ponto.

Digressão: máscara de nuvem simples para o Landsat

Algo que você pode ter notado sobre esse gráfico é que a série temporal de valores de NDVI no ponto parece um pouco ruidosa. Isso provavelmente se deve às nuvens. Para reduzir esse efeito, o Earth Engine inclui um algoritmo de mascaramento de nuvens para sensores Landsat com uma banda térmica: ee.Algorithms.Landsat.simpleCloudScore(). Ela usa uma imagem de reflectância TOA do Landsat como entrada e adiciona uma banda chamada cloud, que é um índice de nebulosidade no pixel de 0 a 100, do menos ao mais nublado, respectivamente. Ao modificar a função que você mapeou na coleção, é possível usar um limite arbitrário (20) no índice de nuvens para limpar um pouco o gráfico:

Editor de código (JavaScript)

var cloudlessNDVI = l8.map(function(image) {
  // Get a cloud score in [0, 100].
  var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');

  // Create a mask of cloudy pixels from an arbitrary threshold.
  var mask = cloud.lte(20);

  // Compute NDVI.
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');

  // Return the masked image with an NDVI band.
  return image.addBands(ndvi).updateMask(mask);
});

print(ui.Chart.image.series({
  imageCollection: cloudlessNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'Cloud-masked NDVI over time'}));

O resultado com máscara de nuvens é ilustrado na Figura 11. Observe que a série temporal parece um pouco mais suave, mas ainda pode conter pixels afetados por nuvens. Ajuste o limite no índice de nuvens e observe a série temporal no gráfico para saber como esse limite pode afetar os resultados.

Tutorial_api_11_cloudless_chart.png
Figura 11. Gráfico do NDVI com máscara de nuvens ao longo do tempo em uma geometria de ponto.

Como exportar imagens

Você viu uma maneira de exportar um gráfico de dados calculados pelo Earth Engine, mas e uma imagem inteira? Por exemplo, suponha que você tenha criado um composto de pixel mais verde, conforme discutido na seção anterior:

Editor de código (JavaScript)

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

A única diferença entre esse código e o que você fez anteriormente é que agora estamos usando a coleção com máscara de nuvens. É possível exportar um subconjunto (definido por uma região) dele usando o pacote Export. (Saiba mais sobre como exportar dados rasterizados e vetoriais do Earth Engine.) Por exemplo, para exportar uma imagem que possa ser facilmente incorporada a outros documentos, vamos criar uma imagem de visualização, como você fez anteriormente, e exportá-la para sua pasta do Google Drive:

Editor de código (JavaScript)

// Create a 3-band, 8-bit, color-IR composite to export.
var visualization = greenest.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

// Create a task that you can launch from the Tasks tab.
Export.image.toDrive({
  image: visualization,
  description: 'Greenest_pixel_composite',
  scale: 30
});

Ao executar esse código, uma nova tarefa é criada na guia Tarefas. Para abrir a caixa de diálogo de configuração de exportação, clique no botão EXECUTAR na guia Tarefas. Depois de configurar a tarefa, clique no botão Executar na caixa de diálogo para iniciar a exportação. Mas antes de fazer isso, atenção:

É preciso ter cuidado ao exportar sem um argumento region, porque, se você definir um valor relativamente pequeno para scale e o mapa for reduzido para uma área grande, uma imagem potencialmente muito grande será exportada para sua pasta do Drive. Consulte os documentos do Export.image.toDrive() na guia Documentos para mais detalhes e uma lista de possíveis parâmetros de configuração.

Isso conclui esta introdução à API Earth Engine. Agora você já conhece grande parte da funcionalidade mais comum do Earth Engine e pode prosseguir com confiança para análises mais complexas. Leia a documentação e pesquise no fórum para encontrar respostas para outras perguntas. Divirta-se com os códigos!