Exporta imágenes

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

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

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

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

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

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

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

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

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. 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.