Exporting is the final step in many workflows. Choosing the right scale, projection, and format ensures your outputs are usable and your exports succeed without errors.
Learning objectives
- Choose appropriate scale and CRS for exports.
- Optimize exports to avoid timeouts and memory errors.
- Select the right file format for your use case.
- Organize exports with naming conventions.
Why it matters
A failed export means wasted time. Wrong scale means wrong data. This guide helps you get exports right the first time.
The complete export template
Use this template for reliable exports:
// Best practice export template
Export.image.toDrive({
image: myImage,
description: 'NDVI_Florida_Summer2023', // No spaces, descriptive
folder: 'EarthEngine', // Organize by project
fileNamePrefix: 'NDVI_Florida_Summer2023',
region: roi.bounds(), // Use .bounds() for efficiency
scale: 30, // Match source resolution
crs: 'EPSG:4326', // WGS84 for compatibility
maxPixels: 1e13, // Increase if needed
fileFormat: 'GeoTIFF', // or 'TFRecord'
formatOptions: {
cloudOptimized: true // For large files
}
});
Scale: Getting it right
| Data Source | Native Resolution | Recommended Export Scale |
|---|---|---|
| Landsat 8/9 | 30m | 30 |
| Sentinel-2 (visible) | 10m | 10 |
| Sentinel-2 (red edge) | 20m | 20 |
| MODIS | 250-1000m | 250, 500, or 1000 |
| SRTM DEM | 30m | 30 |
| Classification results | varies | Match input imagery |
Rule of thumb
Export at the native resolution of your source data. Exporting at finer resolution doesn't add information—it just makes bigger files.
CRS (Coordinate Reference System)
Common projections
| CRS | Use Case | Units |
|---|---|---|
EPSG:4326 |
Global, web maps, sharing | Degrees |
EPSG:32617 |
UTM Zone 17N (Florida) | Meters |
EPSG:5070 |
CONUS Albers Equal Area | Meters |
Tip: For area calculations, use an equal-area projection (Albers, UTM) not WGS84.
File formats
| Format | Best For | Notes |
|---|---|---|
| GeoTIFF | Raster images for GIS | Universal, use cloudOptimized: true |
| SHP (Shapefile) | Vector data for ArcGIS | Max 2GB, limited field names |
| GeoJSON | Web applications | Human-readable, larger files |
| CSV | Tabular data, statistics | No geometry by default |
| KML | Google Earth | Good for visualization |
Avoiding export failures
Problem: "User memory limit exceeded"
// Solution 1: Reduce area
var smallerRoi = roi.buffer(-5000); // Shrink by 5km
// Solution 2: Increase scale
Export.image.toDrive({
...
scale: 100, // Was 30
});
// Solution 3: Use bestEffort
var stats = image.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: roi,
scale: 30,
bestEffort: true // Auto-adjusts scale
});
Problem: "Computation timed out"
// Solution: Export instead of print
// DON'T: print(bigComputation);
// DO: Export the result
Export.table.toDrive({
collection: bigFeatureCollection,
description: 'my_results'
});
Problem: Multiple TIF files created
Large exports automatically split into tiles. This is normal!
// In your GIS software, use "Mosaic to New Raster" to combine them
// Or use fileDimensions to control tile size:
Export.image.toDrive({
...
fileDimensions: [4096, 4096] // Larger tiles, fewer files
});
Naming conventions
Use consistent, descriptive names:
// Pattern: Sensor_Variable_Location_Date_Notes
// Examples:
'L8_NDVI_Florida_2023Summer_Median'
'S2_Classification_Miami_2023_RF'
'MODIS_LST_California_2023_Max'
- No spaces (use underscores)
- Include sensor for multi-sensor projects
- Include date range
- Include processing notes (method, version)
Export to Asset vs Drive
| Export to Drive | Export to Asset | |
|---|---|---|
| Best for | Final products, sharing | Intermediate results, reuse in EE |
| Download? | Yes, easy | Not directly |
| Use in EE? | Must re-import | Instant access |
| Storage | Your Google Drive | EE cloud (quota limited) |
Try it: Export with all best practices
var roi = ee.Geometry.Rectangle([-82.5, 29.5, -82.0, 30.0]);
var composite = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2023-06-01', '2023-08-31')
.filterBounds(roi)
.median()
.multiply(0.0000275).add(-0.2);
var ndvi = composite.normalizedDifference(['SR_B5', 'SR_B4'])
.rename('NDVI');
Export.image.toDrive({
image: ndvi,
description: 'L8_NDVI_Gainesville_2023Summer',
folder: 'EarthEngine',
region: roi,
scale: 30,
crs: 'EPSG:32617', // UTM 17N for Florida
maxPixels: 1e9,
fileFormat: 'GeoTIFF'
});
Common mistakes
- Forgetting
scale(exports at wrong resolution). - Not specifying
region(exports entire globe attempt). - Using spaces in description or file names.
- Exporting visualized images when you need raw values.
- Not clicking "Run" in the Tasks panel.
Quick self-check
- What scale should you use for exporting Landsat imagery?
- When would you export to Asset instead of Drive?
- What does
cloudOptimized: truedo? - How do you prevent "memory limit exceeded" errors?
Next steps
- Exporting Data - basic exports
- Reducers - aggregate before exporting
- Temporal Compositing