หมายเหตุ: REST API มีฟีเจอร์ใหม่และขั้นสูงที่อาจไม่เหมาะกับผู้ใช้บางราย หากคุณเพิ่งเริ่มใช้ Earth Engine โปรดเริ่มต้นด้วยคู่มือ JavaScript
การเริ่มต้นใช้งาน REST API ของ Earth Engine อย่างรวดเร็วแสดงวิธีเข้าถึงบล็อกของพิกเซลจากชิ้นงาน Earth Engine ตัวอย่างการคำนวณพิกเซลแสดงวิธีใช้การคำนวณกับพิกเซลก่อนที่จะได้รับผลลัพธ์ ตัวอย่างนี้แสดงการหาค่าเฉลี่ยของพิกเซลในแต่ละรูปภาพของ ImageCollection
ในแต่ละฟีเจอร์ของ FeatureCollection
โดยเฉพาะอย่างยิ่ง นี่คือคำขอ POST
ไปยังปลายทาง computeFeatures
ก่อนเริ่มต้น
ทำตามวิธีการเหล่านี้เพื่อ
- สมัครใช้ Earth Engine
- สร้างโปรเจ็กต์ Google Cloud
- เปิดใช้ Earth Engine API ในโปรเจ็กต์
- สร้างบัญชีบริการ
- ให้สิทธิ์ระดับโปรเจ็กต์แก่บัญชีบริการเพื่อทำการคำนวณ 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
บรรทัดคำสั่งเพื่อสร้างไฟล์คีย์สำหรับบัญชีบริการ ระบบจะสร้างไฟล์คีย์ใน 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}
เริ่ม 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)
กำหนดการคำนวณ
สร้างต้นแบบการคำนวณอย่างง่ายด้วย Client 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 ซึ่งแอปหรือกระบวนการอื่นๆ สามารถใช้ได้