Earth Engine-Objekte

Nachdem Sie sich mit JavaScript vertraut gemacht haben, erfahren Sie, wie Sie JavaScript-Objekte und ‑Primitive in Earth Engine-Containern platzieren, um sie an den Server zu senden und bei Google zu verarbeiten.

Strings

Definieren Sie beispielsweise einen String und fügen Sie ihn dann in den ee.String()-Container ein, der an Earth Engine gesendet werden soll:

Code-Editor (JavaScript)

// Define a string, then put it into an EE container.
var aString = 'To the cloud!';
var eeString = ee.String(aString);
print('Where to?', eeString);

Stellen Sie sich ee.Thing als Container für ein Element vor, das auf dem Server vorhanden ist. In diesem Beispiel wird der String zuerst definiert und dann in den Container eingefügt. Sie können den Container und seine Inhalte auch gleichzeitig definieren. Beispiel:

Code-Editor (JavaScript)

// Define a string that exists on the server.
var serverString = ee.String('This is on the server.');
print('String on the server:', serverString);

Das erste Argument für print() ist zwar nur ein String auf dem Client, das zweite Argument wird jedoch zur Auswertung an den Server gesendet und dann zurückgegeben.

iWork Numbers

Verwenden Sie ee.Number(), um Zahlenobjekte auf dem Server zu erstellen. Verwenden Sie beispielsweise die JavaScript-Methode Math.E, um einen konstanten Wert auf dem Server zu erstellen:

Code-Editor (JavaScript)

// Define a number that exists on the server.
var serverNumber = ee.Number(Math.E);
print('e=', serverNumber);

Die Methoden ee.String() und ee.Number() sind Konstruktoren. Ein Konstruktor nimmt sein Argument (und möglicherweise andere Parameter), legt es in einen Container und gibt den Container und seinen Inhalt als Earth Engine-Objekt zurück, das Sie in Ihrem Code bearbeiten können. Jeder Konstruktor, der mit ee beginnt, gibt ein Earth Engine-Objekt zurück.

Methoden für Earth Engine-Objekte

Hinweis: Nachdem Sie ein Earth Engine-Objekt erstellt haben, müssen Sie Earth Engine-Methoden verwenden, um es zu verarbeiten. In diesem Beispiel können Sie das Earth Engine-Objekt nicht mit der JavaScript-Funktion Math.log() verarbeiten. Sie müssen die entsprechende Methode für ein ee.Number verwenden:

Code-Editor (JavaScript)

// Use a built-in function to perform an operation on the number.
var logE = serverNumber.log();
print('log(e)=', logE);

In diesem Beispiel ist log() eine Methode für ein ee.Number-Objekt. Auf der linken Seite des Code-Editors finden Sie den Tab Dokumente. Dort ist eine Liste aller Methoden für jeden Earth Engine-Objekttyp zu sehen, z. B. „ee.Number > log()“. Die Methoden von Earth Engine-Objekten geben andere Earth Engine-Objekte zurück.

Listen

Wenn Sie eine JavaScript-Liste in ein ee.List-Objekt auf dem Server umwandeln möchten, können Sie ein JavaScript-Literal wie bei Zahlen und Strings in einen Container einfügen. Earth Engine bietet auch serverseitige Convenience-Methoden zum Erstellen von Zahlenfolgen. Beispiel:

Code-Editor (JavaScript)

// Make a sequence the hard way.
var eeList = ee.List([1, 2, 3, 4, 5]);
// Make a sequence the easy way!
var sequence = ee.List.sequence(1, 5);
print('Sequence:', sequence);

Da die ee.List-Objekte nur auf dem Server vorhanden sind, sollten Sie die von Earth Engine bereitgestellten Funktionen verwenden, um mit ihnen zu interagieren. Wenn Sie beispielsweise etwas aus der Liste abrufen möchten, verwenden Sie die Methode get() des ee.List-Objekts:

Code-Editor (JavaScript)

// Use a method on an ee.List to extract a value.
var value = sequence.get(2);
print('Value at index 2:', value);

Streaming

Manchmal ist der Typ eines Objekts, das von einer Methode zurückgegeben wird, in Earth Engine nicht bekannt. Als Programmierer wissen Sie, dass die Variable value im vorherigen Beispiel ein Zahlenobjekt ist. Wenn Sie jedoch versuchen, die add()-Methode eines ee.Number zu verwenden, erhalten Sie einen Fehler wie:

Das ist häufig bei der Funktion get() der Fall, die alle möglichen Earth Engine-Objekte zurückgeben kann. Verwenden Sie den ee.Number-Konstruktor, um das Ergebnis zu konvertieren:

Code-Editor (JavaScript)

// Cast the return value of get() to a number.
print('No error:', ee.Number(value).add(3));

Wörterbücher

