Exporter des images

Vous pouvez exporter des images depuis Earth Engine au format GeoTIFF ou TFRecord. Pour en savoir plus sur les autres options de sortie, consultez Paramètres de configuration.

Exemple de configuration

Commencez par définir les données d'image à exporter :

Éditeur de code (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]);

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Définissez ensuite les paramètres de projection qui seront utilisés dans les exportations suivantes. Nous utilisons le crs paramètre pour spécifier le système de coordonnées, et le crsTransform paramètre pour spécifier précisément la grille de pixels. Le crsTransform paramètre est une liste de paramètres d'une transformation affine matrice dans l'ordre des lignes [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. L'origine d'une image est définie par les valeurs xTranslation et yTranslation, et la taille des pixels de l'image est définie par les valeurs xScale et yScale. Consultez des exemples de matrices affines.

Éditeur de code (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();

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Définir scale

Pour gagner du temps, vous pouvez spécifier un paramètre scale, et Earth Engine calculera un paramètre crsTransform pour vous. Toutefois, le simple fait de définir l'échelle d'une image ne spécifie pas l'origine de la projection et peut entraîner le décalage d'une image par rapport à une autre image de même taille de pixel.

La raison de ce décalage potentiel est que le paramètre scale est utilisé pour remplir les valeurs xScale et yScale de crsTransform, mais les valeurs xTranslation et yTranslation sont calculées de sorte que si elles sont divisées par les valeurs xScale et yScale correspondantes, le reste sera nul. Ces paramètres spécifient une grille de pixels où l'origine de la projection se trouve au coin d'un pixel. Cette convention diffère des paramètres de translation utilisés par certains fournisseurs de données, qui utilisent des grilles décalées par rapport à l'origine de la projection. Par exemple, les images Landsat fournies par l'USGS utilisent des paramètres de translation décalés d'un demi-pixel par rapport à l'origine de la projection (décalage de 15 m pour les bandes de 30 m), tandis que les images Sentinel-2 fournies par l'ESA utilisent des paramètres de translation alignés sur l'origine de la projection. Si le crsTransform spécifié dans une exportation ne correspond pas au crsTransform de l'image d'origine, les pixels de sortie seront rééchantillonnés (par défaut, à l'aide du voisin le plus proche), ce qui décalera l'image résultante par rapport à l'image d'origine.

En résumé, si vous devez faire correspondre les pixels de l'image exportée à une image spécifique image, veillez à utiliser les crs et crsTransform paramètres pour contrôler entièrement de la grille.

vers Drive

Pour exporter une image vers votre compte Drive, utilisez Export.image.toDrive(). Par exemple, pour exporter des parties d'une image Landsat, définissez une région à exporter, puis appelez Export.image.toDrive() :

Éditeur de code (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
});

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Lorsque ce code est exécuté, une tâche d'exportation est créée dans l'onglet Tasks (Tâches) de l'éditeur de code. Cliquez sur le bouton Run (Exécuter) à côté de la tâche pour la démarrer. (Pour en savoir plus sur le gestionnaire de tâches, consultez la section Éditeur de code). L'image sera créée dans votre compte Drive avec le fileFormat spécifié.

vers Cloud Storage

Pour exporter une image vers un bucket Google Cloud Storage, utilisez Export.image.toCloudStorage(). Pour exporter l'image Landsat de l'exemple précédent vers Cloud Storage au lieu de Drive, utilisez :

Éditeur de code (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
});

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Comme pour les exportations vers Drive, démarrez l'exportation à partir de l'onglet Tasks (Tâches). L'emplacement du bucket Cloud Storage peut avoir une incidence sur les performances et les coûts de stockage. Pour en savoir plus, consultez l'entrée de la FAQ sur les considérations relatives à l'emplacement.

vers un élément

Pour exporter une image vers un élément de votre dossier d'éléments Earth Engine, utilisez Export.image.toAsset(). Pour gérer vos éléments Earth Engine ou vérifier la quantité de votre quota de stockage utilisée, utilisez le gestionnaire d'éléments. L'exemple suivant illustre l'exportation de parties d'une image Landsat à l'aide de différentes stratégies de pyramidation pour la même bande. La stratégie de pyramidation indique comment Earth Engine calcule les versions de l'élément à plus faible résolution. Pour en savoir plus sur la façon dont Earth Engine gère plusieurs résolutions, consultez le document sur l'échelle.

Éditeur de code (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'
  }
});

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Vous pouvez fournir une stratégie de pyramidation par défaut pour chaque bande qui n'est pas spécifiée explicitement à l'aide de la clé '.default'. Vous pouvez également ne transmettre que la '.default' clé. Par exemple, pour que toutes les bandes soient définies par défaut sur la stratégie de pyramidation "sample" , utilisez {'.default': 'sample'}.

