Mappage des coûts cumulés

Utilisez image.cumulativeCost() pour calculer une carte de coût dans laquelle chaque pixel contient le coût total du chemin le moins cher vers l'emplacement source le plus proche. Ce processus est utile dans divers contextes, tels que l'analyse de l'habitat (Adriaensen et al., 2003), la délimitation des bassins versants (Melles et al., 2011) et la segmentation d'images (Falcao et al., 2004). Appelez la fonction de coût cumulé sur une image dans laquelle chaque pixel représente le coût par mètre pour le traverser. Les chemins sont calculés via l'un des huit voisins d'un pixel. Les entrées requises incluent une image source, dans laquelle chaque pixel non nul représente une source potentielle (ou le début d'un chemin) et un maxDistance (en mètres) sur lequel calculer les chemins. L'algorithme détermine le coût cumulé de tous les chemins de longueur inférieure à maxPixels = maxDistance/échelle, où échelle correspond à la résolution en pixels ou à l'échelle d'analyse dans Earth Engine.

L'exemple suivant montre comment calculer les chemins à coût minimal sur une image de l'occupation des sols:

Éditeur de code (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');

Le résultat doit ressembler à la figure 1, dans laquelle chaque pixel de sortie représente le coût cumulé jusqu'à la source la plus proche. Notez que des discontinuités peuvent apparaître dans les zones où le chemin le moins coûteux vers la source la plus proche dépasse la longueur de maxPixels.

costMap
Figure 1. Coût cumulé des pixels sources, où le coût est déterminé par les catégories de couverture du sol. Les coûts faibles sont noirs, les coûts plus élevés sont blancs.