Kümülatif Maliyet Eşleme

Her pikselin en yakın kaynak konuma giden en düşük maliyetli yolun toplam maliyetini içerdiği bir maliyet haritası hesaplamak için image.cumulativeCost() değerini kullanın. Bu işlem, habitat analizi (Adriaensen et al. 2003), havza sınırlandırması (Melles et al. 2011) ve görüntü segmentasyonu (Falcao et al. 2004) gibi çeşitli bağlamlarda faydalıdır. Her pikselin, üzerinde yürünecek metre başına maliyeti temsil ettiği bir resimde kümülatif maliyet işlevini çağırın. Yollar, bir pikselin sekiz komşusundan herhangi biri aracılığıyla hesaplanır. Gerekli girişler arasında, sıfır olmayan her pikselin olası bir kaynağı (veya yolun başlangıcını) temsil ettiği bir source resmi ve yolların hesaplanacağı bir maxDistance (metre cinsinden) yer alır. Algoritma, uzunluğu maxPixels = maxDistance/scale'ten kısa olan tüm yolların kümülatif maliyetini bulur. Burada scale, piksel çözünürlüğü veya Earth Engine'daki analiz ölçeğidir.

Aşağıdaki örnekte, bir arazi örtüsü resminde en düşük maliyetli yolların nasıl hesaplanacağı gösterilmektedir:

// 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');

Sonuç, her çıkış pikseli en yakın kaynağa olan kümülatif maliyeti temsil eden Şekil 1'e benzer şekilde görünmelidir. En yakın kaynağa giden en düşük maliyetli yolun uzunluğunun maxPixels değerini aştığı yerlerde kesintilerin görünebileceğini unutmayın.

costMap
Şekil 1. Maliyetin arazi örtüsü kategorilerine göre belirlendiği kaynak piksellerin kümülatif maliyeti. Düşük maliyetler siyah, yüksek maliyetler beyazdır.