Puedes exportar imágenes de Earth Engine en GeoTIFF o en formato TFRecord. Consulta Parámetros de configuración para obtener más opciones de salida.
Configuración de ejemplo
Comienza por definir los datos de imagen que se exportarán:
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])
A continuación, define los parámetros de proyección que se usarán en las siguientes exportaciones. Usamos el parámetro crs
para especificar el sistema de coordenadas y el parámetro crsTransform
para especificar con precisión la cuadrícula de píxeles. El parámetro crsTransform
es una lista de parámetros de una matriz de transformación afín en orden de filas [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]
. El origen de una imagen se define con los valores xTranslation
y yTranslation
, y el tamaño de píxeles de la imagen se define con los valores xScale
y yScale
. Consulta ejemplos de matrices afines.
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()
Configura scale
Como atajo, puedes especificar un parámetro scale
y Earth Engine calculará un parámetro crsTransform
por ti. Sin embargo, simplemente establecer la escala de una imagen no especifica el origen de la proyección y puede generar una imagen que se desplaza en relación con otra imagen con el mismo tamaño de píxeles.
El motivo del posible cambio es que el parámetro scale
se usa para propagar los valores xScale
y yScale
de crsTransform
, pero los valores xTranslation
y yTranslation
se calculan de modo que, si se dividen por los valores xScale
y yScale
correspondientes, el resto sea cero. Estos parámetros especifican una cuadrícula de píxeles en la que el origen de la proyección está en la esquina de un píxel. Esta convención difiere de los parámetros de traducción que usan algunos proveedores de datos, que usan cuadrículas que se desplazan del origen de la proyección. Por ejemplo, las imágenes de Landsat que proporciona el USGS usan parámetros de traducción que se desplazan 1/2 píxel desde el origen de la proyección (desplazamiento de 15 m para las bandas de 30 m), mientras que las imágenes de Sentinel-2 que proporciona la ESA usan parámetros de traducción que están alineados con el origen de la proyección. Si el crsTransform
especificado en una exportación no coincide con el crsTransform
de la imagen original, se volverán a muestrear los píxeles de salida (con el vecino más cercano de forma predeterminada), lo que hará que la imagen resultante se desplace en relación con la imagen original.
En resumen, si necesitas hacer coincidir los píxeles de la imagen exportada con una imagen específica, asegúrate de usar los parámetros crs
y crsTransform
para tener un control total de la cuadrícula.
a Drive
Para exportar una imagen a tu cuenta de Drive, usa Export.image.toDrive()
. Por ejemplo, para exportar partes de una imagen de Landsat, define una región para exportar y, luego, llama a 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()
Cuando se ejecute este código, se creará una tarea de exportación en la pestaña Tasks del editor de código. Haz clic en el botón Ejecutar junto a la tarea para iniciarla. (Obtén más información sobre el Administrador de tareas en la sección Editor de código). La imagen se creará en tu cuenta de Drive con el fileFormat
especificado.
a Cloud Storage
Para exportar una imagen a un bucket de Google Cloud Storage, usa Export.image.toCloudStorage()
. Para exportar la imagen de Landsat del ejemplo anterior a Cloud Storage en lugar de Drive, usa lo siguiente:
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()
Al igual que con las exportaciones a Drive, comienza la exportación desde la pestaña Tasks. La ubicación del bucket de Cloud Storage puede afectar el rendimiento y los costos de almacenamiento. Consulta la entrada de preguntas frecuentes sobre las consideraciones de ubicación para obtener más información.
a Asset
Para exportar una imagen a un recurso de tu carpeta de recursos de Earth Engine, usa Export.image.toAsset()
. Para administrar tus recursos de Earth Engine o verificar cuánto de tu cuota de almacenamiento está en uso, usa el Administrador de recursos. En el siguiente ejemplo, se ilustra la exportación de partes de una imagen de Landsat con diferentes políticas de piramidización para la misma banda. La política de piramidización indica cómo Earth Engine calcula las versiones de menor resolución del recurso. Obtén más información sobre cómo Earth Engine controla varias resoluciones en el 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()
Puedes proporcionar una política de piramidación predeterminada para cada banda que no se especifique de forma explícita con la clave '.default'
. También puedes pasar solo la clave '.default'
. Por ejemplo, para que todas las bandas usen de forma predeterminada la política de piramidización "sample", usa {'.default': 'sample'}
.
Parámetros de configuración
Observa que el diccionario de parámetros de configuración que se pasa a Export.image
incluye scale
(en metros) y la región de exportación como un ee.Geometry
. La imagen exportada cubrirá la región especificada con píxeles en la escala especificada. Si no se especifica de forma explícita, el CRS del resultado se tomará de la primera banda de la imagen que se exportará.
También puedes especificar dimensions
, crs
o crsTransform
de la imagen exportada. Consulta el glosario para obtener más información sobre crs
y crsTransform
. Por ejemplo, para obtener un bloque de píxeles alineado con precisión con otra fuente de datos, especifica dimensions
, crs
y crsTransform
.
Para obtener un bloque de píxeles de tamaño predefinido (por ejemplo, una imagen de miniatura de 256 x 256) que cubra una región, especifica dimensions
y region
.
Puedes especificar el formato de salida de la imagen (si el destino no es toAsset()
) con el parámetro fileFormat
('GeoTIFF'
de forma predeterminada).
Parámetro formatOptions
Otras opciones de configuración se establecen con el parámetro formatOptions
, que debe ser un diccionario con claves de otras opciones de formato, específicas de cada fileFormat
, como se describe a continuación.
GeoTIFF
GeoTIFF optimizado para la nube
Para exportar un GeoTIFF optimizado para la nube, pasa una literal de JavaScript para formatOptions
en la que la clave cloudOptimized
esté configurada como true. Continuación del ejemplo 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()
Los GeoTIFF optimizados para la nube se pueden volver a cargar desde Cloud Storage en un Image
. Consulta los documentos de descripción general de Image
para obtener más detalles.
Nodata
Especifica el valor de nodata de GeoTIFF con la clave noData
dentro del parámetro formatOptions
. Por ejemplo:
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()
Ten en cuenta que el valor de nodata debe estar dentro del rango válido para el PixelType
de la imagen. Para verificar PixelType
, imprime los metadatos de la imagen y observa la propiedad data_type
de la primera banda. También puedes configurar el PixelType
de la imagen transmitiendo los datos a un tipo específico con los métodos de imagen toShort()
o toInt()
, por ejemplo.
TFRecord
Consulta la página Formato de datos de TFRecord.
maxPixels
El parámetro maxPixels
está diseñado para evitar que se creen exportaciones muy grandes por accidente. Si el valor predeterminado es demasiado bajo para la imagen de salida que deseas, puedes aumentar maxPixels
. Por ejemplo:
Export.image.toDrive({ image: landsat, description: 'maxPixelsExample', crs: projection.crs, crsTransform: projection.transform, region: geometry, maxPixels: 1e9 });
Exportaciones de archivos grandes
Si la imagen de salida es grande, se exportará como varios archivos. Si exportas a GeoTIFF, la imagen se divide en mosaicos. El nombre de archivo de cada tarjeta tendrá el formato baseFilename-yMin-xMin
, en el que xMin
y yMin
son las coordenadas de cada tarjeta dentro del cuadro de límite general de la imagen exportada.
Si exportas a TFRecord, los archivos se agregarán con -00000
, -00001
,… -0000N
para los archivos N+1. Mantener este orden es importante si tienes la intención de realizar inferencias en los archivos y volver a subir las predicciones a Earth Engine como una imagen. Consulta Cómo subir imágenes como archivos TFRecord para obtener más información.
Cómo exportar imágenes tal como aparecen en el editor de código
Para exportar imágenes como se renderizan en la pantalla en Earth Engine, crea imágenes de visualización como se muestra en las secciones Imágenes de visualización y Compilación y mosaico. Dado que el editor de código usa el sistema de referencia de coordenadas 'EPSG:3857'
, especifica un sistema de referencia de coordenadas 'EPSG:3857'
en la exportación para obtener una imagen en la misma proyección que la que se muestra en el mapa del editor de código. Consulta la sección sobre la configuración de exportaciones de imágenes para obtener detalles sobre cómo especificar la resolución y el sistema de coordenadas del resultado.