Изображения из Earth Engine можно экспортировать в формате GeoTIFF или TFRecord. Дополнительные варианты вывода приведены в разделе Параметры конфигурации.
Пример настройки
Сначала определите, какие данные изображений будут экспортированы:
Редактор кода (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])
Затем определите параметры проекции, которые будут использоваться в последующих экспортах. Параметр crs используется для указания системы координат, а параметр crsTransform – для точного указания сетки пикселей. Параметр crsTransform – это список параметров из матрицы аффинного преобразования в порядке построчного сканирования [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. Начало координат изображения определяется значениями xTranslation и yTranslation, а размер изображения в пикселях – значениями xScale и yScale. Ознакомьтесь с примерами аффинных матриц.
Редактор кода (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()
Как настроить scale
Чтобы упростить задачу, вы можете указать параметр scale, и Earth Engine рассчитает для вас параметр crsTransform. Однако простое задание масштаба изображения не определяет начало проекции и может привести к тому, что изображение будет смещено относительно другого изображения с тем же размером пикселя.
Это связано с тем, что параметр scale используется для заполнения значений xScale и yScale в crsTransform, а значения xTranslation и yTranslation рассчитываются так, чтобы при делении на соответствующие значения xScale и yScale остаток был равен нулю. Эти параметры определяют сетку пикселей, в которой начало проекции находится в углу пикселя. Это соглашение отличается от параметров преобразования, используемых некоторыми поставщиками данных, которые используют сетки, смещенные относительно начала проекции. Например, в изображениях Landsat, предоставленных USGS, используются параметры преобразования, которые смещены на 1/2 пикселя от начала проекции (смещение на 15 м для полос 30 м), а в изображениях Sentinel-2, предоставленных ESA, используются параметры преобразования, которые выровнены по началу проекции. Если crsTransform, указанные в экспорте, не соответствуют crsTransform исходного изображения, выходные пиксели будут передискретизированы (по умолчанию с использованием ближайшего соседа), что приведет к сдвигу результирующего изображения относительно исходного.
Итак, если вам нужно сопоставить пиксели экспортированного изображения с определенным изображением, используйте параметры crs и crsTransform, чтобы полностью контролировать сетку.
на Диск
Чтобы экспортировать образ в аккаунт Диска, используйте Export.image.toDrive(). Например, чтобы экспортировать части изображения Landsat, определите регион для экспорта, а затем вызовите Export.image.toDrive():
Редактор кода (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()
При выполнении этого кода на вкладке Tasks (Задачи) в редакторе кода будет создана задача экспорта. Нажмите кнопку Выполнить рядом с задачей, чтобы запустить ее. Подробнее о диспетчере задач рассказывается в разделе Редактор кода. Образ будет создан в вашем аккаунте Диска с указанным fileFormat.
в Cloud Storage
Чтобы экспортировать образ в сегмент Google Cloud Storage, используйте Export.image.toCloudStorage(). Чтобы экспортировать изображение Landsat из предыдущего примера в Cloud Storage, а не на Диск, используйте следующий код:
Редактор кода (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()
Как и в случае с экспортом на Диск, начните экспорт на вкладке Задачи. Если вы планируете снова загрузить экспортированные файлы в Earth Engine (с помощью ee.Image.loadGeoTIFF() или зарегистрировав их как объекты, поддерживаемые COG), сегмент должен находиться в поддерживаемом местоположении.
к объекту
Чтобы экспортировать изображение в объект в папке объектов Earth Engine, используйте Export.image.toAsset(). Чтобы управлять объектами Earth Engine или проверить, сколько места в хранилище вы используете, откройте Менеджер объектов. В следующем примере показан экспорт частей изображения Landsat с использованием разных правил пирамидирования для одной и той же полосы. Правила пирамидальной структуры определяют, как Earth Engine вычисляет версии объекта с более низким разрешением. Подробнее о том, как Earth Engine обрабатывает несколько разрешений, читайте в документации по масштабированию.
Редактор кода (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()
Вы можете указать правила пирамидального кодирования по умолчанию для всех диапазонов, которые не заданы явно, с помощью ключа '.default'. Вы также можете передать только ключ '.default'. Например, чтобы для всех диапазонов по умолчанию использовалось правило пирамидального тайлинга sample, укажите {'.default': 'sample'}.
Параметры конфигурации
Обратите внимание, что словарь параметров конфигурации, переданный в Export.image, включает scale (в метрах) и регион экспорта в виде ee.Geometry. Экспортированное изображение будет покрывать указанный регион пикселями в указанном масштабе. Если CRS не указана явно, она будет взята из первой полосы экспортируемого изображения.
Вы также можете указать dimensions, crs и/или crsTransform экспортируемого изображения. Дополнительную информацию о crs и crsTransform можно найти в глоссарии. Например, чтобы получить блок пикселей, точно выровненный по другому источнику данных, укажите dimensions, crs и crsTransform.
Чтобы получить блок пикселей заданного размера (например, значок размером 256 x 256), который охватывает регион, укажите dimensions и region.
Вы можете указать формат вывода изображения (если местом назначения не является toAsset()) с помощью параметра fileFormat (по умолчанию 'GeoTIFF').
Параметр formatOptions
Другие параметры конфигурации задаются с помощью параметра formatOptions, который должен быть словарем, ключами которого являются другие параметры формата, специфичные для каждого fileFormat, как описано ниже.
GeoTIFF
Cloud Optimized GeoTIFF (COG)
Чтобы экспортировать Cloud Optimized GeoTIFF (COG), задайте для ключа cloudOptimized значение true в formatOptions. Продолжим предыдущий пример.
Редактор кода (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()
COGs можно перезагрузить из Cloud Storage в Image или зарегистрировать как объекты. Полные спецификации и параметры экспорта приведены в обзоре COG.
Nodata
Укажите значение nodata для GeoTIFF, используя ключ noData в параметре formatOptions. Пример:
Редактор кода (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()
Обратите внимание, что значение nodata должно находиться в допустимом диапазоне для PixelType изображения. Вы можете проверить PixelType, выведя на печать метаданные изображения и посмотрев свойство data_type первой полосы. Вы также можете задать PixelType изображения, приведя данные к определенному типу, например с помощью методов toShort() или toInt().
TFRecord
Ознакомьтесь со статьей Формат данных TFRecord.
maxPixels
Параметр maxPixels предназначен для того, чтобы предотвратить случайное создание слишком больших файлов экспорта. Если значение по умолчанию слишком низкое для нужного вам изображения, вы можете увеличить maxPixels. Пример:
Export.image.toDrive({ image: landsat, description: 'maxPixelsExample', crs: projection.crs, crsTransform: projection.transform, region: geometry, maxPixels: 1e9 });
Экспорт больших файлов
Если изображение большое, оно будет экспортировано в виде нескольких файлов. Если вы экспортируете данные в формате GeoTIFF, изображение будет разбито на фрагменты. Название файла каждого фрагмента будет иметь вид baseFilename-yMin-xMin, где xMin и yMin – координаты каждого фрагмента в общей граничной рамке экспортированного изображения.
Если вы экспортируете данные в TFRecord, к названиям файлов будет добавляться -00000, -00001, … -0000N для N+1 файлов. Сохранение этого порядка важно, если вы намерены выполнить вывод на основе файлов и загрузить прогнозы обратно в Earth Engine в виде изображения. Подробнее о загрузке изображений в виде файлов TFRecord…
Экспорт изображений в том виде, в котором они отображаются в редакторе кода
Чтобы экспортировать снимки в том виде, в котором они отображаются на экране в Earth Engine, создайте изображения визуализации, как показано в разделах Изображения визуализации и Композитинг и мозаика. Поскольку в редакторе кода используется
система координат 'EPSG:3857', укажите ее'EPSG:3857' при экспорте, чтобы получить изображение
в той же проекции, что и на карте в редакторе кода. Подробные сведения о том, как задать разрешение и систему координат для выходных данных, приведены в разделе Настройка экспорта изображений.