Intensità di variazione dell'occorrenza di inondazione

Il livello dati Intensità della variazione della presenza di acqua fornisce una misura della variazione dell'acqua di superficie tra due epoche: 1984-1999 e 2000-2015. Il livello calcola la media della variazione tra coppie omologhe di mesi presi dalle due epoche. Per ulteriori dettagli su questo livello, consulta la Guida per gli utenti dei dati (v2) .

Questa sezione del tutorial:

  1. aggiungere un livello della mappa stilizzato per visualizzare l'intensità della variazione della presenza di acqua e
  2. riassumere l'intensità della variazione in una regione di interesse specificata utilizzando un istogramma.

Visualizzazione

Analogamente al livello di presenza di acqua, inizieremo aggiungendo una visualizzazione di base dell'intensità della variazione di presenza alla mappa e poi la miglioreremo. L'intensità della variazione di occorrenza viene fornita in due modi, sia come valori assoluti che normalizzati. In questo tutorial utilizzeremo i valori assoluti. Inizia selezionando il livello di intensità della variazione assoluta di occorrenze dall'immagine GSW:

Editor di codice (JavaScript)

var change = gsw.select("change_abs");

Nella sezione Constants del codice, aggiungi un'istruzione che crei una nuova variabile che definisce lo stile del livello. Questo stile mostra le aree in cui la presenza di acqua di superficie è diminuita/aumentata in rosso/verde. Le aree in cui la presenza di acqua di superficie è rimasta relativamente invariata sono mostrate in nero.

Editor di codice (JavaScript)

var VIS_CHANGE = {
    min:-50,
    max:50,
    palette: ['red', 'black', 'limegreen']
};

Alla fine della sezione di codice Map Layers, aggiungi un'istruzione che aggiunga un nuovo livello alla mappa.

Editor di codice (JavaScript)

Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});
modificare l'intensità
Figura 6. Screenshot dell'intensità del cambiamento delle acque superficiali del fiume Ucayali vicino a Pucallpa, una città nella foresta pluviale amazzonica del Perù orientale. Il colore rosso/verde indica una diminuzione/aumento della presenza di acqua di superficie tra le epoche.

Riepilogo delle modifiche all'interno di una regione di interesse

In questa sezione riassumeremo la quantità di modifiche all'interno di una regione di interesse specifica. Per specificare una regione di interesse, fai clic sullo strumento di disegno del poligono, che è uno degli strumenti di geometria. Verrà creato un nuovo livello Importazioni geometria, denominato "geometry" per impostazione predefinita. Per modificare il nome, fai clic sull'icona a forma di ingranaggio a destra del nome del livello. Tieni presente che potrebbe essere necessario posizionare il cursore sul nome del livello per visualizzarlo.

Modifica il nome del livello in roi (per la regione di interesse o ROI). A questo punto, possiamo fare clic su una serie di punti sulla mappa per definire una regione di interesse poligonale.

regione di interesse
Figura 7. Screenshot del fiume Ucayali vicino a Pucallpa, in Perù, con una regione di interesse creata utilizzando lo strumento di disegno del poligono.

Ora che la nostra regione di interesse è definita e memorizzata in una variabile, possiamo utilizzarla per calcolare un istogramma dell'intensità della variazione per la ROI. Aggiungi il seguente codice alla sezione Calcoli dello script.

Editor di codice (JavaScript)

// Calculate a change intensity for the region of interest.
var histogram = change.reduceRegion({
  reducer: ee.Reducer.histogram(),
  geometry: roi,
  scale: 30,
  bestEffort: true,
});
print(histogram);

La prima istruzione calcola un istogramma dei valori di intensità della variazione di occorrenza all'interno della ROI, campionando a una scala di 30 minuti. Il secondo stampa l'oggetto risultante nella scheda della console dell'editor di codice. Puoi espandere l'albero degli oggetti per visualizzare i valori dei bucket dell'istogramma. I dati numerici sono presenti, ma esistono modi migliori per visualizzare i risultati.

valori dell'istogramma
Figura 8. Risultati della scheda Console, che mostrano i valori dell'istogramma dell'intensità della variazione dell'acqua di superficie.

