Exporter des images

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

Exemple de configuration

Commencez par définir les données d'image qui seront exportées:

É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

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

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 paramètre crs pour spécifier le système de coordonnées et le paramètre crsTransform pour spécifier précisément la grille de pixels. Le paramètre crsTransform est une liste de paramètres d'une matrice de transformation affine dans l'ordre par ligne [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. L'origine d'une image est définie par les valeurs xTranslation et yTranslation, et sa taille en pixels 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

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

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

Configurer 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 paramétrage de l'échelle d'une image ne spécifie pas l'origine de la projection et peut entraîner un décalage de l'image par rapport à une autre image de la même taille en pixels.

Le décalage potentiel est dû au fait que le paramètre scale est utilisé pour renseigner les valeurs xScale et yScale de crsTransform, mais que 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 dont l'origine de la projection se trouve au coin d'un pixel. Cette convention diffère des paramètres de traduction 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 échantillonnés (à l'aide du voisin le plus proche par défaut), ce qui entraînera un décalage de l'image résultante par rapport à l'image d'origine.

Pour résumer, si vous devez faire correspondre les pixels de l'image exportée à une image spécifique, veillez à utiliser les paramètres crs et crsTransform pour un contrôle total de la grille.

dans 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

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

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 l'fileFormat spécifiée.

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

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

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, commencez l'exportation depuis l'onglet 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 la FAQ sur les considérations concernant l'emplacement.

à "Composant"

Pour exporter une image vers un élément de votre dossier d'éléments Earth Engine, utilisez Export.image.toAsset(). Pour gérer vos composants 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 pyramidage pour la même bande. La stratégie de pyramidage indique comment Earth Engine calcule les versions de résolution inférieure de l'asset. Découvrez comment Earth Engine gère plusieurs résolutions dans 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

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

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 pyramidage par défaut pour chaque bande qui n'est pas spécifiée explicitement à l'aide de la clé '.default'. Vous pouvez également transmettre uniquement la clé '.default'. Par exemple, pour que toutes les bandes utilisent par défaut la stratégie de pyramidage "échantillon", 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 explicitement spécifié, le système de coordonnées de sortie sera extrait de la première bande de l'image à exporter.

Vous pouvez également spécifier les dimensions, crs et/ou 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 aligné précisément 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 de vignette 256 x 256) qui couvre 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 paramètre fileFormat ('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 associé à 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 une valeur littérale JavaScript pour formatOptions dans laquelle la clé cloudOptimized est définie sur true. Pour reprendre 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

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

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 fichiers GeoTIFF optimisés pour le cloud peuvent être réimportés depuis Cloud Storage dans un Image. Pour en savoir plus, consultez la documentation de présentation de Image.

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

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

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 l'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 vise à éviter la création accidentelle 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 en plusieurs fichiers. Si vous exportez vers un ou plusieurs fichiers GeoTIFF, l'image est divisée en tuiles. Le nom de fichier de chaque carte se présente sous la forme baseFilename-yMin-xMin, où xMin et yMin sont les coordonnées de chaque carte dans la zone de délimitation globale de l'image exportée.

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

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 Compositing et mosaïque. Étant donné que l'éditeur de code utilise le système de coordonnées 'EPSG:3857', spécifiez un système de coordonnées 'EPSG:3857' lors de l'exportation pour obtenir une image dans la même projection que celle affichée sur 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 sur la configuration des exportations d'images.