המחשה של תמונות ופסים של תמונות

עכשיו, כשאתם מוכנים להתחיל לכתוב קוד JavaScript ב-Earth Engine, העתיקו את הקוד הבא אל Code Editor:

Code Editor (JavaScript)

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

לוחצים על הלחצן Run בחלק העליון של עורך הקוד ורואים שמופיעה תמונה אפורה מאוד במפה. אל דאגה, בקרוב תוכלו לשפר את המראה שלו. אם התחביר של חלק כלשהו בדוגמה הזו לא מוכר לכם, כדאי לעיין במדריך JavaScript ל-Earth Engine.

Image Constructor

הדבר החדש הראשון בדוגמה הזו הוא ה-constructor של התמונה ee.Image(). הארגומנט שסופק ל-constructor הוא מזהה המחרוזת של תמונה בקטלוג הנתונים של Earth Engine. (כדי לראות רשימה מלאה של ארגומנטים אפשריים ל-image constructor, אפשר לעיין בכרטיסייה Docs בצד שמאל של Code Editor. בכרטיסייה Docs מוצג המידע העדכני ביותר על מה שאפשר לעשות ב-Earth Engine.

כדי למצוא מזהה של תמונה, מחפשים בקטלוג הנתונים של Earth Engine באמצעות כלי החיפוש שבחלק העליון של Code Editor. לדוגמה, מקלידים "elevation" בשדה החיפוש ורואים שמוחזרת רשימה של רסטרים. לוחצים על הרשומה SRTM Digital Elevation Data Version 4 כדי לראות מידע נוסף על מערך הנתונים הזה. בצד שמאל של תיאור מערך הנתונים יש שדה Image ID. שימו לב שמזהה התמונה בדוגמה מועתק ממזהה התמונה שמוצג בתיאור של מערך הנתונים.

במקום להעתיק ולהדביק את מזהי התמונות, אפשר להשתמש בלחצן Import בתיאור של קבוצת הנתונים או בקישור import שבצד שמאל של תוצאות החיפוש. אם לוחצים על הקישור או על הלחצן לייבוא, נוצר משתנה באופן אוטומטי בקטע מיוחד שנקרא Imports בחלק העליון של הסקריפט. כדי לשנות את שם המשתנה, לוחצים על השם שלו בקטע הייבוא.

הגדרת המפה

החלק החדש השני בדוגמה הזו הוא הקריאה ל-Map.setCenter(). השיטה הזו באובייקט Map, שמייצג את תצוגת המפה בעורך הקוד, ממקמת את המפה במרכז בקו האורך ובקו הרוחב הנתונים (במעלות עשרוניות) וברמת הזום שבה 1 הוא זום אאוט, כך שהמפה מציגה את כל פני כדור הארץ. מספרים גדולים יותר מגדילים את התצוגה. כדי לגלות את כל השיטות באובייקט Map, עיינו בקטע Map בכרטיסייה Docs בצד שמאל של עורך הקוד.

הוספת שכבה למפה

בשורה האחרונה בדוגמה כתוב: משתמשים ב-method‏ addLayer() של האובייקט Map כדי להוסיף תמונה לתצוגת המפה בכלי לעריכת קוד.

מעולה! יצרתם את הסקריפט הראשון שלכם ב-Earth Engine. בקטע הבא נסביר איך לשפר את התמונה הזו.

סטייה מהנושא: תמונות ב-Earth Engine

תמונות ב-Earth Engine (פרטים נוספים זמינים בדף הזה) מורכבות מרצועה אחת או יותר. לכל פס בתמונה יש שם, ערכי פיקסלים, רזולוציית פיקסלים והיטל משלו. כפי שתגלו בקרוב, לתמונת SRTM יש פס אחד: 'elevation'.

כשמוסיפים תמונה למפה באמצעות Map.addLayer(), Earth Engine צריך לקבוע איך למפות את הערכים ברצועות התמונה לצבעים בתצוגה. אם מוסיפים למפה תמונה עם פס יחיד, כברירת מחדל, Earth Engine מציג את הפס בגווני אפור, כאשר הערך המינימלי מוקצה לשחור והערך המקסימלי מוקצה ללבן. אם לא תציינו מה הערך המינימלי והמקסימלי, Earth Engine ישתמש בערכי ברירת המחדל. לדוגמה, התמונה שהוספתם למפה מוצגת כתמונה בגווני אפור שנמתחת לטווח הנתונים המלא, או כמספר שלם של 16 ביט עם סימן [-32768, 32767]. (כברירת מחדל, הערוצים של float נמתחים ל-[0, 1] והערוצים של byte נמתחים ל-[0, 255]).

כדי לגלות את סוג הנתונים של התמונה, אפשר להדפיס אותה ולבדוק את אובייקט התמונה בכרטיסייה Console. לדוגמה, מדביקים את הקוד הבא אחרי הקוד הקודם:

Code Editor (JavaScript)

print('SRTM image', image);

כשלוחצים על Run, מופיע אובייקט במסוף. כדי לבדוק את מאפייני האובייקט, מרחיבים אותו בלחיצה על החץ () שמימין לאובייקט או למאפיין. מרחיבים את אובייקט התמונה, את המאפיין bands, את הרצועה elevation באינדקס 0 ואת המאפיין data_type של הרצועה elevation כדי לגלות שסוג הנתונים הוא signed int16.

התאמה אישית של התצוגה החזותית של השכבה

כדי לשנות את אופן המתיחה של הנתונים, אפשר להוסיף עוד פרמטר לקריאה ל-Map.addLayer(). באופן ספציפי, הפרמטר השני, visParams, מאפשר לציין את הערכים המינימליים והמקסימליים שיוצגו. כדי לגלות באילו ערכים להשתמש, מפעילים את הכרטיסייה Inspector ולוחצים על המפה כדי לקבל מושג לגבי טווח ערכי הפיקסלים. אפשר גם להשתמש במנהל השכבות כדי למתוח את הנתונים באופן אינטראקטיבי, ואז לבחון את המינימום והמקסימום שתואמים למתיחות של אחוזונים או של סטיית תקן. נניח שבאמצעות ניסויים כאלה, קבעתם שצריך למתוח את הנתונים לטווח [0, 3000]. כדי להציג את התמונה באמצעות הטווח הזה, משתמשים ב:

Code Editor (JavaScript)

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

שימו לב שהפרמטר visParams הוא אובייקט, עם מאפיינים שמציינים את min ו-max. (מידע נוסף על אובייקטים ב-JavaScript זמין במדריך ל-JavaScript או במאמר העזר החיצוני הזה). שימו לב שהפרמטר השלישי של Map.addLayer() הוא שם השכבה שמוצגת במנהל השכבות. התוצאה אמורה להיראות כמו באיור 1. מעבירים את העכבר מעל התיבה Layers בצד ימין כדי לראות את ההשפעה של שינוי השם של השכבה הזו.

Tutorial_api_01_elevation.png
איור 1. תמונת גובה בגווני אפור, מתוחה ל-[0, 3000].

כדי להציג שכבת נתונים בודדת באמצעות Color Palette, מוסיפים מאפיין palette לאובייקט visParams:

Code Editor (JavaScript)

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

התוצאה אמורה להיראות כמו באיור 2.

Tutorial_api_02_palette.png
איור 2. תמונת גובה כסולם צבעים מכחול לאדום, שנמתח לטווח [0, 3000].

סטייה מהנושא: פלטות צבעים

פלטות מאפשרות להגדיר את ערכת הצבעים לתמונות עם פס בודד. פלטה היא רשימה מופרדת בפסיקים של מחרוזות צבעים, שמוכנסות באופן לינארי בין הערכים המקסימליים והמינימליים בפרמטרים של התצוגה החזותית (או ברירות המחדל בהתאם לסוג הרצועה, כפי שמתואר למעלה). לדוגמה, פיקסלים שקטנים מהערך המינימלי או שווים לו יוצגו בצבע הראשון ברשימה, ופיקסלים שגדולים מהערך המקסימלי או שווים לו יוצגו בצבע האחרון ברשימה. צבעי הביניים נמתחים באופן לינארי לערכי פיקסלים של ביניים.

הצבעים מוגדרים באמצעות סכמת ערכי הצבעים של CSS, שהיא תקן אינטרנט (למידע נוסף, עיינו בחומר העזר החיצוני הזה). אפשר לציין צבעים לפי שם או כמחרוזות הקסדצימליות שמציינות את השילוב של אדום, ירוק וכחול. הערך הנמוך ביותר בכל אחד משלושת המיקומים הוא 00 (שמייצג את המספר העשרוני 0), והערך הגבוה ביותר הוא FF (שמייצג את המספר העשרוני 255). המחרוזת "000000" מייצגת את הצבע השחור, "FFFFFF" מייצגת את הצבע הלבן, "FF0000" מייצגת את הצבע האדום, "00FF00" מייצגת את הצבע הירוק ו-"0000FF" מייצגת את הצבע הכחול. פרטים נוספים זמינים בקטע בנושא פלטות צבעים. אפשר לבצע מתיחות אחרות באמצעות Styled Layer Descriptors, כפי שמתואר בקטע הזה.

בהמשך המדריך נסביר איך להציג תמונות עם כמה ערוצים. אבל קודם, עברו לדף הבא כדי ללמוד על ביצוע חישובים עם תמונות.