אפשר להשתמש ב-image.cumulativeCost()
כדי לחשב מפת עלויות שבה כל פיקסל מכיל את העלות הכוללת של נתיב העלות הנמוך ביותר למיקום המקור הקרוב ביותר. התהליך הזה שימושי במגוון הקשרים, כמו ניתוח של אזורי מחיה (Adriaensen et al. 2003), הגדרת תחומי מים (Melles et al. 2011) ופיצול תמונות (Falcao et al. 2004). קריאה לפונקציית העלות המצטברת בתמונה שבה כל פיקסל מייצג את העלות למטר לצורך מעבר. הנתיב מחושב דרך כל אחד משמונת השכנים של הפיקסל. הקלט הנדרש כולל קובץ אימג' מסוג source
, שבו כל פיקסל שאינו אפס מייצג מקור פוטנציאלי (או תחילת נתיב), ו-maxDistance
(במטרים) שבו מחשבים את הנתיבים. האלגוריתם מחשב את העלות המצטברת של כל הנתיבים באורך של פחות מ-maxPixels = maxDistance
/scale, כאשר scale היא רזולוציית הפיקסלים או הסולם של הניתוח ב-Earth Engine.
הדוגמה הבאה ממחישה חישוב של נתיבי העלות הנמוכה ביותר בתמונה של כיסוי פני השטח:
// A rectangle representing Bangui, Central African Republic. var geometry = ee.Geometry.Rectangle([18.5229, 4.3491, 18.5833, 4.4066]); // Create a source image where the geometry is 1, everything else is 0. var sources = ee.Image().toByte().paint(geometry, 1); // Mask the sources image with itself. sources = sources.selfMask(); // The cost data is generated from classes in ESA/GLOBCOVER. var cover = ee.Image('ESA/GLOBCOVER_L4_200901_200912_V2_3').select(0); // Classes 60, 80, 110, 140 have cost 1. // Classes 40, 90, 120, 130, 170 have cost 2. // Classes 50, 70, 150, 160 have cost 3. var beforeRemap = [60, 80, 110, 140, 40, 90, 120, 130, 170, 50, 70, 150, 160]; var afterRemap = [1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3]; var cost = cover.remap(beforeRemap, afterRemap, 0); // Compute the cumulative cost to traverse the land cover. var cumulativeCost = cost.cumulativeCost({ source: sources, maxDistance: 80 * 1000 // 80 kilometers }); // Display the results Map.setCenter(18.71, 4.2, 9); Map.addLayer(cover, {}, 'Globcover'); Map.addLayer(cumulativeCost, {min: 0, max: 5e4}, 'accumulated cost'); Map.addLayer(geometry, {color: 'FF0000'}, 'source geometry');
התוצאה אמורה להיראות בערך כמו באיור 1, שבו כל פיקסל בפלט מייצג את העלות המצטברת למקור הקרוב ביותר. לתשומת ליבכם: יכול להיות שיהיו הפסקות במקומות שבהם אורך הנתיב בעל העלות הנמוכה ביותר למקור הקרוב ביותר חורג מ-maxPixels.
