עכשיו, אחרי שלמדתם איך לטעון ולהציג תמונה, הגיע הזמן להחיל עליה חישוב.
לדוגמה, אפשר לחשב את השיפוע של השטח על ידי העברת תמונת הגובה של SRTM לשיטה slope
של חבילת ee.Terrain
.
עורך הקוד (JavaScript)
// Load the SRTM image. var srtm = ee.Image('CGIAR/SRTM90_V4'); // Apply an algorithm to an image. var slope = ee.Terrain.slope(srtm); // Display the result. Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon. Map.addLayer(slope, {min: 0, max :60}, 'slope');
שימו לב שבקוד ee.Terrain.slope(srtm)
, התמונה srtm
מסופקת כארגומנט לאלגוריתם השיפוע. התוצאה אמורה להיראות בערך כך:
איור 3.

מתמטיקה עם תמונות
יש גם שיטות במחלקה ee.Image
שאפשר להפעיל באובייקט תמונה. לדוגמה, נניח שאתם רוצים לבצע חישובים באמצעות רצועות תמונה (לפעמים נקרא חישוב רצועות או אלגברה של מפות). לדוגמה, יכול להיות שתרצו לבצע פעולות טריגונומטריות על תמונה של פן מסוים. כדי לעשות את זה, קודם ממירים תמונה של היבט לרדיאנים, ואז קוראים ל-sin()
. שימוש חוזר בתמונה srtm
שלנו,
עורך הקוד (JavaScript)
// Get the aspect (in degrees). var aspect = ee.Terrain.aspect(srtm); // Convert to radians, compute the sin of the aspect. var sinImage = aspect.divide(180).multiply(Math.PI).sin(); // Display the result. Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');
התוצאה אמורה להיראות כמו באיור 4. כדאי לבדוק את הקוד aspect.divide(180).multiply(Math.PI).sin()
. כשמשלבים כמה שיטות
כמו בדוגמה הזו, הקוד אומר: 'מחלקים את הזווית ב-180, מכפילים את התוצאה ב-π, ולבסוף מחשבים את סינוס הזווית'. אפשר לבצע פעולות מתמטיות מורכבות על תמונות על ידי שילוב של שיטות באופן הזה. רשימה מלאה של פעולות מתמטיות, add()
, subtract()
, multiply()
וכו' מופיעה בImage
מסמכי העזרה.

