Puedes exportar imágenes de Earth Engine en GeoTIFF o TFRecord formato. 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
crsTransform parámetro es una lista de parámetros de una transformación afín
matriz en orden de fila principal
[xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. El origen de una imagen se define mediante los valores xTranslation y yTranslation, y el tamaño de píxel de la imagen se define mediante 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()
Configuración de scale
Como acceso directo, puedes especificar un parámetro scale y Earth Engine calculará un parámetro crsTransform por ti. Sin embargo, si solo configuras la escala de una imagen, no se especifica el origen de la proyección y puede generar una imagen que se desplace en relación con otra imagen con el mismo tamaño de píxel.
El motivo del posible desplazamiento 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 será cero. Estos parámetros especifican una cuadrícula de píxeles en la que el origen de la proyección se encuentra 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 compensan desde el origen de la proyección. Por ejemplo, las imágenes de Landsat que proporciona USGS usan parámetros de traducción que se compensan en 1/2 píxel desde el origen de la proyección (compensación de 15 m para las bandas de 30 m), mientras que las imágenes de Sentinel-2 que proporciona 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 Tareas 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, inicia la exportación desde la pestaña Tareas. La ubicación del bucket de Cloud Storage puede afectar el rendimiento y los costos de almacenamiento. Consulta la entrada de preguntas frecuentes sobre consideraciones de ubicación para obtener más información.
a un recurso
Para exportar una imagen a un recurso en 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 piramidación para la misma banda. La política de piramidació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 '.default' clave. Por ejemplo, para que todas las bandas usen de forma predeterminada la política de piramidació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 de la salida se tomará de la primera banda de la imagen que se exportará.
También puedes especificar los 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
a otra fuente de datos, especifica dimensions, crs y crsTransform.
Para obtener un bloque de píxeles de tamaño predefinido (por ejemplo, una imagen en 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 fileFormat parámetro ('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 para cada fileFormat como se describe a continuación.
GeoTIFF
GeoTIFF optimizado para la nube
Para exportar un GeoTIFF optimizado para la nube, pasa un literal de JavaScript
para formatOptions en el que la clave cloudOptimized esté establecida en
true. Continuando con el 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 una Image o registrar como recursos. Consulta la
descripción general de GeoTIFF optimizado para la nube (COG)
para obtener especificaciones y opciones de exportación completas.
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. Puedes verificar PixelType si
imprimes los metadatos de la imagen y observas
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 TFRecord.
maxPixels
El parámetro maxPixels está diseñado para evitar que se creen exportaciones muy grandes de forma inadvertida. Si el valor predeterminado es demasiado bajo para la imagen de salida deseada, 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
mosaico tendrá el formato baseFilename-yMin-xMin, en el que xMin y yMin son
las coordenadas de cada mosaico dentro del cuadro delimitador general de la imagen exportada.
Si exportas a TFRecord, los archivos se anexarán con -00000, -00001,... -0000N para N+1 archivos. Mantener este orden es importante si deseas realizar inferencias en los archivos y subir las predicciones a Earth Engine como una imagen. Consulta cómo subir imágenes como archivos TFRecord
para obtener más detalles.
Exporta imágenes tal como aparecen en el Editor de código
Para exportar imágenes tal 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óny Composición y
mosaicos. Dado que el Editor de código usa el
'EPSG:3857' CRS, especifica un CRS de '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 cómo configurar exportaciones de imágenes para obtener detalles sobre cómo especificar la resolución y el sistema de coordenadas de la salida.