Объекты Earth Engine – это геопространственные данные, принадлежащие проекту и хранящиеся на платформе. Вы можете загружать собственные данные и сохранять данные, полученные в результате анализа в Earth Engine, в виде объектов.
Типы объектов
В Earth Engine доступны различные форматы объектов для разных типов данных, а также контейнеры для организации.
| Типы объектов | |
|---|---|
Image |
Растровое изображение – это представление географической информации в виде сетки, в которой каждая ячейка содержит значение, соответствующее определенному местоположению на поверхности Земли. |
ImageCollection |
Набор связанных растровых изображений, которые составляют мозаику или временной ряд. По функциям она похожа на папку, но ее можно импортировать в Earth Engine как объект ee.ImageCollection, который включает набор методов для фильтрации и анализа. |
Table |
Табличная структура данных, состоящая из векторных объектов (строк), каждый из которых содержит ряд свойств (столбцов). Она представлена объектом ee.FeatureCollection, который включает набор методов для фильтрации и анализа. |
Classifier |
Обученная модель машинного обучения Earth Engine. Она представлена объектом ee.Classifier |
FeatureView |
Визуализация таблицы для использования в приложениях Earth Engine. |
Folder |
Контейнер для объектов и дополнительных папок, который помогает упорядочивать контент. |
Организация объектов
Объекты Earth Engine организованы в иерархическую систему папок и коллекций. Структура похожа на обычные файловые системы.
Корневой уровень
Объекты принадлежат облачному проекту. Название проекта определяет корень каталога ресурсов. Например, корень my-project – projects/my-project/assets.
Все объекты, принадлежащие my-project, находятся в папке projects/my-project/assets или ее подпапке (или ImageCollection).
Каталог
Для организации объектов в Earth Engine используется древовидная структура каталогов. У каждого облачного проекта есть корневой каталог, который может содержать отдельные объекты и папки. ImageCollections – это специальный тип объектов, предназначенный для хранения наборов связанных изображений, например временных рядов или мозаик. В отличие от папок, ImageCollections могут содержать только объекты изображений и не могут содержать другие папки или коллекции.
- folder_dataprojects/my-project/assets/
- folder folder-name/
- photo image-name
- view_comfy table-name
- satellite featureview-name
- bubble_chart classifier-name
- photo_library imagecollection-name/
- photo image-name-1
- photo image-name-2
Идентификатор объекта
Earth Engine использует идентификаторы объектов для ссылки на данные как в скриптах, так и в операциях командной строки. Они определяют местоположение объектов, используя косую черту (/) в качестве разделителя между каталогами. Например, projects/my-project/assets/my-asset указывает на объект с названием my-asset, расположенный в корневом каталоге my-project. Ниже приведен пример того, как с помощью этого идентификатора получить информацию об объекте.
Python
print(ee.data.getAsset('projects/my-project/assets/my-asset'))
Редактор кода
print(ee.Image('projects/my-project/assets/my-asset'))
Командная строка
earthengine asset info projects/my-project/assets/my-assetСоздать объекты
Вы можете создавать папки и ImageCollections, а также загружать изображения и таблицы из локальных файлов или файлов в сегменте Google Cloud Storage. Поддерживаемые форматы изображений включают GeoTIFF и TFRecord. Оптимизированные для облака GeoTIFF (COG) в Cloud Storage также можно зарегистрировать на месте, а не загружать. Поддерживаемые форматы таблиц включают Shapefile и CSV. (Объекты также можно создавать, экспортируя результаты анализа Earth Engine с помощью пакетных функций Export.*.toAsset).
Клиент Python
Изображение
Используйте функцию ee.data.startIngestion, чтобы загружать изображения из Cloud Storage. Подробную информацию о настройке загрузки можно найти на странице Манифест изображений.
manifest = {
'name': 'projects/my-project/assets/asset-name',
'tilesets': [
{
'sources': [
{
'uris': [
'gs://my-bucket/filename.tif'
]
}
]
}
]
}
ee.data.startIngestion(None, manifest)
Таблица
Используйте функцию ee.data.startTableIngestion, чтобы импортировать таблицы из Cloud Storage. Подробную информацию о настройке загрузки можно найти на странице Манифест изображений.
manifest = {
'name': 'projects/my-project/assets/asset-name',
'sources': [
{
'uris': [
'gs://my-bucket/filename.csv'
]
}
]
}
ee.data.startTableIngestion(None, manifest)
Папка или ImageCollection
Используйте функцию ee.data.createAsset, чтобы создать пустые папки или ImageCollections.
ee.data.createAsset(
{'type': 'FOLDER'}, # or 'IMAGE_COLLECTION'
'projects/my-project/assets/asset-name'
)
Редактор кода
В Менеджере объектов нажмите кнопку Создать и выберите в раскрывающемся списке тип объекта, который вы хотите загрузить или создать. В диалоговом окне настройте загрузку или создание объекта.
Командная строка
Изображение или таблица
earthengine upload image --asset_id=projects/my-project/assets/asset-name gs://my-bucket/filename.tifearthengine upload table --asset_id=projects/my-project/assets/asset-name gs://my-bucket/filename.csv
Папка или ImageCollection
Для создания пустых папок или коллекций изображений используйте команду earthengine create.
earthengine create folder projects/my-project/assets/folder-nameearthengine create collection projects/my-project/assets/collection-name
Внешнее изображение
Файлы Cloud Optimized GeoTIFF (COG) в сегменте Cloud Storage можно зарегистрировать как объекты с поддержкой COG (в API они называются внешними изображениями) и использовать непосредственно в Earth Engine. Инструкции по созданию манифеста приведены в руководстве по регистрации COG.
earthengine upload external_image --manifest /tmp/foo.jsonОбъекты для страницы приложения
Клиент Python
Используйте функцию ee.data.listAssets, чтобы получить список объектов в папке или коллекции (не рекурсивно).
Дополнительную информацию о фильтрации и разбиении на страницы можно найти в справочной документации.
ee.data.listAssets('projects/my-project/assets')
Также ознакомьтесь с правилами ee.data.listImages и ee.data.listFeatures.
Редактор кода
Чтобы посмотреть объекты, разверните папки в Менеджере объектов.
Командная строка
Чтобы получить список объектов в папке или коллекции (не рекурсивно), используйте команду earthengine ls. Дополнительную информацию об ограничении количества объектов в списке и объема возвращаемых данных можно найти в справочной документации.
earthengine ls projects/my-project/assetsКак настроить разрешения для объектов
Клиент Python
Чтобы задать разрешения для объекта, используйте функцию ee.data.setAssetAcl.
asset_id = 'projects/my-project/assets/asset-name'
acl_update = {
'owners': [
'user:big_cheese@example.com',
'user:el_jefe@example.com'
],
'writers': [
'user:romeo@example.com',
'user:juliet@example.com'
],
'readers': [
'group:some-group@googlegroups.com',
'domain:example.com',
'serviceAccount:some-project-id@appspot.gserviceaccount.com'
],
'all_users_can_read': False
}
ee.data.setAssetAcl(asset_id, acl_update)
Редактор кода
В Менеджере объектов наведите указатель на объект и нажмите на значок Поделиться. В открывшемся диалоговом окне введите адрес электронной почты или домен, а затем выберите уровень доступа из раскрывающегося списка. Нажмите кнопку Добавить доступ, чтобы подтвердить изменение. Установите флажок "Все могут читать", чтобы предоставить разрешение на чтение всем пользователям. В этом же диалоговом окне можно предоставить доступ к приложениям Earth Engine, выбрав название приложения из раскрывающегося списка (объекты, принадлежащие активному проекту редактора кода).
Командная строка
Используйте команду earthengine acl set, чтобы задать для объекта доступ на чтение public или private.
earthengine acl set public projects/my-project/assets/asset-nameЧтобы задать отдельные разрешения на чтение и запись объектов, используйте команду earthengine acl ch.
earthengine acl ch -u person@gmail.com:R projects/my-project/assets/asset-nameПодробную информацию можно найти в справочнике по командной строке.
Проверьте разрешения для объектов
Клиент Python
Чтобы получить список управления доступом для объекта, используйте функцию ee.data.getAssetAcl.
ee.data.getAssetAcl('projects/my-project/assets/asset-name')
Редактор кода
В Менеджере объектов наведите указатель на объект и нажмите на значок Поделиться. В диалоговом окне появится список адресов электронной почты и доменов с указанием уровней доступа.
Командная строка
Чтобы получить список управления доступом для объекта, используйте команду earthengine acl get.
earthengine acl get projects/my-project/assets/asset-nameКопировать объекты
Клиент Python
Чтобы скопировать объект, используйте функцию ee.data.copyAsset.
ee.data.copyAsset('projects/my-project/assets/asset-name', 'projects/my-project/assets/asset-copy-name')
Редактор кода
Для копирования объектов используйте клиент Python или инструмент командной строки.
Командная строка
Чтобы скопировать объект, используйте команду earthengine cp.
earthengine cp projects/my-project/assets/asset-name projects/my-project/assets/asset-copy-nameКак перемещать и переименовывать объекты
Клиент Python
Чтобы переместить или переименовать объект, используйте функцию ee.data.renameAsset.
ee.data.renameAsset('projects/my-project/assets/asset-name', 'projects/my-project/assets/new-asset-name')
Редактор кода
Перенести
В Менеджере объектов перетащите объект в новую папку.
Переименовать
В Менеджере объектов наведите указатель на объект, нажмите на значок карандаша и введите новое название в поле ввода.
Командная строка
Чтобы переместить или переименовать объект, используйте команду earthengine mv.
earthengine mv projects/my-project/assets/asset-name projects/my-project/assets/new-asset-nameУдалить объекты
Клиент Python
Чтобы удалить объект, используйте функцию ee.data.deleteAsset.
ee.data.deleteAsset('projects/my-project/assets/asset-name')
Редактор кода
Нажмите на объект, чтобы открыть диалоговое окно, а затем нажмите кнопку Удалить.
Командная строка
Чтобы удалить объект, используйте команду earthengine rm. Информацию о рекурсивных и пробных вариантах можно найти в справочнике по функциям.
earthengine rm projects/my-project/assets/asset-nameКак посмотреть метаданные объекта
Клиент Python
Используйте функцию ee.data.getAsset, чтобы получить метаданные объекта.
ee.data.getAsset('projects/my-project/assets/asset-name')
Редактор кода
Нажмите на объект, чтобы открыть диалоговое окно. Посмотрите информацию об объекте.
Командная строка
Чтобы получить метаданные объекта, используйте команду earthengine asset info.
earthengine asset info projects/my-project/assets/asset-nameКак задать метаданные объекта
Можно задать следующие метаданные объекта:
start_timeend_timeproperties
Клиент Python
Чтобы обновить метаданные объекта, используйте функцию ee.data.updateAsset.
asset_id = 'projects/my-project/assets/asset-name'
new_metadata = {
'properties': {
'name': 'value'
},
'start_time': '2024-10-02T15:01:24Z',
'end_time': '2024-10-02T15:01:25Z',
}
update_these = ['start_time', 'end_time', 'properties']
ee.data.updateAsset(asset_id, new_metadata, update_these)
Редактор кода
Нажмите на объект, чтобы открыть диалоговое окно, а затем активируйте переключатель редактирования в правом верхнем углу. Вы можете изменить описание, свойства, а также даты начала и окончания. Чтобы сохранить изменения, отключите переключатель.
Командная строка
Чтобы обновить метаданные объекта, используйте команду earthengine asset set. Дополнительную информацию можно найти в справочной документации.
earthengine asset set \
--time_start 2024-10-02T15:01:24 \
--time_end 2024-10-02T15:01:25 \
--property 'name=value' \
projects/my-project/assets/asset-name
Проверка квоты на объекты
Квота применяется на уровне проекта. Подробнее о квотах на объекты…
Клиент Python
Чтобы узнать, сколько места в хранилище занимает корневой объект, используйте функцию ee.data.getAssetRootQuota.
ee.data.getAssetRootQuota('projects/my-project/assets')
Редактор кода
В Менеджере объектов наведите указатель на корень проекта и нажмите на значок data_usage. Появится информационное диалоговое окно.
Командная строка
Чтобы проверить квоту на объекты, используйте клиент Python или редактор кода.