É possível exportar imagens do Earth Engine no formato 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]);
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 parâmetro crs para especificar o sistema de coordenadas
e o parâmetro crsTransform para especificar com precisão a grade de pixels. O parâmetro crsTransform é uma lista de parâmetros de uma matriz de transformação afim na ordem principal de linha [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. A origem de uma imagem é definida pelos valores xTranslation e yTranslation, e o tamanho em pixels da imagem é definido pelos valores xScale e yScale. Confira
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();
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, é possível especificar um parâmetro scale, e o Earth Engine vai
calcular um parâmetro crsTransform para você. No entanto, simplesmente definir 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 de 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 é diferente dos parâmetros de translaçã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 translação que são deslocados por meio pixel 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 translação que estã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 que os pixels da imagem exportada correspondam 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 });
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 for executado, uma tarefa de exportação será 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 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 do 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 });
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. Se você planeja
ler os arquivos exportados de volta no Earth Engine (com
ee.Image.loadGeoTIFF() ou registrando-os como recursos com suporte de COG), o
bucket precisa estar em um
local compatível.
para recurso
Para exportar uma imagem para um recurso na sua 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
diferentes políticas de pirâmide para a mesma banda. A política de pirâmide indica
como o Earth Engine calcula versões de menor resolução do recurso. Saiba mais
sobre como o Earth Engine lida com 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' } });
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()
É possível fornecer uma política de pirâmide padrão para cada banda que não é
especificada explicitamente usando a chave '.default'. Também é possível transmitir apenas
a chave '.default'. Por exemplo, para que todas as bandas usem por padrão a política de pirâmide "sample", 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.
Também é possível especificar 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 de miniatura de 256 x 256) que cubra 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 parâmetro fileFormat ('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 chaves de outras opções de formato, específicas para cada
fileFormat, conforme descrito abaixo.
GeoTIFF
GeoTIFF otimizado para nuvem (COG)
Para exportar um GeoTIFF otimizado para nuvem (COG, na sigla em inglês), defina a chave cloudOptimized como true em formatOptions. 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 } });
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 COGs podem ser recarregados do Cloud Storage em um Image ou registrados como
recursos. Consulte a
visão geral do COG
para ver as especificações e opções de exportação completas.
Nodata
Especifique o valor nodata do GeoTIFF usando a chave noData no parâmetro formatOptions. 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, } });
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 nodata precisa estar dentro do intervalo válido para o PixelType da imagem. Para verificar PixelType,
imprima os metadados da imagem e observe
a propriedade data_type da primeira banda. Também é possível definir o PixelType da imagem
transmitindo os dados para um tipo específico usando os métodos de imagem toShort() ou
toInt(), por exemplo.
TF_RECORD
Consulte a página Formato de dados TFRecord.
maxPixels
O parâmetro maxPixels serve para evitar que exportações muito grandes sejam criadas por engano. Se o valor padrão for muito baixo para a imagem de saída pretendida, aumente maxPixels. 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 o TFRecord, os arquivos serão anexados por -00000,
-00001,... -0000N para arquivos N+1. 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 para mais detalhes.
Exportar imagens como aparecem no Editor de Código
Para exportar imagens renderizadas na tela no 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
CRS 'EPSG:3857', especifique um CRS de 'EPSG:3857' na exportação para receber uma imagem
na mesma projeção 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.