Nota:l'API REST contiene funzionalità nuove e avanzate che potrebbero non essere adatte a tutti gli utenti. Se non hai mai utilizzato Earth Engine, inizia con la guida JavaScript.
La guida rapida all'API REST di Earth Engine mostra come accedere a blocchi di pixel da un asset Earth Engine. L'esempio di pixel di calcolo mostra come applicare un calcolo ai pixel prima di ottenere il risultato. Questo esempio mostra come ottenere la media dei pixel in ogni immagine di un ImageCollection
in ogni funzionalità di un FeatureCollection
. Nello specifico, si tratta di una richiesta POST
all'endpoint computeFeatures
.
Prima di iniziare
Segui queste istruzioni per:
- Richiedere Earth Engine
- Crea un progetto Google Cloud
- Abilitare l'API Earth Engine sul progetto
- Crea un account di servizio
- Concedi al service account l'autorizzazione a livello di progetto per eseguire i calcoli di Earth Engine
Nota: per completare questo tutorial, avrai bisogno di un service account registrato per l'accesso a Earth Engine. Consulta queste istruzioni per registrare un service account prima di procedere.
Autenticarsi su Google Cloud
La prima cosa da fare è accedere per poter effettuare richieste autenticate a Google Cloud. Imposterai il progetto contemporaneamente. Segui le istruzioni nell'output per completare l'accesso.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
Ottenere un file della chiave privata per il service account
Per utilizzare Earth Engine, dovresti già avere un service account registrato. In caso contrario, segui queste istruzioni per ottenerne uno. Copia l'indirizzo email del tuo service account nella cella seguente. Il service account deve essere già registrato per utilizzare Earth Engine. Nella cella seguente, la riga di comando gsutil
viene utilizzata per generare un file di chiavi per il service account. Il file della chiave verrà creato nella VM del 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}
Avvia un AuthorizedSession
e verifica le tue credenziali
Testa la chiave privata utilizzandola per ottenere le credenziali. Utilizza le credenziali per creare una sessione autorizzata per effettuare richieste HTTP. Esegui una richiesta GET
tramite la sessione per verificare che le credenziali funzionino.
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))
Serializzare un calcolo
Prima di poter inviare una richiesta di calcolo, il calcolo deve essere inserito nel formato del grafico delle espressioni di Earth Engine. Di seguito viene illustrato come ottenere il grafico dell'espressione.
Esegui l'autenticazione in Earth Engine
Ottieni le credenziali con ambito Earth Engine dal service account. Utilizzali per inizializzare 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)
Definisci un calcolo
Crea il prototipo di un semplice calcolo con l'API client. Tieni presente che il risultato del calcolo è un FeatureCollection
.
Per verificare che il calcolo possa essere eseguito senza errori, ottieni un valore dal primo Feature
(l'NDVI medio nel poligono).
# 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())
Serializzare il grafico dell'espressione
Verrà creato un oggetto che rappresenta il grafico dell'espressione Earth Engine (in particolare, un Expression
). In generale, devi crearli con una delle API client.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
Invia la richiesta
Invia una richiesta POST
all'endpoint computeFeatures
. Tieni presente che la richiesta contiene Expression
, ovvero il calcolo serializzato.
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))
La risposta contiene il FeatureCollection
risultante in formato GeoJSON, che può essere utilizzato da altre app o processi.