Изображения из 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, предоставленных Геологической службой США, используются параметры преобразования, смещенные на 1/2 пикселя от начала координат проекции (смещение на 15 м для каналов с разрешением 30 м), а в изображениях Sentinel-2, предоставленных Европейским космическим агентством, используются параметры преобразования, выровненные по началу координат проекции. Если 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()
После запуска этого кода в редакторе кода на вкладке Задачи будет создана задача экспорта. Нажмите кнопку Выполнить рядом с задачей, чтобы запустить ее. Подробнее о Менеджере задач можно узнать в разделе о редакторе кода. Образ будет создан в вашем аккаунте Диска с указанным 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()
Как и в случае с экспортом на Диск, начните экспорт на вкладке Задачи. Местоположение сегмента Cloud Storage может влиять на производительность и стоимость хранения. Подробнее о выборе местоположения…
к объекту
Чтобы экспортировать изображение в объект в папке объектов 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
Чтобы экспортировать оптимизированный для облака файл GeoTIFF, передайте литерал JavaScript для formatOptions, в котором для ключа cloudOptimized задано значение true. Продолжим предыдущий пример:
Редактор кода (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()
Оптимизированные для облака файлы GeoTIFF можно повторно загрузить из Cloud Storage в Image или зарегистрировать как объекты. Полные спецификации и параметры экспорта приведены в обзоре Cloud Optimized GeoTIFF (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' Подробнее о том, как задать разрешение и систему координат для выходных данных, рассказывается в разделе о настройке экспорта изображений.