Примечание: REST API содержит новые и расширенные функции, которые могут быть неподходящими для всех пользователей. Если вы новичок в Earth Engine, ознакомьтесь с руководством по JavaScript .
В кратком руководстве по REST API Earth Engine показано, как получить доступ к блокам пикселей из ресурса Earth Engine. Пример вычисления пикселей демонстрирует, как применить вычисление к пикселям перед получением результата. В этом примере показано получение среднего значения пикселей на каждом изображении из ImageCollection
для каждого объекта из FeatureCollection
. В частности, это POST
-запрос к конечной точке computeFeatures
.
Прежде чем начать
Следуйте этим инструкциям , чтобы:
- Подать заявку на Earth Engine
- Создайте проект Google Cloud
- Включить API Earth Engine в проекте
- Создать учетную запись службы
- Предоставьте учетной записи службы разрешение на уровне проекта для выполнения вычислений Earth Engine.
Примечание : для выполнения этого руководства вам потребуется зарегистрированная учётная запись службы для доступа к Earth Engine. Перед продолжением ознакомьтесь с инструкциями по регистрации учётной записи службы.
Аутентификация в Google Cloud
Первое, что нужно сделать, — это войти в систему, чтобы иметь возможность отправлять аутентифицированные запросы в Google Cloud. Одновременно с этим вы настроите проект. Следуйте инструкциям в выходных данных, чтобы завершить вход.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
Получите файл закрытого ключа для вашей учетной записи службы.
У вас уже должна быть зарегистрированная учётная запись службы для использования Earth Engine. Если у вас её нет, следуйте этим инструкциям , чтобы её получить. Скопируйте адрес электронной почты вашей учётной записи службы в следующую ячейку. (Учётная запись службы должна быть зарегистрирована для использования Earth Engine). В следующей ячейке командная строка gsutil
используется для генерации файла ключа для учётной записи службы. Файл ключа будет создан на виртуальной машине ноутбука.
# INSERT YOUR SERVICE ACCOUNT HERE
SERVICE_ACCOUNT='your-service-account@your-project.iam.gserviceaccount.com'
KEY = 'key.json'
!gcloud iam service-accounts keys create {KEY} --iam-account {SERVICE_ACCOUNT}
Запустите AuthorizedSession
и проверьте свои учетные данные
Проверьте закрытый ключ, используя его для получения учётных данных. Используйте учётные данные для создания авторизованного сеанса для выполнения HTTP-запросов. Выполните GET
запрос через сеанс, чтобы проверить работоспособность учётных данных.
from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(KEY)
scoped_credentials = credentials.with_scopes(
['https://www.googleapis.com/auth/cloud-platform'])
session = AuthorizedSession(scoped_credentials)
url = 'https://earthengine.googleapis.com/v1beta/projects/earthengine-public/assets/LANDSAT'
response = session.get(url)
from pprint import pprint
import json
pprint(json.loads(response.content))
Сериализация вычисления
Прежде чем отправить запрос на вычисление, вычисление необходимо преобразовать в формат графика выражений Earth Engine. Ниже показано, как получить график выражений.
Аутентификация в Earth Engine
Получите учётные данные Earth Engine из учётной записи сервиса. Используйте их для инициализации Earth Engine.
import ee
# Get some new credentials since the other ones are cloud scope.
ee_creds = ee.ServiceAccountCredentials(SERVICE_ACCOUNT, KEY)
ee.Initialize(ee_creds)
Определить вычисление
Создайте прототип простого вычисления с помощью клиентского API. Обратите внимание, что результатом вычисления является FeatureCollection
. Чтобы убедиться в успешности вычисления без ошибок, получите значение первого Feature
(средний индекс NDVI в полигоне).
# A collection of polygons.
states = ee.FeatureCollection('TIGER/2018/States')
maine = states.filter(ee.Filter.eq('NAME', 'Maine'))
# Imagery: NDVI vegetation index from MODIS.
band = 'NDVI'
images = ee.ImageCollection('MODIS/006/MOD13Q1').select(band)
image = images.first()
computation = image.reduceRegions(
collection=maine,
reducer=ee.Reducer.mean().setOutputs([band]),
scale=image.projection().nominalScale()
)
# Print the value to test.
print(computation.first().get(band).getInfo())
Сериализовать граф выражения
Это создаст объект, представляющий граф выражений Earth Engine (в частности, Expression
). Как правило, такие объекты следует создавать с помощью одного из клиентских API.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
Отправить запрос
Отправьте POST
запрос к конечной точке computeFeatures
. Обратите внимание, что запрос содержит Expression
, представляющее собой сериализованное вычисление.
import json
url = 'https://earthengine.googleapis.com/v1beta/projects/{}/table:computeFeatures'
response = session.post(
url = url.format(PROJECT),
data = json.dumps({'expression': serialized})
)
import json
pprint(json.loads(response.content))
Ответ содержит результирующий FeatureCollection
в формате GeoJSON, который может использоваться другими приложениями или процессами.