הערה: ממשק REST API כולל תכונות חדשות ומתקדמות, שיכול להיות שלא יתאימו לכל המשתמשים. אם אתם חדשים ב-Earth Engine, כדאי להתחיל עם מדריך JavaScript.
במדריך למתחילים בנושא Earth Engine REST API מוסבר איך לגשת לבלוקים של פיקסלים מנכס של 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 של מחברת.
# 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)
הגדרת חישוב
יצירת אב טיפוס של חישוב פשוט באמצעות ה-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, שאפשר להשתמש בו באפליקציות או בתהליכים אחרים.