במאמר לקוח לעומת שרת מוסבר איך אובייקטים שמצוינים בסקריפט יכולים להיות בצד הלקוח או בצד השרת. הסקריפט המלא מכיל לא רק את האובייקטים שבהם רוצים להשתמש, אלא גם קבוצת הוראות שמורות ל-Earth Engine מה לעשות איתם. במסמך הזה מוסבר איך ההוראות האלה נשלחות ל-Google לעיבוד ואיך התוצאות נשלחות בחזרה ללקוח להצגה.
כשכותבים סקריפט ב-Earth Engine (ב-JavaScript או ב-Python), הקוד לא פועל ישירות בשרתי Earth Engine ב-Google. במקום זאת, ספריית הלקוח מקודדת את הסקריפט לקבוצה של אובייקטים מסוג JSON, שולחת את האובייקטים ל-Google ומחכה לתגובה. כל אובייקט מייצג קבוצה של פעולות שנדרשות כדי לקבל פלט מסוים, למשל תמונה להצגה בלקוח. הקוד הבא הוא דוגמה לכך:
Code Editor (JavaScript)
var image = ee.Image('CGIAR/SRTM90_V4'); var operation = image.add(10); print(operation.toString()); print(operation);
import ee import geemap.core as geemap
Colab (Python)
image = ee.Image('CGIAR/SRTM90_V4') operation = image.add(10) print(operation) print(operation.getInfo())
משפט ההדפסה הראשון יפיק את מבנה ה-JSON שספריית הלקוח משתמשת בו כדי לתאר את התמונה הזו לשרת ב-Google:
ee.Image({ "type": "Invocation", "arguments": { "image1": { "type": "Invocation", "arguments": { "id": "CGIAR/SRTM90_V4" }, "functionName": "Image.load" }, "image2": { "type": "Invocation", "arguments": { "value": 10 }, "functionName": "Image.constant" } }, "functionName": "Image.add" })
משפט ההדפסה השני ישלח את הבקשה ל-Google ויציג את התגובה של POST מהשרתים של Google. כדי לראות את התגובה במלוא הדרה בפורמט JSON, לוחצים על הקישור JSON
בצד שמאל של המסוף, לצד האובייקט המודפס:
{ "type": "Image", "bands": [ { "id": "elevation", "data_type": { "type": "PixelType", "precision": "int", "min": -32758, "max": 32777 }, "crs": "EPSG:4326", "crs_transform": [ 0.0008333333535119891, 0, -180, 0, -0.0008333333535119891, 60 ] } ] }
שום דבר לא נשלח אל Google לעיבוד עד שמתקבלת בקשה לכך. בדוגמה הזו, הדפסת התוצאה של קריאה ל-getInfo()
באובייקט שרת מפעילה בקשה. לא מתבצע עיבוד בשרת עד שמבקשים את התוצאה הזו באופן מפורש. הערה: print()
בעורך הקוד של JavaScript היא פונקציה מיוחדת בצד הלקוח שמקיפה קריאה אסינכררונית של getInfo()
. ב-Python אנחנו קוראים לה ישירות.
דוגמה נוספת לבקשת משהו היא הצגתו בכלי לעריכת קוד או ברכיב המפה של geemap. כשהבקשה הזו נשלחת ל-Google, רק המשבצות שנחוצות כדי להציג את התוצאה בכלי לעריכת קוד או ברכיב המפה של geemap מוחזרות. באופן ספציפי, המיקום של המפה ורמת הזום קובעים אילו נתונים יעברו עיבוד ויהפכו לתמונות שאפשר להציג במפה. אם תעבירו את התצוגה או תשנו את מרחק התצוגה, חשוב לזכור ששאר המשבצות מחושבות באופן עצל. המערכת הזו על פי דרישה מאפשרת ביצוע במקביל עיבוד יעיל, אבל גם מובילה לכך שהתמונה שמוצגת במפה נוצרת ממידע שונה בהתאם לרמת הזום ולמיקום של גבולות המפה. מידע נוסף על האופן שבו המערכת קובעת את הקלט לחישוב מהבקשה זמין במסמך Scale.