Como exportar imagens

É possível exportar imagens do Earth Engine no GeoTIFF ou TFRecord. Consulte Parâmetros de configuração para mais opções de saída.

Exemplo de configuração

Comece definindo os dados de imagem que serão exportados:

Editor de código (JavaScript)

// Load a landsat image and select three bands.
var landsat = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_123032_20140515')
  .select(['B4', 'B3', 'B2']);

// Create a geometry representing an export region.
var geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236]);

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Load a landsat image and select three bands.
landsat = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_123032_20140515').select(
    ['B4', 'B3', 'B2']
)

# Create a geometry representing an export region.
geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236])

Em seguida, defina os parâmetros de projeção que serão usados nas exportações a seguir. Usamos o crs parâmetro para especificar o sistema de coordenadas, e o crsTransform parâmetro para especificar com precisão a grade de pixels. O crsTransform parâmetro é uma lista de parâmetros de uma matriz de transformação afim na ordem principal da linha [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. A origem de uma imagem é definida pelos valores xTranslation e yTranslation, e o tamanho do pixel da imagem é definido pelos valores xScale e yScale. Consulte exemplos de matrizes afins.

Editor de código (JavaScript)

// Retrieve the projection information from a band of the original image.
// Call getInfo() on the projection to request a client-side object containing
// the crs and transform information needed for the client-side Export function.
var projection = landsat.select('B2').projection().getInfo();

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Retrieve the projection information from a band of the original image.
# Call getInfo() on the projection to request a client-side object containing
# the crs and transform information needed for the client-side Export function.
projection = landsat.select('B2').projection().getInfo()

Como definir scale

Como atalho, você pode especificar um parâmetro scale e o Earth Engine vai calcular um parâmetro crsTransform para você. No entanto, definir apenas a escala de uma imagem não especifica a origem da projeção e pode resultar em uma imagem deslocada em relação a outra com o mesmo tamanho de pixel.

O motivo da possível mudança é que o parâmetro scale é usado para preencher os valores xScale e yScale do crsTransform, mas os valores xTranslation e yTranslation são calculados de modo que, se forem divididos pelos valores xScale e yScale correspondentes, o restante será zero. Esses parâmetros especificam uma grade de pixels em que a origem da projeção está no canto de um pixel. Essa convenção difere dos parâmetros de tradução usados por alguns provedores de dados, que usam grades deslocadas da origem da projeção. Por exemplo, as imagens do Landsat fornecidas pelo USGS usam parâmetros de tradução que são deslocados por um pixel de 1/2 da origem da projeção (deslocamento de 15 m para as bandas de 30 m), enquanto as imagens do Sentinel-2 fornecidas pela ESA usam parâmetros de tradução alinhados com a origem da projeção. Se o crsTransform especificado em uma exportação não corresponder ao crsTransform da imagem original, os pixels de saída serão reamostrados (usando o vizinho mais próximo por padrão), o que fará com que a imagem resultante seja deslocada em relação à imagem original.

Em resumo, se você precisar corresponder os pixels da imagem exportada a uma imagem específica, use os parâmetros crs e crsTransform para ter controle total da grade.

para o Drive

Para exportar uma imagem para sua conta do Drive, use Export.image.toDrive(). Por exemplo, para exportar partes de uma imagem do Landsat, defina uma região para exportar e chame Export.image.toDrive():

Editor de código (JavaScript)

// Export the image, specifying the CRS, transform, and region.
Export.image.toDrive({
  image: landsat,
  description: 'imageToDriveExample_transform',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry
});

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Export the image, specifying the CRS, transform, and region.
task = ee.batch.Export.image.toDrive(
    image=landsat,
    description='imageToDriveExample_transform',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
)
task.start()

Quando esse código é executado, uma tarefa de exportação é criada na guia Tarefas do editor de código. Clique no botão Executar ao lado da tarefa para iniciá-la. Saiba mais sobre o gerenciador de tarefas na seção do editor de código. A imagem será criada na sua conta do Drive com o fileFormat especificado.

para o Cloud Storage

Para exportar uma imagem para um bucket do Google Cloud Storage, use Export.image.toCloudStorage(). Para exportar a imagem do Landsat no exemplo anterior para o Cloud Storage em vez do Drive, use:

Editor de código (JavaScript)

// Export the image to Cloud Storage.
Export.image.toCloudStorage({
  image: landsat,
  description: 'imageToCloudExample',
  bucket: 'your-bucket-name',
  fileNamePrefix: 'exampleExport',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry
});

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Export the image to Cloud Storage.
task = ee.batch.Export.image.toCloudStorage(
    image=landsat,
    description='imageToCloudExample',
    bucket='your-bucket-name',
    fileNamePrefix='exampleExport',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
)
task.start()

Assim como nas exportações para o Drive, inicie a exportação na guia Tarefas. O local do bucket do Cloud Storage pode afetar o desempenho e os custos de armazenamento. Consulte a entrada de perguntas frequentes sobre considerações de localização para mais informações.

para o recurso

Para exportar uma imagem para um recurso na pasta de recursos do Earth Engine, use Export.image.toAsset(). Para gerenciar seus recursos do Earth Engine ou verificar quanto da sua cota de armazenamento está em uso, use o gerenciador de recursos. O exemplo a seguir ilustra a exportação de partes de uma imagem do Landsat usando políticas de piramidação diferentes para a mesma banda. A política de piramidação indica como o Earth Engine calcula versões de resolução mais baixa do recurso. Saiba mais sobre como o Earth Engine processa várias resoluções no documento de escala.

Editor de código (JavaScript)

// Get band 4 from the Landsat image, copy it.
var band4 = landsat.select('B4').rename('b4_mean')
  .addBands(landsat.select('B4').rename('b4_sample'))
  .addBands(landsat.select('B4').rename('b4_max'));

// Export the image to an Earth Engine asset.
Export.image.toAsset({
  image: band4,
  description: 'imageToAssetExample',
  assetId: 'exampleExport',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  pyramidingPolicy: {
    'b4_mean': 'mean',
    'b4_sample': 'sample',
    'b4_max': 'max'
  }
});

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Get band 4 from the Landsat image, copy it.
band_4 = (
    landsat.select('B4')
    .rename('b4_mean')
    .addBands(landsat.select('B4').rename('b4_sample'))
    .addBands(landsat.select('B4').rename('b4_max'))
)

# Export the image to an Earth Engine asset.
task = ee.batch.Export.image.toAsset(
    image=band_4,
    description='imageToAssetExample',
    assetId='projects/your-project/assets/exampleExport',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
    pyramidingPolicy={
        'b4_mean': 'mean',
        'b4_sample': 'sample',
        'b4_max': 'max',
    },
)
task.start()

Você pode fornecer uma política de piramidação padrão para cada banda que não seja especificada explicitamente usando a chave '.default'. Você também pode transmitir apenas a '.default' chave. Por exemplo, para definir todas as bandas como padrão para a política de piramidação "amostra" , use {'.default': 'sample'}.

Parâmetros de configuração

Observe que o dicionário de parâmetros de configuração transmitido para Export.image inclui scale (em metros) e a região de exportação como um ee.Geometry. A imagem exportada vai cobrir a região especificada com pixels na escala especificada. Se não for especificado explicitamente, o CRS da saída será extraído da primeira banda da imagem a ser exportada.

Você também pode especificar os dimensions, crs e/ou crsTransform da imagem exportada. Consulte o glossário para mais informações sobre crs e crsTransform. Por exemplo, para receber um bloco de pixels alinhado com precisão a outra fonte de dados, especifique dimensions, crs e crsTransform. Para receber um bloco de pixels de tamanho predefinido (por exemplo, uma imagem em miniatura de 256 x 256) que cobre uma região, especifique dimensions e region.

É possível especificar o formato de saída da imagem (se o destino não for toAsset()) com o fileFormat parâmetro ('GeoTIFF' por padrão).

Parâmetro formatOptions

Outras opções de configuração são definidas com o parâmetro formatOptions, que precisa ser um dicionário com chave por outras opções de formato, específicas para cada fileFormat, conforme descrito abaixo.

GeoTIFF

GeoTIFF otimizado para nuvem

Para exportar um GeoTIFF otimizado para nuvem, transmita um literal JavaScript para formatOptions em que a chave cloudOptimized esteja definida como true. Continuando o exemplo anterior:

Editor de código (JavaScript)

// Export a cloud-optimized GeoTIFF.
Export.image.toDrive({
  image: landsat,
  description: 'imageToCOGeoTiffExample',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  fileFormat: 'GeoTIFF',
  formatOptions: {
    cloudOptimized: true
  }
});

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Export a cloud-optimized GeoTIFF.
task = ee.batch.Export.image.toDrive(
    image=landsat,
    description='imageToCOGeoTiffExample',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
    fileFormat='GeoTIFF',
    formatOptions={'cloudOptimized': True},
)
task.start()

Os GeoTIFFs otimizados para nuvem podem ser recarregados do Cloud Storage em uma Image ou registrados como recursos. Consulte a visão geral do GeoTIFF otimizado para nuvem (COG, na sigla em inglês) para conferir as especificações e opções de exportação completas.

Nodata

Especifique o valor de nodata do GeoTIFF usando a chave noData no parâmetro formatOptions. Por exemplo:

Editor de código (JavaScript)

// Set a nodata value and replace masked pixels around the image edge with it.
var noDataVal = -9999;
landsat = landsat.unmask(noDataVal);

Export.image.toDrive({
  image: landsat,
  description: 'imageNoDataExample',
  crs: projection.crs,
  scale: 2000,  // large scale for minimal demo
  region: landsat.geometry(),  // full image bounds
  fileFormat: 'GeoTIFF',
  formatOptions: {
    noData: noDataVal,
  }
});

Configuração do Python

Consulte a página Ambiente Python (em inglês) para informações sobre a API Python e como usar geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Set a nodata value and replace masked pixels around the image edge with it.
no_data_val = -9999
landsat = landsat.unmask(no_data_val)

task = ee.batch.Export.image.toDrive(
    image=landsat,
    description='imageNoDataExample',
    crs=projection['crs'],
    scale=2000,  # large scale for minimal demo
    region=landsat.geometry(),  # full image bounds
    fileFormat='GeoTIFF',
    formatOptions={'noData': no_data_val},
)
task.start()

O valor de nodata precisa estar dentro do intervalo válido para o PixelType da imagem. É possível verificar PixelType por imprimindo os metadados da imagem e observando a propriedade data_type da primeira banda. Você também pode definir o PixelType da imagem transmitindo os dados para um tipo específico usando métodos de imagem toShort() ou toInt(), por exemplo.

TFRecord

Consulte a página Formato de dados TFRecord.

maxPixels

O parâmetro maxPixels tem como objetivo evitar a criação inadvertida de exportações muito grandes. Se o valor padrão for muito baixo para a imagem de saída pretendida, você poderá aumentar maxPixels. Por exemplo:

Export.image.toDrive({
  image: landsat,
  description: 'maxPixelsExample',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  maxPixels: 1e9
});

Exportações de arquivos grandes

Se a imagem de saída for grande, ela será exportada como vários arquivos. Se você estiver exportando para GeoTIFFs, a imagem será dividida em blocos. O nome de arquivo de cada bloco estará no formato baseFilename-yMin-xMin, em que xMin e yMin são as coordenadas de cada bloco na caixa delimitadora geral da imagem exportada.

Se você estiver exportando para TFRecord, os arquivos serão anexados por -00000, -00001,... -0000N para N+1 arquivos. Manter essa ordem é importante se você pretende realizar inferências nos arquivos e fazer upload das previsões de volta para o Earth Engine como uma imagem. Consulte Como fazer upload de imagens como arquivos TFRecord files para mais detalhes.

Exportar imagens conforme elas aparecem no editor de código

Para exportar imagens renderizadas na tela do Earth Engine, crie imagens de visualização , conforme demonstrado nas seções Imagens de visualização e Composição e mosaico. Como o editor de código usa o 'EPSG:3857' CRS, especifique um CRS de 'EPSG:3857' na exportação para receber uma imagem na mesma projeção que a exibida no mapa do editor de código. Consulte a seção sobre como configurar exportações de imagens para detalhes sobre como especificar a resolução e o sistema de coordenadas da saída.