Esportare grafici e immagini

Earth Engine è un potente strumento di analisi, ma potresti dover esportare i risultati della tua analisi per incorporare grafici, immagini, mappe e così via in report o pubblicazioni. In questa sezione imparerai a creare grafici e immagini che possono essere esportati e visualizzati in altri software. Ricorda che nella sezione precedente hai utilizzato un codice simile al seguente per aggiungere una banda NDVI a ogni immagine di una raccolta, dove la variabile l8 fa riferimento alla raccolta di riflettanza TOA di Landsat 8:

Editor di codice (JavaScript)

// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

// Map a function over the Landsat 8 TOA collection to add an NDVI band.
var withNDVI = l8.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

Creazione di grafici

Supponiamo che tu voglia effettivamente un grafico dell'NDVI nel tempo in una determinata località. Per creare un grafico di questo tipo, il primo passaggio consiste nello scegliere una località di interesse. Crea un punto utilizzando lo strumento di disegno dei punti () e crea una geometria a punto singolo nella tua area di interesse. Se hai già importato dei dati, passa il mouse sopra Importazioni di geometrie e fai clic su + nuovo livello. Individua il punto in un'area agricola, una foresta di latifoglie, un prato annuale o un'altra copertura del suolo con un ciclo annuale. Assegna un nome all'importazione roi. (Consulta questa pagina per informazioni sulla creazione di geometrie in modo programmatico).

Ora utilizziamo il punto roi per creare un grafico dell'NDVI nel tempo nel pixel sotto quel punto. Il modo per creare grafici in Earth Engine è utilizzare il pacchetto ui.Chart. (Scopri di più sulla creazione di grafici in Earth Engine). In particolare, per creare un grafico nel tempo, puoi utilizzare il metodo ui.Chart.image.series():

Editor di codice (JavaScript)

// Create a chart.
var chart = ui.Chart.image.series({
  imageCollection: withNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'NDVI over time'});

// Display the chart in the console.
print(chart);

Per la geometria roi, abbiamo scelto un punto in un'area agricola, ottenendo un grafico simile alla Figura 10. Tieni presente che i parametri del costruttore del grafico includono un riduttore e una scala come reduceRegion(). Poiché il punto che forniamo come regione può intersecare un solo pixel, è sufficiente utilizzare il riduttore "first". Se hai una regione più grande, devi utilizzare una "media" o un altro riduttore che specifica come aggregare i pixel. Tieni inoltre presente che per visualizzare un grafico, devi solo stamparlo.

Tutorial_api_10_ndvi_chart.png
Figura 10. Grafico dell'NDVI Landsat nel tempo in una geometria puntuale.

Digressione: mascheramento semplice delle nuvole per Landsat

Come avrai notato, la serie temporale dei valori NDVI nel punto sembra un po' rumorosa. Questo è probabilmente dovuto alle nuvole. Per attenuare questo effetto, Earth Engine include un algoritmo di mascheramento delle nuvole per i sensori Landsat con una banda termica: ee.Algorithms.Landsat.simpleCloudScore(). Accetta come input un'immagine di riflettanza Landsat TOA e aggiunge una banda denominata cloud, che è un indice di nuvolosità nel pixel da 0 a 100, rispettivamente da meno a più nuvoloso. Modificando la funzione mappata sulla raccolta, puoi utilizzare una soglia arbitraria (20) sull'indice delle nuvole per ripulire un po' il grafico:

Editor di codice (JavaScript)

var cloudlessNDVI = l8.map(function(image) {
  // Get a cloud score in [0, 100].
  var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');

  // Create a mask of cloudy pixels from an arbitrary threshold.
  var mask = cloud.lte(20);

  // Compute NDVI.
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');

  // Return the masked image with an NDVI band.
  return image.addBands(ndvi).updateMask(mask);
});

print(ui.Chart.image.series({
  imageCollection: cloudlessNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'Cloud-masked NDVI over time'}));

Il risultato con maschera delle nuvole è illustrato nella Figura 11. Tieni presente che la serie temporale sembra un po' più uniforme, ma potrebbe comunque contenere pixel interessati dalle nuvole. Regola la soglia sull'indice cloud e osserva la serie temporale nel grafico per scoprire in che modo questa soglia può influire sui risultati.

Tutorial_api_11_cloudless_chart.png
Figura 11. Grafico dell'NDVI con maschera cloud nel tempo in una geometria di punti.

Esportazione di immagini

Hai visto un modo per esportare un grafico di dati calcolati da Earth Engine, ma che ne dici di un'intera immagine? Supponiamo, ad esempio, di aver creato un composito di pixel più verdi, come descritto nella sezione precedente:

Editor di codice (JavaScript)

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

L'unica differenza in questo codice rispetto a quanto fatto in precedenza è che ora utilizziamo la raccolta con maschera di nuvole. Puoi esportare un sottoinsieme (definito da una regione) di questo utilizzando il pacchetto Export. Scopri di più sull'esportazione di dati raster e vettoriali da Earth Engine. Ad esempio, per esportare un'immagine che può essere facilmente incorporata in altri documenti, creiamo un'immagine di visualizzazione, come hai fatto in precedenza, ed esportiamola nella tua cartella di Google Drive:

Editor di codice (JavaScript)

// Create a 3-band, 8-bit, color-IR composite to export.
var visualization = greenest.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

// Create a task that you can launch from the Tasks tab.
Export.image.toDrive({
  image: visualization,
  description: 'Greenest_pixel_composite',
  scale: 30
});

Quando esegui questo codice, tieni presente che viene creata una nuova attività nella scheda Attività. Per avviare la finestra di dialogo di configurazione dell'esportazione, fai clic sul pulsante ESEGUI nella scheda Attività. Dopo aver configurato l'attività, fai clic sul pulsante Esegui nella finestra di dialogo per avviare l'esportazione. Ma prima di farlo, tieni presente che:

Il motivo per cui devi prestare attenzione quando esporti senza un argomento region è che se imposti un valore relativamente piccolo per scale e la mappa viene rimpicciolita in un'area di grandi dimensioni, esporterai un'immagine potenzialmente molto grande nella cartella Drive. Per ulteriori dettagli e un elenco dei possibili parametri di configurazione, consulta la documentazione di Export.image.toDrive() nella scheda Documenti.

Con questo si conclude l'introduzione all'API Earth Engine. Ora hai visto gran parte delle funzionalità più comuni di Earth Engine e dovresti essere in grado di procedere con sicurezza ad analisi più complesse. Assicurati di leggere la documentazione e di cercare nel forum le risposte ad altre domande. Buona programmazione!