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. Misalkan Anda ingin menerapkan komputasi ke piksel sebelum mendapatkan hasilnya. Panduan ini menunjukkan cara membuat prototipe komputasi dengan salah satu library klien, melakukan serialisasi grafik komputasi, dan menggunakan REST API untuk mendapatkan hasil komputasi. Membuat permintaan komputasi melalui REST API sesuai dengan permintaan POST
ke salah satu endpoint komputasi, misalnya computePixels
, computeFeatures
, atau value.compute
generik. Secara khusus, contoh ini menunjukkan cara mendapatkan komposit median gambar Sentinel-2 di wilayah kecil.
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 Image
.
coords = [
-121.58626826832939,
38.059141484827485,
]
region = ee.Geometry.Point(coords)
collection = ee.ImageCollection('COPERNICUS/S2')
collection = collection.filterBounds(region)
collection = collection.filterDate('2020-04-01', '2020-09-01')
image = collection.median()
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.
serialized = ee.serializer.encode(image)
Buat proyeksi yang diinginkan (WGS84) pada skala yang diinginkan (10 meter untuk Sentinel-2). Tindakan ini hanya untuk menemukan skala yang diinginkan dalam derajat, satuan proyeksi. Skala ini akan digunakan untuk menentukan transformasi affine dalam permintaan.
# Make a projection to discover the scale in degrees.
proj = ee.Projection('EPSG:4326').atScale(10).getInfo()
# Get scales out of the transform.
scale_x = proj['transform'][0]
scale_y = -proj['transform'][4]
Kirim permintaan
Buat permintaan POST
ke endpoint computePixels
. Perhatikan bahwa permintaan berisi Expression
, yang merupakan komputasi yang diserialisasi. Objek ini juga berisi PixelGrid
. PixelGrid
berisi dimensions
untuk output yang diinginkan dan AffineTransform
dalam satuan sistem koordinat yang diminta. Di sini, sistem koordinatnya adalah geografis, sehingga transformasi ditentukan dengan skala dalam derajat dan koordinat geografis sudut kiri atas patch gambar yang diminta.
import json
url = 'https://earthengine.googleapis.com/v1beta/projects/{}/image:computePixels'
url = url.format(PROJECT)
response = session.post(
url=url,
data=json.dumps({
'expression': serialized,
'fileFormat': 'PNG',
'bandIds': ['B4','B3','B2'],
'grid': {
'dimensions': {
'width': 640,
'height': 640
},
'affineTransform': {
'scaleX': scale_x,
'shearX': 0,
'translateX': coords[0],
'shearY': 0,
'scaleY': scale_y,
'translateY': coords[1]
},
'crsCode': 'EPSG:4326',
},
'visualizationOptions': {'ranges': [{'min': 0, 'max': 3000}]},
})
)
image_content = response.content
Jika menjalankan ini di notebook, Anda dapat menampilkan hasilnya menggunakan widget tampilan gambar IPython
.
# Import the Image function from the IPython.display module.
from IPython.display import Image
Image(image_content)