Paramètres de configuration

Notez que le dictionnaire des paramètres de configuration transmis à Export.image inclut scale (en mètres) et la région d'exportation en tant que ee.Geometry. L'image exportée couvrira la région spécifiée avec des pixels à l'échelle spécifiée. S'il n'est pas spécifié explicitement, le CRS de la sortie sera extrait de la première bande de l'image à exporter.

Vous pouvez également spécifier les dimensions, crs et/ou les crsTransform de l' image exportée. Pour en savoir plus sur crs et crsTransform, consultez le glossaire. Par exemple, pour obtenir un bloc de pixels précisément aligné sur une autre source de données, spécifiez dimensions, crs et crsTransform. Pour obtenir un bloc de pixels de taille prédéfinie (par exemple, une image miniature de 256 x 256 pixels) couvrant une région, spécifiez dimensions et region.

Vous pouvez spécifier le format de sortie de l'image (si la destination n'est pas toAsset()) avec le fileFormat paramètre ('GeoTIFF' par défaut).

Paramètre formatOptions

D'autres options de configuration sont définies avec le paramètre formatOptions, qui doit être un dictionnaire indexé par d'autres options de format, spécifiques à chaque fileFormat, comme décrit ci-dessous.

GeoTIFF

GeoTIFF optimisé pour le cloud

Pour exporter un GeoTIFF optimisé pour le cloud, transmettez un littéral JavaScript pour formatOptions dans lequel la clé cloudOptimized est définie sur true. En reprenant l'exemple précédent :

Éditeur de code (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
  }
});

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Les GeoTIFF optimisés pour le cloud peuvent être rechargés depuis Cloud Storage dans une Image ou enregistrés en tant qu'éléments. Pour en savoir plus et comparer, consultez la présentation de GeoTIFF optimisé pour le cloud (COG).

Nodata

Spécifiez la valeur nodata GeoTIFF à l'aide de la clé noData dans le paramètre formatOptions. Exemple :

Éditeur de code (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,
  }
});

Configuration de Python

Pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif, consultez la page Environnement Python.

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

Notez que la valeur nodata doit se trouver dans la plage valide pour le PixelType de l'image. Vous pouvez vérifier PixelType en imprimant les métadonnées de l'image et en examinant la propriété data_type de la première bande. Vous pouvez également définir le PixelType de l'image en convertissant les données en un type spécifique à l'aide des méthodes d'image toShort() ou toInt(), par exemple.

TFRecord

Consultez la page Format de données TFRecord.

maxPixels

Le paramètre maxPixels est destiné à empêcher la création involontaire d'exportations très volumineuses. Si la valeur par défaut est trop faible pour l'image de sortie souhaitée, vous pouvez augmenter maxPixels. Exemple :

Export.image.toDrive({
  image: landsat,
  description: 'maxPixelsExample',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  maxPixels: 1e9
});

Exportations de fichiers volumineux

Si l'image de sortie est volumineuse, elle sera exportée sous forme de plusieurs fichiers. Si vous exportez vers un ou plusieurs GeoTIFF, l'image est divisée en tuiles. Le nom de fichier de chaque tuile se présente sous la forme baseFilename-yMin-xMin où xMin et yMin sont les coordonnées de chaque tuile dans le cadre de délimitation global de l’image exportée.

Si vous exportez vers TFRecord, les fichiers seront ajoutés par -00000, -00001,... -0000N pour N+1 fichiers. Il est important de conserver cet ordre si vous prévoyez d'effectuer une inférence sur les fichiers et d'importer les prédictions dans Earth Engine en tant qu'image. Pour en savoir plus, consultez Importer des images en tant que fichiers TFRecord files.

Exporter des images telles qu'elles apparaissent dans l'éditeur de code

Pour exporter des images telles qu'elles sont affichées à l'écran dans Earth Engine, créez des images de visualisation comme indiqué dans les sections Images de visualisation et Composition et mosaïquage. Étant donné que l'éditeur de code utilise le 'EPSG:3857' CRS, spécifiez un CRS de 'EPSG:3857' dans l'exportation pour obtenir une image dans la même projection que celle affichée dans la carte de l'éditeur de code. Pour en savoir plus sur la spécification de la résolution et du système de coordonnées de la sortie, consultez la section the Configurer les exportations d'images for détails.