Oggetti Earth Engine

Ora che hai acquisito familiarità con JavaScript, scopri come inserire oggetti JavaScript e primitive JavaScript nei container di Earth Engine per inviarli al server ed elaborarli su Google.

Stringhe

Ad esempio, definisci una stringa, quindi inseriscila nel container ee.String() da inviare a Earth Engine:

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

Pensa a ee.Thing come a un contenitore per un elemento che esiste sul server. In questo esempio, la stringa viene prima definita e poi inserita nel container. Puoi anche definire il contenitore e i relativi contenuti contemporaneamente. Ad esempio:

Editor di codice (JavaScript)

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

Sebbene il primo argomento di print() sia solo una stringa sul client, il secondo argomento viene effettivamente inviato al server per essere valutato e poi restituito.

Numeri

Utilizza ee.Number() per creare oggetti numerici sul server. Ad esempio, utilizza il metodo JavaScript Math.E per creare un valore costante sul server:

Editor di codice (JavaScript)

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

I metodi ee.String() e ee.Number() sono costruttori. Un costruttore prende il suo argomento (ed eventualmente altri parametri), lo inserisce in un container e restituisce il container e i suoi contenuti come oggetto Earth Engine che puoi manipolare nel tuo codice. Qualsiasi costruttore che inizia con ee restituisce un oggetto Earth Engine.

Metodi sugli oggetti Earth Engine

Tieni presente che, una volta creato un oggetto Earth Engine, devi utilizzare i metodi Earth Engine per elaborarlo. In questo esempio, non puoi utilizzare Math.log() di JavaScript per elaborare l'oggetto Earth Engine. Devi utilizzare il metodo equivalente definito per un ee.Number:

Editor di codice (JavaScript)

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

In questo esempio, log() è un metodo per un oggetto ee.Number. (Utilizza la scheda Docs sul lato sinistro dell'editor di codice per visualizzare un elenco di tutti i metodi per ogni tipo di oggetto Earth Engine, ad esempio ee.Number > log()). Tieni presente che i metodi degli oggetti Earth Engine restituiscono altri oggetti Earth Engine.

Elenchi

Per trasformare un elenco JavaScript in un oggetto ee.List sul server, puoi inserire un valore letterale JavaScript in un container, come per i numeri e le stringhe. Earth Engine fornisce anche metodi lato server per creare sequenze di numeri. Ad esempio:

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

Poiché gli oggetti ee.List esistono solo sul server, utilizza le funzioni fornite da Earth Engine per interagire con loro. Ad esempio, per estrarre un elemento dall'elenco, utilizza il metodo get() dell'oggetto ee.List:

Editor di codice (JavaScript)

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

Trasmissione

A volte, Earth Engine non conosce il tipo di un oggetto restituito da un metodo. In qualità di programmatore, sai che la variabile value nell'esempio precedente è un oggetto numerico. Tuttavia, se provi a utilizzare il metodo add() di un ee.Number, riceverai un errore simile al seguente:

Questo è comune con la funzione get(), che potrebbe restituire tutti i tipi di oggetti Earth Engine. Per correggerlo, utilizza il costruttore ee.Number per eseguire il cast del risultato:

Editor di codice (JavaScript)

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

Dizionari

Puoi creare un Dictionary di Earth Engine da un oggetto JavaScript, come con stringhe, numeri ed elenchi. Al momento della creazione, puoi utilizzare la funzionalità JavaScript per inizializzare l'oggetto Earth Engine. In questo caso, un ee.Dictionary viene costruito direttamente da un oggetto letterale JavaScript:

Editor di codice (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 questo esempio, tieni presente che, una volta ottenuto un ee.Dictionary, devi utilizzare i metodi su ee.Dictionary per ottenere i valori (a differenza del dizionario JavaScript della lezione precedente). Nello specifico, get(key) restituisce il valore associato a key. Poiché il tipo di oggetto restituito da get() potrebbe essere qualsiasi, se vuoi eseguire un'operazione sull'oggetto diversa dalla stampa, devi eseguirne il cast al tipo corretto. Tieni presente inoltre che il metodo keys() restituisce un ee.List.

Date

Gli oggetti Date sono il modo in cui Earth Engine rappresenta il tempo. Come negli esempi precedenti, è importante distinguere tra un oggetto JavaScript Date e un oggetto Earth Engine ee.Date. Crea un ee.Date da una stringa, da un Date JavaScript o utilizzando i metodi statici forniti dalla classe ee.Date. Per maggiori dettagli, consulta la sezione Data nella scheda Documenti. Questo esempio illustra la creazione di date da stringhe o da una data JavaScript che rappresenta i millisecondi dalla mezzanotte del 1° gennaio 1970:

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

Le date sono utili per filtrare le raccolte, in particolare come argomenti del metodo filterDate(). Per saperne di più sull'ordinamento delle raccolte, consulta questa sezione della pagina Inizia.

Digressione: passaggio di parametri per nome

Gli argomenti dei metodi di Earth Engine possono essere passati in ordine, ad esempio per creare un ee.Date da anno, mese e giorno, puoi passare i parametri del metodo statico fromYMD() nell'ordine anno, mese, giorno:

Editor di codice (JavaScript)

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

In alternativa, puoi passare i parametri per nome, in qualsiasi ordine. Anche se potrebbe richiedere più codice, può migliorare la leggibilità e la riusabilità. Per passare i parametri per nome, passa un oggetto JavaScript in cui le chiavi dell'oggetto sono i nomi dei parametri del metodo e i valori sono gli argomenti del metodo. Ad esempio:

Editor di codice (JavaScript)

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

Tieni presente che i nomi delle proprietà dell'oggetto (le chiavi) corrispondono ai nomi specificati nella documentazione di ee.Date.fromYMD(). Tieni inoltre presente che l'oggetto passato come argomento può essere salvato in una variabile per il riutilizzo, come illustrato nell'esempio di oggetto JavaScript.

Ora hai un'introduzione sufficiente a JavaScript per iniziare a utilizzare Earth Engine. Per una spiegazione più dettagliata degli oggetti JavaScript rispetto a quelli di Earth Engine, consulta la pagina Client vs. Server.

Nella sezione successiva, scopri di più sui concetti di programmazione funzionale per utilizzare in modo efficace i cicli for, le condizioni if/else e le iterazioni in Earth Engine.