Sie können ein Earth Engine-Dictionary aus einem JavaScript-Objekt erstellen, wie bei Strings, Zahlen und Listen. Beim Erstellen des Objekts können Sie JavaScript-Funktionen verwenden, um das Earth Engine-Objekt zu initialisieren. In diesem Fall wird ein ee.Dictionary direkt aus einem JavaScript-Literalobjekt erstellt:

Code-Editor (JavaScript)

// Make a Dictionary on the server.
var dictionary = ee.Dictionary({
  e: Math.E,
  pi: Math.PI,
  phi: (1 + Math.sqrt(5)) / 2
});

// Get some values from the dictionary.
print('Euler:', dictionary.get('e'));
print('Pi:', dictionary.get('pi'));
print('Golden ratio:', dictionary.get('phi'));

// Get all the keys:
print('Keys: ', dictionary.keys());

In diesem Beispiel sehen Sie, dass Sie nach dem Abrufen eines ee.Dictionary Methoden für das ee.Dictionary verwenden müssen, um Werte abzurufen (im Gegensatz zum JavaScript-Dictionary in der vorherigen Lektion). Genauer gesagt gibt get(key) den Wert zurück, der mit key verknüpft ist. Da der von get() zurückgegebene Objekttyp beliebig sein kann, müssen Sie ihn in den richtigen Typ umwandeln, wenn Sie etwas anderes mit dem Objekt tun möchten, als es auszugeben. Beachten Sie außerdem, dass die Methode keys() eine ee.List zurückgibt.

Daten

Datumsobjekte sind die Art und Weise, wie Zeit in Earth Engine dargestellt wird. Wie in den vorherigen Beispielen ist es wichtig, zwischen einem JavaScript-Date-Objekt und einem Earth Engine-ee.Date-Objekt zu unterscheiden. Erstellen Sie ein ee.Date-Objekt aus einem String, aus einem JavaScript-Date oder mit statischen Methoden der Klasse ee.Date. Weitere Informationen finden Sie im Abschnitt „Datum“ auf dem Tab Dokumente. In diesem Beispiel wird veranschaulicht, wie Datumsangaben aus Strings oder einem JavaScript-Datum erstellt werden, das Millisekunden seit Mitternacht am 1. Januar 1970 darstellt:

Code-Editor (JavaScript)

// Define a date in Earth Engine.
var date = ee.Date('2015-12-31');
print('Date:', date);

// Get the current time using the JavaScript Date.now() method.
var now = Date.now();
print('Milliseconds since January 1, 1970', now);

// Initialize an ee.Date object.
var eeNow = ee.Date(now);
print('Now:', eeNow);

Datumsangaben sind nützlich, um Sammlungen zu filtern, insbesondere als Argumente für die Methode filterDate(). Weitere Informationen zum Sortieren von Sammlungen finden Sie in diesem Abschnitt der Seite „Erste Schritte“.

Exkurs: Parameter nach Namen übergeben

Argumente für Earth Engine-Methoden können in der richtigen Reihenfolge übergeben werden. Wenn Sie beispielsweise ein ee.Date aus Jahr, Monat und Tag erstellen möchten, können Sie Parameter der statischen Methode fromYMD() in der Reihenfolge Jahr, Monat, Tag übergeben:

Code-Editor (JavaScript)

var aDate = ee.Date.fromYMD(2017, 1, 13);
print('aDate:', aDate);

Alternativ können Sie die Parameter in beliebiger Reihenfolge nach Namen übergeben. Auch wenn es mehr Code erfordert, kann es die Lesbarkeit und Wiederverwendbarkeit verbessern. Um Parameter nach Namen zu übergeben, übergeben Sie ein JavaScript-Objekt, in dem die Schlüssel des Objekts die Namen der Methodenparameter und die Werte die Argumente der Methode sind. Beispiel:

Code-Editor (JavaScript)

var theDate = ee.Date.fromYMD({
  day: 13,
  month: 1,
  year: 2017
});
print('theDate:', theDate);

Die Namen der Objekteigenschaften (die Schlüssel) stimmen mit den Namen in der ee.Date.fromYMD()-Dokumentation überein. Das als Argument übergebene Objekt kann in einer Variablen gespeichert und wiederverwendet werden, wie im Beispiel für ein JavaScript-Objekt gezeigt.

Sie haben jetzt genug über JavaScript gelernt, um mit der Earth Engine zu arbeiten. Eine detailliertere Erklärung von JavaScript- und Earth Engine-Objekten finden Sie auf der Seite Client und Server.

Im nächsten Abschnitt erfahren Sie mehr über Konzepte der funktionalen Programmierung, die Sie für die effektive Verwendung von for-Schleifen, if/else-Bedingungen und Iterationen in Earth Engine nutzen können.