Utilizza image.cumulativeCost()
per calcolare una mappa dei costi in cui ogni pixel contiene il costo totale del percorso più economico fino alla posizione di origine più vicina. Questo
processo è utile in una serie di contesti, come l'analisi dell'habitat
(Adriaensen et al. 2003), la delimitazione delle bacini idrografici
(Melles et al. 2011) e la segmentazione delle immagini
(Falcao et al. 2004). Chiama la funzione di costo cumulativo su un'immagine in cui ogni pixel rappresenta il costo per metro per attraversarla. I percorsi vengono calcolati tramite uno degli otto vicini di un pixel. Gli input obbligatori includono un'immagine source
, in cui ogni
pixel diverso da zero rappresenta una potenziale origine (o l'inizio di un percorso) e un
maxDistance
(in metri) su cui calcolare i percorsi. L'algoritmo trova
il costo cumulativo di tutti i percorsi di lunghezza inferiore a maxPixels =
maxDistance
/scala, dove scala è la risoluzione in pixel o la scala di analisi in Earth Engine.
L'esempio seguente mostra il calcolo dei percorsi a costo minimo in un'immagine della copertura del suolo:
Editor di codice (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');
Il risultato dovrebbe essere simile alla Figura 1, in cui ogni pixel di output rappresenta il costo accumulato fino all'origine più vicina. Tieni presente che le discontinuità possono verificarsi nei punti in cui il percorso a costo minimo per l'origine più vicina supera la lunghezza di maxPixels.
