Intensität der Änderung des Wasserauftretens

Die Datenebene „Water Occurrence Change Intensity“ (Intensität der Veränderung des Auftretens von Wasser) gibt an, wie sich das Oberflächenwasser zwischen zwei Epochen verändert hat: 1984–1999 und 2000–2015. In der Ebene wird die Änderung über homologe Monatspaare aus den beiden Epochen gemittelt. Weitere Informationen zu dieser Ebene finden Sie im Data Users Guide (v2) .

In diesem Abschnitt der Anleitung wird Folgendes behandelt:

  1. eine Karte mit benutzerdefinierten Stilen für die Visualisierung der Intensität der Änderung des Wasserauftretens hinzuzufügen und
  2. die Intensität der Änderung in einer bestimmten ROI-Region mithilfe eines Histogramms zusammenzufassen.

Visualisierung

Ähnlich wie bei der Ebene für das Vorkommen von Wasser fügen wir zuerst eine einfache Visualisierung der Intensität der Änderung des Vorkommens auf der Karte hinzu und verbessern sie dann. Die Intensität der Änderung der Häufigkeit wird auf zwei Arten angegeben, sowohl als absolute als auch als normalisierte Werte. In dieser Anleitung verwenden wir die absoluten Werte. Wählen Sie zuerst die Ebene für die Intensität der absoluten Änderung der Häufigkeit aus dem GSW-Bild aus:

Code-Editor (JavaScript)

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

Fügen Sie im Abschnitt „Konstanten“ des Codes eine Anweisung hinzu, mit der eine neue Variable erstellt wird, die definiert, wie die Ebene formatiert wird. Diese Darstellung zeigt Gebiete, in denen das Vorkommen von Oberflächenwasser rot (abgenommen) oder grün (zugenommen) ist. Gebiete, in denen das Vorkommen von Oberflächenwasser relativ unverändert ist, werden schwarz dargestellt.

Code-Editor (JavaScript)

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

Fügen Sie am Ende des Codeabschnitts „Karten-Ebenen“ eine Anweisung hinzu, mit der der Karte eine neue Ebene hinzugefügt wird.

Code-Editor (JavaScript)

Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});
Intensität ändern
Abbildung 6. Screenshot der Intensität der Oberflächenwasserveränderung für den Ucayali-Fluss in der Nähe von Pucallpa, einer Stadt im Amazonas-Regenwald im Osten Perus. Rot/Grün steht für eine Abnahme/Zunahme des Oberflächenwassers zwischen den Epochen.

Änderungen in einer ROI-Region zusammenfassen

In diesem Abschnitt fassen wir die Änderungen in einem bestimmten Bereich von Interesse zusammen. Wenn Sie einen interessierenden Bereich angeben möchten, klicken Sie auf das Polygon-Zeichentool, das zu den Geometrie-Tools gehört. Dadurch wird ein neuer Layer vom Typ „Geometrieimporte“ erstellt, der standardmäßig den Namen „geometry“ hat. Wenn Sie den Namen ändern möchten, klicken Sie rechts neben dem Ebenennamen auf das Zahnradsymbol. Möglicherweise müssen Sie den Mauszeiger auf den Layernamen bewegen, damit er angezeigt wird.

Ändern Sie den Namen des Layers in roi (für Region of Interest oder ROI). Wir können dann auf eine Reihe von Punkten auf der Karte klicken, um eine Polygonregion von Interesse zu definieren.

interessierende Region
Abbildung 7. Screenshot des Ucayali-Flusses in der Nähe von Pucallpa, Peru, mit einem ROI, der mit dem Polygon-Zeichentool erstellt wurde.

Nachdem wir die Region von Interesse definiert und in einer Variablen gespeichert haben, können wir sie verwenden, um ein Histogramm der Änderungsintensität für die ROI zu berechnen. Fügen Sie den folgenden Code in den Abschnitt „Calculations“ des Skripts ein.

Code-Editor (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);

Mit der ersten Anweisung wird ein Histogramm der Intensitätswerte für die Änderung der Wahrscheinlichkeit innerhalb des ROI berechnet. Dabei wird auf einer Skala von 30 Minuten gesampelt. Der zweite gibt das resultierende Objekt auf dem Tab „Console“ des Code-Editors aus. Sie können die Objektstruktur maximieren, um die Werte der Histogramm-Buckets aufzurufen. Die numerischen Daten sind vorhanden, aber es gibt bessere Möglichkeiten, die Ergebnisse zu visualisieren.

Histogrammwerte
Abbildung 8. Ergebnisse auf dem Tab „Konsole“ mit Histogrammwerten für die Intensität der Oberflächenwasserveränderung.

Um das zu verbessern, können wir stattdessen ein Histogramm erstellen. Ersetzen Sie die Anweisung, mit der das Histogrammobjekt definiert wird, durch die folgenden Anweisungen:

Code-Editor (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.'
});

Mit diesen Anweisungen wird ein Histogramm-Diagrammobjekt erstellt, das den Histogramm-Objektbaum auf dem Tab „Konsole“ durch ein Diagramm ersetzt. Die Diagrammmethode enthält mehrere Argumente, darunter scale, das die räumliche Skala in Metern definiert, mit der die Region von Interesse erfasst wird, und minBucketWidth, mit dem die Breite der Histogramm-Buckets gesteuert wird.

Histogramm
Abbildung 9. Ergebnisse auf dem Tab „Console“ mit einem Histogramm zur Intensität der Oberflächenwasserveränderung.

Sie können die Diagrammwerte interaktiv untersuchen, indem Sie den Cursor auf die Histogrammbalken bewegen.

Endgültiges Script

Das gesamte Skript für diesen Abschnitt ist unten aufgeführt. Das Skript enthält Anweisungen zum Definieren einer Polygongeometrie (roi), die mit der Geometrie vergleichbar ist, die Sie mit den Geometriewerkzeugen des Code-Editors erstellt haben.

Code-Editor (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'
});

Im nächsten Abschnitt erfahren Sie mehr darüber, wie sich Wasser im Laufe der Zeit verändert hat. Dazu verwenden Sie den Layer transition (Übergang) der Wasserklasse.