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