Exportar gráficos e imagens

O Earth Engine é uma ferramenta de análise 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 este para adicionar uma banda NDVI a todas as imagens de uma coleção, em que a variável l8 faz referência à coleção de refletâ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 do NDVI ao longo do tempo em um determinado local. Para criar um gráfico assim, a primeira etapa é escolher um local de interesse. Crie um ponto usando a ferramenta de desenho de ponto () 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 vegetal com um ciclo anual. Nomeie a importação como roi. Consulte esta página para informações sobre como criar geometrias de maneira programática.

Agora vamos usar o ponto roi para criar um gráfico de NDVI ao longo do tempo no pixel abaixo desse ponto. A maneira de criar gráficos no Earth Engine é com o pacote ui.Chart. Saiba 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. Os parâmetros do construtor de gráficos incluem um redutor e uma escala como reduceRegion(). Como o ponto que estamos fornecendo como uma região só pode cruzar um pixel, basta usar o redutor "first". Se você tiver uma região maior, use uma média 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 da Landsat ao longo do tempo em uma geometria de ponto.

Digressão: mascaramento de nuvem simples para Landsat

Você deve ter notado que a série temporal de valores de NDVI no ponto parece um pouco ruidosa. Isso provavelmente acontece por causa das nuvens. Para atenuar esse efeito, o Earth Engine inclui um algoritmo de mascaramento de nuvens para sensores do Landsat com uma banda térmica: ee.Algorithms.Landsat.simpleCloudScore(). Ele usa uma imagem de refletância TOA do Landsat como entrada e adiciona uma banda chamada cloud, que é um índice de nebulosidade no pixel de zero a 100, do menos ao mais nublado, respectivamente. Ao modificar a função mapeada na coleção, é possível usar um limite arbitrário (20) no índice de nuvem 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 nuvem é ilustrado na Figura 11. A série temporal parece um pouco mais suave, mas ainda pode conter pixels afetados por nuvens. Ajuste o limite no índice da nuvem e observe a série temporal representada para saber como esse limite pode afetar seus resultados.

Tutorial_api_11_cloudless_chart.png
Figura 11. Gráfico do NDVI mascarado por nuvem ao longo do tempo em uma geometria de ponto.

Exportar imagens

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

Editor de código (JavaScript)

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

A única diferença entre este código e o que você fez antes é que agora estamos usando a coleção mascarada de nuvem. É possível exportar um subconjunto (definido por uma região) usando o pacote Export. Saiba mais sobre como exportar dados raster e vetoriais do Earth Engine. Por exemplo, para exportar uma imagem que possa ser incorporada facilmente em outros documentos, crie uma imagem de visualização, como você fez antes, e exporte 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, observe que 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 disso, saiba que:

O motivo para ter cuidado ao exportar sem um argumento region é que, se você definir um valor relativamente pequeno para scale e o mapa for reduzido para uma área grande, vai exportar uma imagem potencialmente muito grande para a pasta do Drive. Consulte a documentação 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 a outras dúvidas. Divirta-se com os códigos!