Observação: a API REST contém recursos novos e avançados que podem não ser adequados para todos os usuários. Se você não conhece o Earth Engine, comece com o guia de JavaScript.
O guia de início rápido da API REST do Earth Engine mostra como acessar blocos de pixels de um recurso do Earth Engine. O exemplo de pixels de computação demonstra como aplicar um cálculo aos pixels antes de obter o resultado. Este exemplo demonstra como extrair a média de pixels em cada imagem de um ImageCollection
em cada recurso de um FeatureCollection
. Especificamente, essa é uma solicitação POST
para o endpoint computeFeatures
.
Antes de começar
Siga estas instruções para:
- Inscrever-se no Earth Engine
- Criar um projeto do Google Cloud
- Ativar a API Earth Engine no projeto
- Criar uma conta de serviço
- Conceda à conta de serviço permissão no nível do projeto para realizar cálculos do Earth Engine
Observação: para concluir este tutorial, você vai precisar de uma conta de serviço registrada para acesso ao Earth Engine. Consulte estas instruções para registrar uma conta de serviço antes de continuar.
Autenticar no Google Cloud
Primeiro, faça login para poder fazer solicitações autenticadas ao Google Cloud. Você vai definir o projeto ao mesmo tempo. Siga as instruções na saída para concluir o login.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
Extrair um arquivo de chave privada para sua conta de serviço
Você já precisa ter uma conta de serviço registrada para usar o Earth Engine. Caso contrário, siga estas instruções para criar uma. Copie o endereço de e-mail da sua conta de serviço na célula a seguir. A conta de serviço já precisa estar registrada para usar o Earth Engine. Na célula a seguir, a linha de comando gsutil
é usada para gerar um arquivo de chave para a conta de serviço. O arquivo de chave será criado na VM do notebook.
# 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}
Iniciar um AuthorizedSession
e testar suas credenciais
Teste a chave privada usando-a para receber credenciais. Use as credenciais para criar uma sessão autorizada e fazer solicitações HTTP. Faça uma solicitação GET
pela sessão para verificar se as credenciais funcionam.
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))
Serializar um cálculo
Antes de enviar uma solicitação para calcular algo, é necessário colocar o cálculo no formato de gráfico de expressão do Earth Engine. Confira abaixo como conseguir o gráfico de expressão.
Autenticar no Earth Engine
Receba as credenciais do Earth Engine com escopo da conta de serviço. Use-as para inicializar o 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)
Definir um cálculo
Crie um protótipo de um cálculo simples com a API do cliente. O resultado do cálculo é um FeatureCollection
.
Para verificar se o cálculo pode ser concluído sem erros, extraia um valor do primeiro Feature
(o NDVI médio no polígono).
# 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())
Serializar o gráfico de expressão
Isso vai criar um objeto que representa o gráfico de expressão do Earth Engine (especificamente, um Expression
). Em geral, você deve criar esses objetos com uma das APIs de cliente.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
Enviar a solicitação
Faça uma solicitação POST
ao endpoint computeFeatures
. A solicitação contém o Expression
, que é o cálculo serializado.
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))
A resposta contém o FeatureCollection
resultante como GeoJSON, que pode ser usado por outros apps ou processos.