אוספים של תמונות

אוסף תמונות מתייחס לקבוצה של תמונות ב-Earth Engine. לדוגמה, האוסף של כל התמונות של Landsat 8 הוא ee.ImageCollection. בדומה לתמונת ה-SRTM שעבדת איתה, גם לאוספי תמונות יש מזהה. כמו בתמונות בודדות, אפשר לגלות את המזהה של אוסף תמונות על ידי חיפוש בקטלוג הנתונים של Earth Engine מתוך עורך הקוד, ובדיקה של דף הפרטים של מערך הנתונים. לדוגמה, מחפשים את המחרוזת landsat 8 toa ולוחצים על התוצאה הראשונה, שאמורה להתאים למערך הנתונים USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance. מייבאים את מערך הנתונים באמצעות הלחצן ייבוא ומשנים את השם שלו ל-l8, או מעתיקים את המזהה אל בנאי אוסף התמונות:

עורך הקוד (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

סינון אוספי תמונות

חשוב לציין שהאוסף הזה מייצג כל סצנה של Landsat 8 שנאספה בכל רחבי כדור הארץ. לעתים כדאי לחלץ תמונה אחת או קבוצת משנה של תמונות כדי לבדוק אלגוריתמים. כדי להגביל את האוסף לפי זמן או מרחב, צריך לסנן אותו. לדוגמה, כדי לסנן את האוסף לתמונות שמכסות מיקום מסוים, קודם מגדירים את האזור שמעניין אתכם באמצעות נקודה (או קו או פוליגון) בעזרת כלי השרטוט של הצורות הגיאומטריות. מזיזים את המפה לאזור שמעניין אתכם, מעבירים את העכבר מעל ייבוא נתונים גיאומטריים (אם כבר הגדרתם נתונים גיאומטריים) ולוחצים על +שכבה חדשה (אם לא הגדרתם ייבוא, עוברים לשלב הבא). בוחרים בכלי לציור נקודות () ומציירים נקודה באזור העניין. נותנים שם לייבוא point. עכשיו מסננים את אוסף l8 כדי לקבל רק את התמונות שחופפות לנקודה, ואז מוסיפים מסנן שני כדי להגביל את האוסף רק לתמונות שצולמו בשנת 2015:

עורך הקוד (JavaScript)

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

בדוגמה הזו, filterBounds() ו-filterDate() הן שיטות קיצור לשיטה הכללית יותר filter() באוספי תמונות, שמקבלת את ee.Filter() כארגומנט. מידע נוסף על השיטות האלה זמין בכרטיסייה Docs של עורך הקוד. הארגומנט של filterBounds() הוא הנקודה שדיגיטליתם, והארגומנטים של filterDate() הם שני תאריכים, שמוצגים כמחרוזות.

הערה: אפשר print() את האוספים המסוננים. אי אפשר להדפיס יותר מ-5,000 פריטים בבת אחת, ולכן אי אפשר, למשל, להדפיס את כל האוסף l8. אחרי שמריצים את השיטה print(), אפשר לבדוק את האוספים המודפסים במסוף. שימו לב: אם מרחיבים את ImageCollection באמצעות החץ (), ואז מרחיבים את רשימת features, מוצגת רשימה של תמונות. אפשר להרחיב ולבדוק כל אחת מהתמונות. זוהי אחת מהדרכים לגלות את המזהה של תמונה מסוימת. דרך נוספת, יותר מתוכנתת, לקבל תמונות בודדות לצורך ניתוח היא למיין את האוסף כדי לקבל את התמונה הכי עדכנית, הכי ישנה או האופטימלית ביחס למאפיין מסוים של מטא-נתונים. לדוגמה, אם בודקים את אובייקטי התמונה באוספי התמונות המודפסים, אפשר לראות מאפיין מטא-נתונים שנקרא CLOUD_COVER. אפשר להשתמש במאפיין הזה כדי לקבל את התמונה עם הכי פחות עננים משנת 2015 באזור העניין:

עורך הקוד (JavaScript)

// This will sort from least to most cloudy.
var sorted = temporalFiltered.sort('CLOUD_COVER');

// Get the first (least cloudy) image.
var scene = sorted.first();

עכשיו אפשר להציג את התמונה.

סטייה מהנושא: הצגת תמונות RGB

כשמוסיפים למפה תמונה עם כמה פסים, מערכת Earth Engine בוחרת את שלושת הפסים הראשונים של התמונה ומציגה אותם כפסים אדומים, ירוקים וכחולים כברירת מחדל, ומותחת אותם בהתאם לסוג הנתונים, כמו שמתואר למעלה. בדרך כלל זה לא מספיק. לדוגמה, אם מוסיפים את תמונת Landsat (scene בדוגמה הקודמת) למפה, התוצאה לא מספקת:

עורך הקוד (JavaScript)

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

שימו לב: קודם כול, המפה ממוקמת במרכז התמונה בקנה מידה של 9. לאחר מכן התמונה מוצגת עם אובייקט ריק ({}) עבור הפרמטר visParams (פרטים נוספים זמינים במסמכי Map.addLayer()). כתוצאה מכך, התמונה מוצגת עם ההדמיה שמוגדרת כברירת מחדל: שלושת הפסים הראשונים ממופים ל-R,‏ G ו-B בהתאמה, והם נמתחים לטווח [0, 1] כי הפסים הם מסוג הנתונים float. המשמעות היא שפס הארוסול החופי ('B1') מוצג באדום, הפס הכחול ('B2') מוצג בירוק והפס הירוק ('B3') מוצג בכחול. כדי לעבד את התמונה כרכיב בצבע אמיתי, צריך להגדיר ב-Earth Engine שימוש בפסי Landsat 8‏ B4,‏ B3 ו-B2 עבור R,‏ G ו-B בהתאמה. מציינים באילו תדרים להשתמש באמצעות המאפיין bands של האובייקט visParams. במאמר הזה אפשר לקרוא מידע נוסף על פסי Landsat.

צריך גם לספק ערכים של min ושל max שמתאימים להצגת החזרת אור ממטרות טיפוסיות על פני כדור הארץ. אפשר להשתמש ברשימות כדי לציין ערכים שונים לכל פס, אבל במקרה הזה מספיק לציין את 0.3 כ-max ולהשתמש בערך ברירת המחדל אפס לפרמטר min. שילוב הפרמטרים של התצוגה החזותית באובייקט אחד ו:

עורך הקוד (JavaScript)

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

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

Tutorial_api_05_true_color.png
איור 5. תמונת השתקפות TOA של Landsat 8 כקומפוזיציה בצבע אמיתי, עם מתיחה לטווח [0, 0.3].

נסו להציג חזותית רצועות שונות. שילוב מועדף נוסף הוא B5,‏ B4 ו-B3, שנקרא שילוב צבעים מדומה. כאן אפשר למצוא תיאורים של עוד תמונות מורכבות מעניינות בצבעים מדומים.

מכיוון ש-Earth Engine נועד לבצע ניתוחים בקנה מידה גדול, אתם לא מוגבלים לעבודה עם סצנה אחת בלבד. עכשיו הגיע הזמן להציג אוסף שלם כקומפוזיציה של RGB!

הצגת אוספי תמונות

הוספת אוסף תמונות למפה דומה להוספת תמונה למפה. לדוגמה, אם משתמשים בתמונות משנת 2016 באוסף l8 ובאובייקט visParams שהוגדר קודם,

עורך הקוד (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31');
Map.addLayer(landsat2016, visParams, 'l8 collection');

שימו לב: עכשיו אפשר להקטין את התצוגה ולראות פסיפס רציף שבו נאספים צילומי Landsat (כלומר, מעל היבשה). חשוב גם לדעת שאם משתמשים בכרטיסייה Inspector ולוחצים על התמונה, מוצגת רשימה של ערכי פיקסלים (או תרשים) בקטע Pixels ורשימה של אובייקטים של תמונות בקטע Objects של הכלי Inspector.

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