Обзор ImageCollection

ImageCollection – это стопка или последовательность изображений.

Создание из идентификатора коллекции

Объект ImageCollection можно загрузить, вставив идентификатор объекта Earth Engine в конструктор ImageCollection. Идентификаторы ImageCollection можно найти в каталоге данных. Например, чтобы загрузить коллекцию отражательной способности поверхности Sentinel-2:

Редактор кода (JavaScript)

var sentinelCollection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED');

Настройка Python

Информацию о Python API и использовании geemap для интерактивной разработки можно найти на странице Среда Python.

import ee
import geemap.core as geemap

Colab (Python)

sentinel_collection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')

Эта коллекция содержит все изображения Sentinel-2 в общедоступном каталоге. Их много. Обычно коллекцию нужно отфильтровать, как показано здесь или здесь.

Создать из списка изображений

Конструктор ee.ImageCollection() или удобный метод ee.ImageCollection.fromImages() создают коллекции изображений из списков изображений. Вы также можете создавать новые коллекции изображений, объединяя существующие. Пример:

Редактор кода (JavaScript)

// Create arbitrary constant images.
var constant1 = ee.Image(1);
var constant2 = ee.Image(2);

// Create a collection by giving a list to the constructor.
var collectionFromConstructor = ee.ImageCollection([constant1, constant2]);
print('collectionFromConstructor: ', collectionFromConstructor);

// Create a collection with fromImages().
var collectionFromImages = ee.ImageCollection.fromImages(
  [ee.Image(3), ee.Image(4)]);
print('collectionFromImages: ', collectionFromImages);

// Merge two collections.
var mergedCollection = collectionFromConstructor.merge(collectionFromImages);
print('mergedCollection: ', mergedCollection);

// Create a toy FeatureCollection
var features = ee.FeatureCollection(
  [ee.Feature(null, {foo: 1}), ee.Feature(null, {foo: 2})]);

// Create an ImageCollection from the FeatureCollection
// by mapping a function over the FeatureCollection.
var images = features.map(function(feature) {
  return ee.Image(ee.Number(feature.get('foo')));
});

// Print the resultant collection.
print('Image collection: ', images);

Настройка Python

Информацию о Python API и использовании geemap для интерактивной разработки можно найти на странице Среда Python.

import ee
import geemap.core as geemap

Colab (Python)

# Create arbitrary constant images.
constant_1 = ee.Image(1)
constant_2 = ee.Image(2)

# Create a collection by giving a list to the constructor.
collection_from_constructor = ee.ImageCollection([constant_1, constant_2])
display('Collection from constructor:', collection_from_constructor)

# Create a collection with fromImages().
collection_from_images = ee.ImageCollection.fromImages(
    [ee.Image(3), ee.Image(4)]
)
display('Collection from images:', collection_from_images)

# Merge two collections.
merged_collection = collection_from_constructor.merge(collection_from_images)
display('Merged collection:', merged_collection)

# Create a toy FeatureCollection
features = ee.FeatureCollection(
    [ee.Feature(None, {'foo': 1}), ee.Feature(None, {'foo': 2})]
)

# Create an ImageCollection from the FeatureCollection
# by mapping a function over the FeatureCollection.
images = features.map(lambda feature: ee.Image(ee.Number(feature.get('foo'))))

# Display the resultant collection.
display('Image collection:', images)

Обратите внимание, что в этом примере ImageCollection создается путем сопоставления функции, которая возвращает Image, с FeatureCollection. Подробнее о сопоставлении в разделе Сопоставление по ImageCollection. Подробнее о коллекциях объектов…

Создать из списка COG

Создайте ImageCollection из оптимизированных для облака файлов GeoTIFF (COG) в Cloud Storage. Пример:

Редактор кода (JavaScript)

// All the GeoTiffs are in this folder.
var uriBase = 'gs://gcp-public-data-landsat/LC08/01/001/002/' +
    'LC08_L1GT_001002_20160817_20170322_01_T2/';

// List of URIs, one for each band.
var uris = ee.List([
  uriBase + 'LC08_L1GT_001002_20160817_20170322_01_T2_B2.TIF',
  uriBase + 'LC08_L1GT_001002_20160817_20170322_01_T2_B3.TIF',
  uriBase + 'LC08_L1GT_001002_20160817_20170322_01_T2_B4.TIF',
  uriBase + 'LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF',
]);

// Make a collection from the list of images.
var images = uris.map(ee.Image.loadGeoTIFF);
var collection = ee.ImageCollection(images);

// Get an RGB image from the collection of bands.
var rgb = collection.toBands().rename(['B2', 'B3', 'B4', 'B5']);
Map.centerObject(rgb);
Map.addLayer(rgb, {bands: ['B4', 'B3', 'B2'], min: 0, max: 20000}, 'rgb');

Настройка Python

Информацию о Python API и использовании geemap для интерактивной разработки можно найти на странице Среда Python.

import ee
import geemap.core as geemap

Colab (Python)

# All the GeoTiffs are in this folder.
uri_base = (
    'gs://gcp-public-data-landsat/LC08/01/001/002/'
    + 'LC08_L1GT_001002_20160817_20170322_01_T2/'
)

# List of URIs, one for each band.
uris = ee.List([
    uri_base + 'LC08_L1GT_001002_20160817_20170322_01_T2_B2.TIF',
    uri_base + 'LC08_L1GT_001002_20160817_20170322_01_T2_B3.TIF',
    uri_base + 'LC08_L1GT_001002_20160817_20170322_01_T2_B4.TIF',
    uri_base + 'LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF',
])

# Make a collection from the list of images.
images = uris.map(lambda uri: ee.Image.loadGeoTIFF(uri))
collection = ee.ImageCollection(images)

# Get an RGB image from the collection of bands.
rgb = collection.toBands().rename(['B2', 'B3', 'B4', 'B5'])
m = geemap.Map()
m.center_object(rgb)
m.add_layer(rgb, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 20000}, 'rgb')
m

Подробнее о том, как загружать изображения из файлов GeoTIFF, оптимизированных для облака… Для рабочих коллекций зарегистрируйте COG как объекты. О компромиссах читайте в разделе Чтение COG из Cloud Storage.

Создание из массива Zarr v2

Создайте ImageCollection из массива Zarr v2 в Cloud Storage, взяв срезы изображения по более высокому измерению. Пример:

Редактор кода (JavaScript)

var timeStart = 1000000;
var timeEnd = 1000048;
var zarrV2ArrayImages = ee.ImageCollection.loadZarrV2Array({
  uri:
      'gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3/evaporation/.zarray',
  proj: 'EPSG:4326',
  axis: 0,
  starts: [timeStart],
  ends: [timeEnd]
});

print(zarrV2ArrayImages);

Map.addLayer(zarrV2ArrayImages, {min: -0.0001, max: 0.00005}, 'Evaporation');

Настройка Python

Информацию о Python API и использовании geemap для интерактивной разработки можно найти на странице Среда Python.

import ee
import geemap.core as geemap

Colab (Python)

time_start = 1000000
time_end = 1000048
zarr_v2_array_images = ee.ImageCollection.loadZarrV2Array(
    uri='gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3/evaporation/.zarray',
    proj='EPSG:4326',
    axis=0,
    starts=[time_start],
    ends=[time_end],
)

display(zarr_v2_array_images)

m = geemap.Map()
m.add_layer(
    zarr_v2_array_images, {'min': -0.0001, 'max': 0.00005}, 'Evaporation'
)
m