נתונים סטטיסטיים לגבי תמונות
סוג נוסף של פעולות שימושיות על תמונות כולל חישוב נתונים סטטיסטיים של פיקסלים באזורים של תמונה או שכבות-על של רסטר-וקטור. כדי לחשב נתונים סטטיסטיים ב-Earth Engine, משתמשים ב-reducer כפי שמיוצג על ידי מחלקות בחבילה ee.Reducer
. לדוגמה, נניח שאתם רוצים לדעת מה הגובה הממוצע באזור מסוים. אפשר להגדיר אזור על ידי ציור פוליגון באמצעות כלי הציור של גיאומטריה.
כדי לצייר אזור באופן אינטראקטיבי, בוחרים בכלי לציור פוליגונים (), ואז מציירים פוליגון מעל האזור הרצוי ולוחצים על יציאה כשמסיימים. שימו לב שאובייקט
ee.Geometry
שנוצר יקבל אוטומטית את השם geometry
ויתווסף כייבוא בחלק העליון של הסקריפט. כדי לשנות את השם של המשתנה ל-polygon, לוחצים על שם המשתנה בקטע imports ומקלידים את השם החדש.
לאחר מכן, מקבלים את ערך הפיקסל הממוצע במצולע באמצעות הקוד הבא:
עורך הקוד (JavaScript)
// Compute the mean elevation in the polygon. var meanDict = srtm.reduceRegion({ reducer: ee.Reducer.mean(), geometry: polygon, scale: 90 }); // Get the mean from the dictionary and print it. var mean = meanDict.get('elevation'); print('Mean elevation', mean);
יש כמה דברים שחשוב לזכור. קודם כל, שימו לב ש-reduceRegion()
היא שיטה שזמינה לאובייקטים מסוג Image
(מידע נוסף על צמצום אזורים). שנית, הארגומנטים של השיטה מסופקים באובייקט JavaScript שמועבר כארגומנט יחיד. (במילים אחרות, המפתחות של האובייקט הם השמות של פרמטרים של השיטה. הערכים הם הארגומנטים של השיטה). שלישית, הפרמטר reducer
מציין את סוג הנתון הסטטיסטי לחישוב, והפרמטר geometry
מציין את האזור שבו יתבצע החישוב של הנתון הסטטיסטי. הפרמטר scale
הוא גודל הפיקסל במטרים שבו רוצים להשתמש. כדי למנוע דו-משמעות, תמיד צריך לציין את קנה המידה כשמבצעים צמצום, כי יכול להיות שמערכת Earth Engine לא תוכל לקבוע באופן אוטומטי את קנה המידה המתאים מהנתונים.
(מידע נוסף על קנה מידה ב-Earth Engine)
לבסוף, ערך ההחזרה של reduceRegion()
הוא מילון שבו המפתחות הם שמות של פסים והערכים הם נתונים סטטיסטיים של הפיקסלים של הפסים. השיטה get()
במילון מחזירה את הערך שמתאים למפתח שצוין כארגומנט. במקרה הזה, לתמונה srtm
יש פס אחד, elevation, ולכן קוד הדוגמה מקבל את הנתון הסטטיסטי הזה מהמילון ומדפיס אותו.
כשמריצים את הקוד הזה, אם מקבלים שגיאה שנראית כך:
אל דאגה! יש כמה דברים שאפשר לעשות כדי לפתור את השגיאה. בשיטה reduceRegion()
יש בדיקה שנועדה לוודא שאתם שוקלים אם אתם באמת רוצים לכלול כל כך הרבה פיקסלים בחישוב. המטרה היא למנוע מצב שבו תנסו בטעות לעשות משהו לא הגיוני, כמו חישוב הממוצע של כל פיקסל בגודל מטר בעולם (אל תעשו את זה). כדי לפתור את השגיאה, צריך להגדיר את הפרמטר bestEffort
לערך true
על ידי הוספת bestEffort: true
למילון הפרמטרים, או להגדיר את הפרמטר maxPixels
לערך גבוה יותר מברירת המחדל של 10 מיליון פיקסלים, או לבצע את שתי הפעולות. אם הערך של bestEffort
הוא True, Earth Engine יחשב מחדש את קנה המידה באופן אוטומטי כך שלא יעלה על maxPixels
.
הערה: קנה מידה ב-Earth Engine
בדוגמה הקודמת, הערך של scale
מוגדר בערך לרזולוציה המקורית של תמונת ה-SRTM. כדי לגלות את הרזולוציה המקורית של תמונה, אפשר:
עורך הקוד (JavaScript)
var scale = srtm.projection().nominalScale(); print('SRTM scale in meters', scale);
אם מציינים קנה מידה קטן מהרזולוציה המקורית, Earth Engine ידגום מחדש את תמונת הקלט באמצעות שיטת השכן הקרוב, ואז יכלול את כל הפיקסלים הקטנים יותר בחישוב. אם מגדירים את קנה המידה לגדול יותר, Earth Engine ישתמש בפיקסלים של קלט מגרסה מצטברת של הקלט (כלומר, יקבל פיקסלים מרמה גבוהה יותר של פירמידת התמונה). במסמך הזה יש מידע נוסף על האופן שבו Earth Engine מטפל בקנה מידה.
עד עכשיו עבדתם עם תמונה אחת עם פס אחד. בדף הבא נסביר על תמונות מרובות פסים ועל אוספי תמונות.