Mapeamento de custo cumulativo

Use image.cumulativeCost() para calcular um mapa de custo em que cada pixel contém o custo total do caminho de menor custo até o local de origem mais próximo. Esse processo é útil em vários contextos, como análise de habitat (Adriaensen et al., 2003), delimitação de bacias hidrográficas (Melles et al., 2011) e segmentação de imagens (Falcao et al., 2004). Chame a função de custo cumulativo em uma imagem em que cada pixel representa o custo por metro para percorrê-la. Os caminhos são calculados por qualquer um dos oito vizinhos de um pixel. As entradas obrigatórias incluem uma imagem source, em que cada pixel diferente de zero representa uma possível origem (ou início de um caminho) e um maxDistance (em metros) para calcular caminhos. O algoritmo encontra o custo cumulativo de todos os caminhos com menos de maxPixels = maxDistance/escala em comprimento, em que escala é a resolução em pixels ou a escala de análise no Earth Engine.

O exemplo a seguir demonstra como calcular caminhos de menor custo em uma imagem de cobertura de terra:

Editor de código (JavaScript)

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

O resultado será semelhante à Figura 1, em que cada pixel de saída representa o custo acumulado da fonte mais próxima. As descontinuidades podem aparecer em lugares em que o caminho de menor custo para a origem mais próxima excede maxPixels em comprimento.

costMap
Figura 1. O custo cumulativo dos pixels de origem, em que o custo é determinado pelas categorias de cobertura do solo. Os custos baixos são pretos, e os custos mais altos são brancos.