Berechnungen mit Bildern

Nachdem Sie nun wissen, wie Sie ein Bild laden und anzeigen, ist es an der Zeit, eine Berechnung darauf anzuwenden. Sie können beispielsweise die Neigung des Geländes berechnen, indem Sie das SRTM-Höhenbild an die slope-Methode des ee.Terrain-Pakets übergeben.

Code-Editor (JavaScript)

// Load the SRTM image.
var srtm = ee.Image('CGIAR/SRTM90_V4');

// Apply an algorithm to an image.
var slope = ee.Terrain.slope(srtm);

// Display the result.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.
Map.addLayer(slope, {min: 0, max :60}, 'slope');

Im Code ee.Terrain.slope(srtm) wird das Bild srtm als Argument für den Steigungsalgorithmus angegeben. Das Ergebnis sollte in etwa so aussehen wie in Abbildung 3.

Tutorial_api_03_slope.png
Abbildung 3. Bild mit Farbverlauf

Bildberechnung

Es gibt auch Methoden in der Klasse ee.Image, die für ein Bildobjekt aufgerufen werden können. Angenommen, Sie möchten mit Bildbändern (manchmal auch als Band-Mathematik oder Kartenalgebra bezeichnet) einige Berechnungen durchführen. Sie könnten sich beispielsweise für trigonometrische Operationen für ein Aspektbild interessieren. Konvertieren Sie dazu zuerst ein Bild im Seitenverhältnis in Radiant und rufen Sie dann sin() dafür auf. Wir verwenden unser srtm-Image wieder.

Code-Editor (JavaScript)

// Get the aspect (in degrees).
var aspect = ee.Terrain.aspect(srtm);

// Convert to radians, compute the sin of the aspect.
var sinImage = aspect.divide(180).multiply(Math.PI).sin();

// Display the result.
Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');

Das Ergebnis sollte in etwa so aussehen wie in Abbildung 4. Es lohnt sich, den aspect.divide(180).multiply(Math.PI).sin()-Code genauer anzusehen. Durch das Verketten mehrerer Methoden auf diese Weise wird im Code Folgendes ausgedrückt: „Teile den Aspekt durch 180, multipliziere das Ergebnis mit π und berechne dann den Sinus.“ Sie können komplexe mathematische Operationen an Bildern ausführen, indem Sie Methoden auf diese Weise kombinieren. Eine vollständige Liste der mathematischen Operationen (add(), subtract(), multiply() usw.) finden Sie in der Image-Dokumentation.

Tutorial_api_04_sin.png
Abbildung 4. Sünde des Geländeaspekts.

Bildstatistiken

Eine weitere nützliche Klasse von Operationen für Bilder umfasst das Berechnen von Pixelstatistiken in Bildbereichen oder Raster-Vektor-Overlays. Um Statistiken in Earth Engine zu berechnen, verwenden Sie einen Reducer, der durch Klassen im ee.Reducer-Paket dargestellt wird. Angenommen, Sie interessieren sich für die durchschnittliche Höhe in einer bestimmten Region. Sie können eine Region definieren, indem Sie mit den Tools zum Zeichnen von Geometrien ein Polygon zeichnen. Wenn Sie einen Bereich interaktiv zeichnen möchten, rufen Sie das Polygon-Zeichentool  auf, digitalisieren Sie ein Polygon über dem gewünschten Bereich und klicken Sie dann auf Beenden. Das resultierende ee.Geometry-Objekt wird automatisch geometry genannt und als Import oben in Ihr Skript eingefügt. Benennen Sie die Variable in „polygon“ um. Klicken Sie dazu in den Importen auf den Variablennamen und geben Sie den neuen Namen ein.

Rufen Sie als Nächstes mit dem folgenden Code den mittleren Pixelwert im Polygon ab:

Code-Editor (JavaScript)

// Compute the mean elevation in the polygon.
var meanDict = srtm.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: polygon,
  scale: 90
});

// Get the mean from the dictionary and print it.
var mean = meanDict.get('elevation');
print('Mean elevation', mean);

Hier gibt es einige Dinge zu beachten. Zuerst ist zu beachten, dass reduceRegion() eine Methode ist, die für Image-Objekte verfügbar ist. Weitere Informationen zum Reduzieren von Regionen Zweitens werden die Methodenargumente in einem JavaScript-Objekt bereitgestellt, das als einzelnes Argument übergeben wird. Die Schlüssel des Objekts sind die Namen der Methodenparameter. Die Werte sind die Argumente für die Methode. Drittens gibt der Parameter reducer den Typ der zu berechnenden Statistik an und der Parameter geometry die Region, in der die Statistik berechnet werden soll. Der Parameter scale gibt die zu verwendende Pixelgröße in Metern an. Um Unklarheiten zu vermeiden, sollten Sie bei Reduzierungen immer den Maßstab angeben, da Earth Engine den geeigneten Maßstab möglicherweise nicht automatisch aus den Eingaben bestimmen kann. Weitere Informationen zur Skalierung in Earth Engine

Der Rückgabewert von reduceRegion() ist ein Dictionary, in dem die Schlüssel Bandnamen und die Werte die Pixelstatistiken für die Bänder sind. Die Methode get() für ein Dictionary gibt den Wert zurück, der dem als Argument angegebenen Schlüssel entspricht. In diesem Fall hat das srtm-Bild ein Band, „elevation“. Der Beispielcode ruft also die Statistik aus dem Dictionary ab und gibt sie aus.

Wenn Sie diesen Code ausführen und ein Fehler wie der folgende auftritt:

Mach dir deshalb keine Gedanken! Es gibt mehrere Möglichkeiten, den Fehler zu beheben. Die Methode reduceRegion() enthält eine Prüfung, um sicherzustellen, dass Sie wirklich so viele Pixel in Ihre Berechnung einbeziehen möchten. Damit soll verhindert werden, dass Sie versehentlich etwas Unüberlegtes tun, z. B. versuchen, den Mittelwert jedes Ein-Meter-Pixels der Welt zu berechnen (tun Sie das nicht). Um den Fehler zu beheben, legen Sie entweder den Parameter bestEffort auf true fest, indem Sie bestEffort: true dem Parameterverzeichnis hinzufügen, oder legen Sie den Parameter maxPixels auf einen Wert fest, der höher als der Standardwert von 10 Millionen Pixel ist, oder beides. Wenn bestEffort auf „true“ gesetzt ist, berechnet Earth Engine die Skalierung automatisch neu, sodass maxPixels nicht überschritten wird.

Exkurs: Maßstab in der Earth Engine

Im vorherigen Beispiel ist scale auf ungefähr die native Auflösung des SRTM-Bilds festgelegt. So finden Sie die native Auflösung eines Bildes heraus:

Code-Editor (JavaScript)

var scale = srtm.projection().nominalScale();
print('SRTM scale in meters', scale);

Wenn Sie einen Maßstab angeben, der kleiner als die native Auflösung ist, führt Earth Engine ein Resampling des Eingabebilds mit der Methode des nächsten Nachbarn durch und berücksichtigt dann alle kleineren Pixel in der Berechnung. Wenn Sie den Maßstab größer festlegen, verwendet Earth Engine Eingabepixel aus einer aggregierten Version der Eingabe, d.h. Pixel aus einer höheren Ebene der Bildpyramide. Weitere Informationen zur Verarbeitung von Maßstab in Earth Engine

Bisher haben Sie mit einem einzelnen Bild mit einem einzelnen Band gearbeitet. Auf der nächsten Seite erfahren Sie mehr über Mehrbandbilder und Bildsammlungen.