Ora che hai familiarità con JavaScript, scopri come inserire oggetti e primitive JavaScript nei container Earth Engine per inviarli al server ed elaborarli su Google.
Stringa
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 definita prima e poi inserita nel contenitore. 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);
Anche se il primo argomento di print()
è solo una stringa sul client, il secondo argomento viene effettivamente inviato al server per essere valutato, quindi 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 accetta il suo argomento (e possibilmente altri parametri),
lo inserisce in un contenitore e restituisce il contenitore e il suo contenuto 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 di 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 contenitore come con numeri e stringhe. Earth Engine
fornisce anche metodi pratici 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 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 a questo:
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 costruire un Dictionary
Earth Engine da un oggetto JavaScript, come con
stringhe, numeri ed elenchi. In fase di costruzione, 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, osserva che una volta che hai un ee.Dictionary
, devi
utilizzare i metodi su ee.Dictionary
per ottenere i valori (a differenza del dizionario
JavaScript nella lezione precedente). Nello specifico, get(key)
restituisce il valore
associato a key
. Poiché il tipo di oggetto restituito da get()
potrebbe essere qualsiasi cosa, se intendi fare qualcosa con l'oggetto oltre a stamparlo,
devi eseguirne il cast al tipo corretto. Tieni presente inoltre che il metodo keys()
restituisce un ee.List
.
Date
Gli oggetti data 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 metodi statici forniti dalla
classe ee.Date
. Per maggiori dettagli, consulta la sezione Data nella
scheda Documenti. Questo esempio illustra la costruzione di date da stringhe o da una data JavaScript
che rappresenta i millisecondi trascorsi 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 Guida introduttiva.
Digressione: trasmettere i parametri per nome
Gli argomenti dei metodi 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 essere 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 presente inoltre che
l'oggetto passato come argomento può essere salvato in una variabile per essere riutilizzato, come
illustrato nell'esempio di oggetto JavaScript.
Ora hai una conoscenza sufficiente di JavaScript per iniziare a utilizzare Earth Engine. Consulta la pagina Client vs. Server (Client e server) per una spiegazione più dettagliata degli oggetti JavaScript e Earth Engine.
Nella sezione successiva, scopri di più sui concetti di programmazione funzionale per utilizzare in modo efficace cicli for, condizioni if/else e iterazioni in Earth Engine.