You can export images, map tiles, tables and video from Earth Engine. The exports can be sent to your Google Drive account or to Google Cloud Storage. To use Google Cloud Storage (a fee-based service), you'll need to set up a project, enable billing for the project, and create a storage bucket. See the Cloud Storage Quickstart page for instructions. See this guide for information on storage bucket naming. Data exported to a Cloud Storage bucket will have the bucket's default object Access Control List (ACL). You must have write permission for the specified bucket.
The following sections describe each type of export in detail.
Exporting images
to Drive
To export an image as a multi-band GeoTiff to your Drive account, use
Export.image.toDrive(). For example, to export portions of a Landsat
image, define a region to export, then call Export.image.toDrive():
// Load a landsat image and select three bands.
var landsat = ee.Image('LANDSAT/LC8_L1T_TOA/LC81230322014135LGN00')
.select(['B4', 'B3', 'B2']);
// Create a geometry representing an export region.
var geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236]);
// Export the image, specifying scale and region.
Export.image.toDrive({
image: landsat,
description: 'imageToDriveExample',
scale: 30,
region: geometry
});
When this code is run, an export task will be created in the Code Editor Tasks tab. Click the Run button next to the task to start it. (Learn more about the Task Manager from the Code Editor section). The image will be created in your Drive account as a multi-band GeoTIFF.
to Cloud Storage
To export an image as a multi-band GeoTiff to a Google Cloud Storage bucket, use
Export.image.toCloudStorage(). To export the Landsat image in the
previous example to Cloud Storage instead of Drive, use:
// Export the image to Cloud Storage.
Export.image.toCloudStorage({
image: landsat,
description: 'imageToCloudExample',
bucket: 'ee-docs-demos',
fileNamePrefix: 'exampleExport',
scale: 30,
region: geometry
});
As with exports to Drive, start the export from the Tasks tab.
to Asset
To export an image to an asset in your Earth Engine assets folder, use
Export.image.toAsset(). To manage your Earth Engine assets, or check
how much of your storage quota is in use, use the Asset
Manager. The following example illustrates exporting portions of a Landsat image
using different pyramiding policies for the same band. The pyramiding policy indicates
how Earth Engine computes lower resolution verions of the asset. Learn more about how
Earth Engine handles multiple resolutions in the scale doc.
// 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',
scale: 30,
region: geometry,
pyramidingPolicy: {
'b4_mean': 'mean',
'b4_sample': 'sample',
'b4_max': 'max'
}
});
You can provide a default pyramiding policy for every band that isn't explicitly
specified by using the '.default' key. You may also pass in just the
'.default' key. For example, to make all bands default to the 'sample'
pyramiding policy, use {'.default': 'sample'}.
Configuration parameters
Observe that the dictionary of configuration parameters passed to
Export.image includes scale (in meters) and the export
region as an ee.Geometry. The exported image will cover the specified
region with pixels at the specified scale. If not explicitly specified, the
CRS of the output will be taken from the first band of the image to be exported.
You may also specify the dimensions, crs and/or
crs_transform of the exported image. See the glossary
for more information on crs and crs_transform. For example, to
get a block of pixels precisely aligned to another data source, specify
dimensions, crs and crs_transform. To get a
block of pixels of predefined size (for example a 256x256 thumbnail image) that covers
a region, specify dimensions and region.
maxPixels
The maxPixels parameter is intended to prevent very large exports from
inadvertently being created. Increase maxPixels if
the default value is too low for your intended output image. If the output image file
is large, it will be exported as multiple tiles. If the image is split into tiles,
the filename of each tile will be in the form baseFilename-yMin-xMin where
xMin and yMin are the coordinates of each tile within the
overall bounding box of the exported image.
Exporting images as they appear in the Code Editor
To export imagery as rendered on screen in Earth Engine, create visualization images
as demonstrated in the Visualization
images and the Compositing and Mosaicking sections.
Since the Code Editor uses the 'EPSG:3857' CRS, specify a CRS of
'EPSG:3857' in the export to get an image in the same projection as that
displayed in the Code Editor map. See the
section on configuring image exports for details on specifying the resolution and
coordinate system of the output.
Exporting tables and vector data
You can export a FeatureCollection as CSV, GeoJSON, KML, or KMZ using
Export.table. The FeatureCollection may represent vectors or
simply a table of data. In the latter case, the features in the collection will have null
geometry.
to Drive
To export a FeatureCollection to your Drive account, use
Export.table.toDrive(). For example:
// Make a collection of points.
var features = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point(30.41, 59.933), {name: 'Voronoi'}),
ee.Feature(ee.Geometry.Point(-73.96, 40.781), {name: 'Thiessen'}),
ee.Feature(ee.Geometry.Point(6.4806, 50.8012), {name: 'Dirichlet'})
]);
// Export the FeatureCollection to a KML file.
Export.table.toDrive({
collection: features,
description:'vectorsToDriveExample',
fileFormat: 'KML'
});
Note that the output format is specified as KML to handle geographic data. To export
just a table of data, without any geographic information, export features with null
geometry in CSV format. The following demonstrates using
Export.table.toDrive() to get the results of a potentially long running
reduction:
// Load a Landsat TOA image.
var image = ee.Image('LANDSAT/LC8_L1T_TOA/LC80440342014077LGN00');
// Create an arbitrary rectangle.
var region = ee.Geometry.Rectangle(-122.2806, 37.1209, -122.0554, 37.2413);
// Get a dictionary of means in the region.
var means = image.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: region,
scale: 30
});
// Make a feature without geometry and set the properties to the dictionary of means.
var feature = ee.Feature(null, means);
// Wrap the Feature in a FeatureCollection for export.
var featureCollection = ee.FeatureCollection([feature]);
// Export the FeatureCollection.
Export.table.toDrive({
collection: featureCollection,
description: 'exportTableExample',
fileFormat: 'CSV'
});
Note that the format is set to ‘CSV’ in this example since there is no geometry in the output.
to Cloud Storage
To export a FeatureCollection to Cloud Storage, use
Export.table.toCloudStorage(). For example, using the features
defined previously:
// Export a KML file to Cloud Storage.
Export.table.toCloudStorage({
collection: features,
description:'vectorsToCloudStorageExample',
bucket: 'ee-docs-demos',
fileNamePrefix: 'exampleTableExport',
fileFormat: 'KML'
});
Exporting video
To export ordered image collections as video, where frames are defined by images in the
collection, use Export.video(). You can configure the way the
ImageCollection is turned into video by setting frame rate, scale and
dimensions. The video will be encoded as an MP4.
to Drive
Export video to your Drive account with Export.video.toDrive(). For
example, the following export makes a video from 20 years of Landsat imagery:
// Load a Landsat 5 image collection.
var collection = ee.ImageCollection('LANDSAT/LT5_L1T_TOA')
// San Francisco Bay.
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34))
// Filter cloudy scenes.
.filter(ee.Filter.lt('CLOUD_COVER', 30))
// Get 20 years of imagery.
.filterDate('1991-01-01','2011-12-30')
// Need to have 3-band imagery for the video.
.select(['B4', 'B3', 'B2'])
// Need to make the data 8-bit.
.map(function(image) {
return image.multiply(512).uint8();
});
// Define an area to export.
var polygon = ee.Geometry.Rectangle([-122.7286, 37.6325, -122.0241, 37.9592]);
// Export (change dimensions or scale for higher quality).
Export.video.toDrive({
collection: collection,
description: 'sfVideoExample',
dimensions: 720,
framesPerSecond: 12,
region: polygon
});
Note that the frame rate and dimensions can be set from a dictionary of parameters
passed to the export. Adjust these parameters to customize the video. Also note that
the input ImageCollection is required to have 3-band (RGB), 8-bit images. In this
example, the 8-bit, 3-band format is explicitly set. Alternatively, map a function which
calls image.visualize() over the collection. See
the section on Visualization
images for details. Video exports can take a significant amount of time to
complete, so it's not unusual to see the export task running for an extended period.
to Cloud Storage
To export a video to Cloud Storage, use Export.video.toCloudStorage().
For example, using the ImageCollection from the previous example:
// Export video to cloud storage.
Export.video.toCloudStorage({
collection: collection,
description: 'sfVideoExampleToCloud',
bucket: 'ee-docs-demos',
dimensions: 720,
framesPerSecond: 12,
region: polygon
});
Exporting maps
To export a publicly viewable map to Cloud Storage, use
Export.map.toCloudStorage. This function exports map tiles suitable
for display using the Google Maps API.
The following example exports a map that displays a true-color Sentinel-2 image over
Croatia.
// Load and display a Sentinel-2 image over Croatia.
var s2 = ee.Image('COPERNICUS/S2/20160124T100753_20160124T153040_T33TWJ');
Map.centerObject(s2, 8);
Map.addLayer(s2, {bands: ['B4', 'B3', 'B2'], max: 2048}, 's2 image');
// Create a true-color visualization image.
var s2vis = s2.visualize({bands: ['B4', 'B3', 'B2'], max: 2048});
// Export the visualization image as map tiles.
Export.map.toCloudStorage({
image: s2vis,
description: 'mapToCloudExample',
bucket: 'ee-docs-demos',
maxZoom: 16,
region: s2.geometry()
});
Note that this creates a new directory in the specified Cloud Storage bucket, named
according to the description parameter by default. You can change the
name of the directory or specify subdirectories with the path parameter.
Exported files will be public by default and you are assumed to be the owner of the
output bucket. If you are a writer on the specified output bucket (but not the owner),
set writePublicTiles to false to use the output bucket's
default object ACL.
The output directory will contain an index.html file that displays the exported map using the Google Maps API. The previous example generated this index.html. This page is publicly viewable, can be embedded on other pages, and does not require the viewer to be a registered Earth Engine user.
Scale and Zoom
Note that in the previous example, maxZoom is set to 16. Zoom
levels correspond to different sized grids of pixels with which to display a global map.
(See
this
reference for details.) Due to Earth's curvature, the resolution of pixels
at a given zoom level varies by latitude. Specifically, meters per pixel goes down by
a factor of cos(latitude). The following table shows meters per pixel,
at each zoom level, at the equator for the Google Mercator projection:
| Zoom Level | Pixel Size (at equator) |
|---|---|
| 0 | 156 km |
| 1 | 78 km |
| 2 | 39 km |
| 3 | 20 km |
| 4 | 10 km |
| 5 | 4.9 km |
| 6 | 2.4 km |
| 7 | 1.2 km |
| 8 | 611 m |
| 9 | 305 m |
| 10 | 152 m |
| 11 | 76 m |
| 12 | 38 m |
| 13 | 19 m |
| 14 | 9.6 m |
| 15 | 4.8 m |
| 16 | 2.4 m |
| 17 | 1.2 m |
| 18 | 0.6 m |
| 19 | 0.3 m |
| 20 | 0.15 m |
Observe from the previous table that the maxZoom set in the example
corresponds to 2.4 meters at the equator, smaller at higher latitudes. This is less
than the nominal 10 meters per pixel resolution of Sentinel-2 imagery. As a result,
the map displayed in the output
index.html
can be zoomed in until pixels in native resolution are visible in the map. To limit the
map display to native pixel resolution, set maxZoom to a value that
corresponds to the native resolution or less.