Как упоминалось в статье Начало работы, растровые данные представлены в Earth Engine как объекты Image. Изображения состоят из одного или нескольких каналов, и у каждого канала есть свое название, тип данных, масштаб, маска и проекция. У каждого изображения есть метаданные, которые хранятся в виде набора свойств.
ee.Image constructor
Изображения можно загрузить, вставив идентификатор объекта Earth Engine в конструктор ee.Image. Идентификаторы изображений можно найти в каталоге данных.
Например, в цифровую модель рельефа (NASADEM):
Редактор кода (JavaScript)
var loadedImage = ee.Image('NASA/NASADEM_HGT/001');
import ee import geemap.core as geemap
Colab (Python)
loaded_image = ee.Image('NASA/NASADEM_HGT/001')
Обратите внимание, что найти изображение можно также с помощью инструмента поиска в редакторе кода. При импорте объекта код для создания изображения будет автоматически добавлен в раздел импорта редактора кода. В качестве аргумента конструктора ee.Image можно использовать личный идентификатор объекта.
Получите ee.Image от ee.ImageCollection
Стандартный способ получить изображение из коллекции – отфильтровать ее. Фильтры применяются в порядке убывания специфичности. Например, чтобы получить изображение из коллекции отражательной способности поверхности Sentinel-2:
Редактор кода (JavaScript)
var first = ee.ImageCollection('COPERNICUS/S2_SR') .filterBounds(ee.Geometry.Point(-70.48, 43.3631)) .filterDate('2019-01-01', '2019-12-31') .sort('CLOUDY_PIXEL_PERCENTAGE') .first(); Map.centerObject(first, 11); Map.addLayer(first, {bands: ['B4', 'B3', 'B2'], min: 0, max: 2000}, 'first');
import ee import geemap.core as geemap
Colab (Python)
first = ( ee.ImageCollection('COPERNICUS/S2_SR') .filterBounds(ee.Geometry.Point(-70.48, 43.3631)) .filterDate('2019-01-01', '2019-12-31') .sort('CLOUDY_PIXEL_PERCENTAGE') .first() ) # Define a map centered on southern Maine. m = geemap.Map(center=[43.7516, -70.8155], zoom=11) # Add the image layer to the map and display it. m.add_layer( first, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 2000}, 'first' ) display(m)
Обратите внимание, что сортировка выполняется после применения фильтров. Не сортируйте всю коллекцию.
Изображения из облачных файлов GeoTIFF
Вы можете использовать ee.Image.loadGeoTIFF(), чтобы загружать изображения из Cloud Optimized GeoTIFFs в Google Cloud Storage.
Например, общедоступный набор данных Landsat, размещенный в Google Cloud, содержит этот файл GeoTIFF, соответствующий каналу 5 из сцены Landsat 8. Вы можете загрузить это изображение из Cloud Storage с помощью ee.Image.loadGeoTIFF():
Редактор кода (JavaScript)
var uri = 'gs://gcp-public-data-landsat/LC08/01/001/002/' + 'LC08_L1GT_001002_20160817_20170322_01_T2/' + 'LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF'; var cloudImage = ee.Image.loadGeoTIFF(uri); print(cloudImage);
import ee import geemap.core as geemap
Colab (Python)
uri = ( 'gs://gcp-public-data-landsat/LC08/01/001/002/' + 'LC08_L1GT_001002_20160817_20170322_01_T2/' + 'LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF' ) cloud_image = ee.Image.loadGeoTIFF(uri) display(cloud_image)
Если вы хотите перезагрузить файл GeoTIFF, оптимизированный для облака, который вы экспортируете из Earth Engine в Cloud Storage, при экспорте задайте для параметра cloudOptimized значение true, как описано здесь.
Примечание. Для оптимальной производительности рекомендуем зарегистрировать COG как объекты, а не загружать их напрямую с помощью ee.Image.loadGeoTIFF(). Подробные сведения и сравнение приведены в обзоре Cloud Optimized GeoTIFF (COG).
Изображения из массивов Zarr версии 2
Вы можете использовать ee.Image.loadZarrV2Array(), чтобы загрузить изображение из массива Zarr v2 в Google Cloud Storage. Например, общедоступный набор данных ERA5, размещенный в Google Cloud, содержит этот массив Zarr версии 2, соответствующий количеству воды в метрах, испарившейся с поверхности Земли. Вы можете загрузить этот массив из Cloud Storage с помощью ee.Image.loadZarrV2Array():
Редактор кода (JavaScript)
var timeStart = 1000000; var timeEnd = 1000010; var zarrV2ArrayImage = ee.Image.loadZarrV2Array({ uri: 'gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3/evaporation/.zarray', proj: 'EPSG:4326', starts: [timeStart], ends: [timeEnd] }); print(zarrV2ArrayImage); Map.addLayer(zarrV2ArrayImage, {min: -0.0001, max: 0.00005}, 'Evaporation');
import ee import geemap.core as geemap
Colab (Python)
time_start = 1000000 time_end = 1000010 zarr_v2_array_image = ee.Image.loadZarrV2Array( uri='gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3/evaporation/.zarray', proj='EPSG:4326', starts=[time_start], ends=[time_end], ) display(zarr_v2_array_image) m.add_layer( zarr_v2_array_image, {'min': -0.0001, 'max': 0.00005}, 'Evaporation' ) m
Постоянные изображения
Помимо загрузки изображений по идентификатору, вы также можете создавать изображения из констант, списков или других подходящих объектов Earth Engine. Ниже показаны способы создания изображений, получения подмножеств каналов и работы с каналами:
Редактор кода (JavaScript)
// Create a constant image. var image1 = ee.Image(1); print(image1); // Concatenate two images into one multi-band image. var image2 = ee.Image(2); var image3 = ee.Image.cat([image1, image2]); print(image3); // Create a multi-band image from a list of constants. var multiband = ee.Image([1, 2, 3]); print(multiband); // Select and (optionally) rename bands. var renamed = multiband.select( ['constant', 'constant_1', 'constant_2'], // old names ['band1', 'band2', 'band3'] // new names ); print(renamed); // Add bands to an image. var image4 = image3.addBands(ee.Image(42)); print(image4);
import ee import geemap.core as geemap
Colab (Python)
# Create a constant image. image_1 = ee.Image(1) display(image_1) # Concatenate two images into one multi-band image. image_2 = ee.Image(2) image_3 = ee.Image.cat([image_1, image_2]) display(image_3) # Create a multi-band image from a list of constants. multiband = ee.Image([1, 2, 3]) display(multiband) # Select and (optionally) rename bands. renamed = multiband.select( ['constant', 'constant_1', 'constant_2'], # old names ['band1', 'band2', 'band3'], # new names ) display(renamed) # Add bands to an image. image_4 = image_3.addBands(ee.Image(42)) display(image_4)
Запустить в Google Colab
Посмотреть исходный код на GitHub