การแมปต้นทุนแบบสะสม

ใช้ image.cumulativeCost() เพื่อคํานวณแผนที่ต้นทุนที่ทุกพิกเซลมีต้นทุนรวมของเส้นทางที่มีต้นทุนต่ำสุดไปยังสถานที่ตั้งแหล่งที่มาที่ใกล้ที่สุด กระบวนการนี้มีประโยชน์ในบริบทที่หลากหลาย เช่น การวิเคราะห์แหล่งที่อยู่อาศัย(Adriaensen et al. 2003) การกําหนดขอบเขตลุ่มน้ำ(Melles et al. 2011) และการแบ่งกลุ่มรูปภาพ(Falcao et al. 2004) เรียกใช้ฟังก์ชันต้นทุนสะสมในรูปภาพซึ่งแต่ละพิกเซลแสดงถึงต้นทุนต่อเมตรในการไปยังจุดต่างๆ ระบบจะคํานวณเส้นทางผ่านพิกเซลที่อยู่ใกล้เคียง 8 พิกเซล อินพุตที่จำเป็น ได้แก่ รูปภาพ source ซึ่งแต่ละพิกเซลที่ไม่ใช่ 0 จะแสดงแหล่งที่มาที่เป็นไปได้ (หรือจุดเริ่มต้นของเส้นทาง) และ 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

costMap
รูปที่ 1 ค่าใช้จ่ายสะสมของพิกเซลต้นทาง โดยค่าใช้จ่ายจะกำหนดตามหมวดหมู่การปกคลุมดิน ต้นทุนต่ำเป็นสีดํา ส่วนต้นทุนสูงเป็นสีขาว