Exporta imágenes

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]);

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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();

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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'
  }
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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
  }
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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,
  }
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

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.