Per migliorare questo aspetto, possiamo generare un istogramma. Sostituisci l'istruzione che definisce l'oggetto istogramma con le seguenti istruzioni:

Editor di codice (JavaScript)

// Generate a histogram object and print it to the console tab.
var histogram = ui.Chart.image.histogram({
  image: change,
  region: roi,
  scale: 30,
  minBucketWidth: 10
});
histogram.setOptions({
  title: 'Histogram of surface water change intensity.'
});

Queste istruzioni creano un oggetto grafico istogramma, che sostituisce l'albero degli oggetti istogramma nella scheda Console con un grafico. Il metodo del grafico contiene diversi argomenti, tra cui scale, che definisce la scala spaziale, in metri, alla quale viene campionata la regione di interesse, e minBucketWidth, che viene utilizzato per controllare la larghezza dei bucket dell'istogramma.

grafico a istogrammi
Figura 9. Risultati della scheda Console, che mostrano un grafico a istogrammi dell'intensità del cambiamento dell'acqua di superficie.

Puoi esplorare i valori del grafico in modo interattivo posizionando il cursore sulle barre dell'istogramma.

Script finale

Di seguito è riportato l'intero script di questa sezione. Tieni presente che lo script include istruzioni per definire una geometria poligonale (roi), paragonabile alla geometria che hai creato utilizzando gli strumenti di geometria dell'editor di codice.

Editor di codice (JavaScript)

//////////////////////////////////////////////////////////////
// Asset List
//////////////////////////////////////////////////////////////

var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater');
var occurrence = gsw.select('occurrence');
var change = gsw.select("change_abs");
var roi = /* color: 0B4A8B */ee.Geometry.Polygon(
        [[[-74.17213, -8.65569],
          [-74.17419, -8.39222],
          [-74.38362, -8.36980],
          [-74.43031, -8.61293]]]);

//////////////////////////////////////////////////////////////
// Constants
//////////////////////////////////////////////////////////////

var VIS_OCCURRENCE = {
    min:0,
    max:100,
    palette: ['red', 'blue']
};
var VIS_CHANGE = {
    min:-50,
    max:50,
    palette: ['red', 'black', 'limegreen']
};
var VIS_WATER_MASK = {
  palette: ['white', 'black']
};

//////////////////////////////////////////////////////////////
// Calculations
//////////////////////////////////////////////////////////////

// Create a water mask layer, and set the image mask so that non-water areas are transparent.
var water_mask = occurrence.gt(90).mask(1);

// Generate a histogram object and print it to the console tab.
var histogram = ui.Chart.image.histogram({
  image: change,
  region: roi,
  scale: 30,
  minBucketWidth: 10
});
histogram.setOptions({
  title: 'Histogram of surface water change intensity.'
});
print(histogram);

//////////////////////////////////////////////////////////////
// Initialize Map Location
//////////////////////////////////////////////////////////////

// Uncomment one of the following statements to center the map on
// a particular location.
// Map.setCenter(-90.162, 29.8597, 10);   // New Orleans, USA
// Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico
// Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA
// Map.setCenter(149.412, -35.0789, 11);  // Lake George, Australia
// Map.setCenter(105.26, 11.2134, 9);     // Mekong River Basin, SouthEast Asia
// Map.setCenter(90.6743, 22.7382, 10);   // Meghna River, Bangladesh
// Map.setCenter(81.2714, 16.5079, 11);   // Godavari River Basin Irrigation Project, India
// Map.setCenter(14.7035, 52.0985, 12);   // River Oder, Germany & Poland
// Map.setCenter(-59.1696, -33.8111, 9);  // Buenos Aires, Argentina\
Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru

//////////////////////////////////////////////////////////////
// Map Layers
//////////////////////////////////////////////////////////////

Map.addLayer({
  eeObject: water_mask,
  visParams: VIS_WATER_MASK,
  name: '90% occurrence water mask',
  shown: false
});
Map.addLayer({
  eeObject: occurrence.updateMask(occurrence.divide(100)),
  name: "Water Occurrence (1984-2015)",
  visParams: VIS_OCCURRENCE,
  shown: false
});
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});

Nella sezione successiva, esplorerai ulteriormente come è cambiata l'acqua nel tempo, lavorando con il livello di transizione della classe di acqua.