É 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 da imagem que serão exportados:
// 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
# 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 seguintes. 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
afins na ordem de linha
[xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]
. A
origem de uma imagem é definida pelos valores xTranslation
e yTranslation
, e
o tamanho de pixel da imagem é definido pelos valores xScale
e yScale
. Confira
exemplos de matrizes
afins.
// 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
# 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, 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 imagem 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 é diferente 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 Landsat fornecidas pelo USGS usam parâmetros de translação que são deslocados em 1/2 pixel da origem da projeção (deslocamento de 15 m para as bandas de 30 m), enquanto as imagens Sentinel-2 fornecidas pela ESA usam parâmetros de translaçã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 Landsat, defina uma região para exportação e
chame Export.image.toDrive()
:
// 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
# 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 Tasks do editor de código. Clique no botão Executar ao lado da tarefa. 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 no exemplo anterior para o Cloud Storage em vez do Drive, use:
// 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
# 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 "Recurso"
Para exportar uma imagem para um recurso na pasta de recursos do Earth Engine, use
Export.image.toAsset()
. Para gerenciar os recursos do Earth Engine ou verificar quanto da sua cota de armazenamento está em uso, use o Asset Manager. O exemplo a seguir ilustra a exportação de partes de uma imagem Landsat usando políticas de acúmulo diferentes 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 processa várias resoluções no documento de escala.
// 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
# 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 seja
especificada explicitamente usando a chave '.default'
. Você também pode transmitir apenas
a chave '.default'
. Por exemplo, para fazer com que todas as bandas usem a política de
pirâmide "sample", use {'.default': 'sample'}
.
Parâmetros de configuração
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 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 alinhar um bloco de pixels 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ífico para cada
fileFormat
, conforme descrito abaixo.
GeoTIFF
GeoTIFF otimizado para a nuvem
Para exportar um GeoTIFF otimizado para a nuvem, transmita um literal JavaScript para formatOptions
em que a chave cloudOptimized
seja definida como true. Continuando o exemplo anterior:
// 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
# 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 a nuvem podem ser recarregados do Cloud Storage para um Image
. Consulte
as documentações de visão geral do Image
para
mais detalhes.
Nodata
Especifique o valor de nodata do GeoTIFF usando a chave noData
no parâmetro formatOptions
. Exemplo:
// 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
# 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
imprimindo os metadados da imagem e analisando
a propriedade data_type
da primeira faixa. Também é possível 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 impedir que exportações muito grandes sejam
criadas acidentalmente. Se o valor padrão for muito baixo para a imagem de saída
desejado, 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 cada bloco terá o formato baseFilename-yMin-xMin
, em que xMin
e yMin
são as coordenadas de cada bloco dentro da 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ência 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 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 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 saber como especificar a resolução e o sistema de coordenadas da saída.