Catatan: REST API berisi fitur baru dan canggih yang mungkin tidak cocok untuk semua pengguna. Jika Anda baru menggunakan Earth Engine, mulailah dengan panduan JavaScript.
Panduan memulai Earth Engine REST API menunjukkan cara mengakses blok piksel dari aset Earth Engine. Contoh piksel komputasi menunjukkan cara menerapkan komputasi ke piksel sebelum mendapatkan hasilnya. Contoh ini menunjukkan cara mendapatkan rata-rata piksel di setiap gambar ImageCollection
dalam setiap fitur FeatureCollection
. Secara khusus, ini adalah permintaan POST
ke endpoint computeFeatures
.
Sebelum memulai
Ikuti petunjuk berikut untuk:
- Mendaftar ke Earth Engine
- Membuat project Google Cloud
- Aktifkan Earth Engine API di project
- Membuat akun layanan
- Memberi akun layanan izin tingkat project untuk melakukan komputasi Earth Engine
Catatan: Untuk menyelesaikan tutorial ini, Anda memerlukan akun layanan yang terdaftar untuk akses Earth Engine. Lihat petunjuk ini untuk mendaftarkan akun layanan sebelum melanjutkan.
Melakukan autentikasi ke Google Cloud
Hal pertama yang harus dilakukan adalah login agar Anda dapat membuat permintaan yang diautentikasi ke Google Cloud. Anda akan menetapkan project pada saat yang sama. Ikuti petunjuk dalam output untuk menyelesaikan login.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
Mendapatkan file kunci pribadi untuk akun layanan Anda
Anda seharusnya sudah memiliki akun layanan yang terdaftar untuk menggunakan Earth Engine. Jika Anda belum memilikinya, ikuti petunjuk ini untuk mendapatkannya. Salin alamat email akun layanan Anda ke dalam sel berikut. (Akun layanan harus sudah terdaftar untuk menggunakan Earth Engine). Di sel berikut, command line gsutil
digunakan untuk membuat file kunci bagi akun layanan. File kunci akan dibuat di VM 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}
Mulai AuthorizedSession
dan uji kredensial Anda
Uji kunci pribadi dengan menggunakannya untuk mendapatkan kredensial. Gunakan kredensial untuk membuat sesi yang diotorisasi untuk membuat permintaan HTTP. Buat permintaan GET
melalui sesi untuk memeriksa apakah kredensial berfungsi.
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))
Menserialisasi komputasi
Sebelum Anda dapat mengirim permintaan untuk menghitung sesuatu, penghitungan harus dimasukkan ke dalam format grafik ekspresi Earth Engine. Berikut ini menunjukkan cara mendapatkan grafik ekspresi.
Melakukan autentikasi ke Earth Engine
Dapatkan kredensial yang memiliki cakupan Earth Engine dari akun layanan. Gunakan kredensial tersebut untuk melakukan inisialisasi 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)
Menentukan komputasi
Buat prototipe komputasi sederhana dengan API klien. Perhatikan bahwa hasil komputasi adalah FeatureCollection
.
Untuk memeriksa apakah komputasi dapat berhasil tanpa error, dapatkan nilai dari Feature
pertama (NDVI rata-rata dalam poligon).
# 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())
Menserialisasi grafik ekspresi
Tindakan ini akan membuat objek yang merepresentasikan grafik ekspresi Earth Engine (khususnya, Expression
). Secara umum, Anda harus membuatnya dengan salah satu API klien.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
Kirim permintaan
Buat permintaan POST
ke endpoint computeFeatures
. Perhatikan bahwa permintaan berisi Expression
, yang merupakan komputasi yang diserialisasi.
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))
Respons berisi FeatureCollection
yang dihasilkan sebagai GeoJSON, yang dapat digunakan oleh aplikasi atau proses lain.