JavaScript 101
Java in Google Earth Engine
Google Earth Engine (GEE) gebruikt JavaScript als programmeertaal in zijn code-editor.
Om met GEE te kunnen werken hoef je echter geen JavaScript-expert te zijn: het platform maakt voornamelijk gebruik van eigen classes en functies.
Een basiskennis van de JavaScript-syntaxis volstaat om vlot aan de slag te gaan.
Daarom starten we met een korte spoedcursus JavaScript, waarop we onze verdere Earth Engine-magie kunnen bouwen.
"Hello World"
De print()
-functie
Zoals bij elke programmeertaal beginnen we met het klassieke voorbeeld: "Hello World".
- Open de Code Editor:
👉 https://code.earthengine.google.com/ - Maak een nieuw script en voeg onderstaande regel toe:
//Printen van Hello World
print('Hello World')
Klik daarna op 'Run'. Proficiat! Het eerste scriptje is geschreven. De print()
-functie kun je gebruiken om bepaalde informatie naar de Console te schrijven, zoals tekst, getallen, metadata,... .
Verder valt hieruit ook op te merken dat een dubbele voorwaartse slash '//' gebruikt wordt om notities of commentaar toe te voegen aan je code.
Strings
Laat ons deze string nu bewaren in een variabele. In Javascript dient een variabele altijd geïniteerd te worden met var
. Laat je dit weg, dan krijg je een foutmelding.
//Aanmaken van de variabele 'aString'
var aString = 'Hello World'
print(aString)
Om het datatype van de variabele aString
na te gaan, kun je dit oproepen met de functie typeof
:
// Type van de variabele aString naar de Console schrijven
print(typeof(aString))
Functies
Een functie in JavaScript (en dus Google Earth Engine) heeft volgende opbouw:
var functienaam = function(inputvariabelen) {
//Hier de functie-bewerkingen
//bijvoorbeeld var output = a + b
return output
};
//Hello Function:
var hello_function = function(String) {
var goeindag = 'Hello ' + String
return goeindag
};
//Functie uitvoeren:
var hallo = hello_function('Boerekot');
print(hallo)
//Variabelen aangemaakt binnen de functie worden enkel daar gebruikt.
// Ze gebruiken buiten de functie levert dus foutmeldingen op:
print(goeindag)
Lijsten
Een lijst in Javascript wordt gedefinieerd met vierkante haakjes [ ]
. De eerste waarde bevindt zich steeds op positie 0
.
var lievelingsnummers = [8,6,3,27]
print('Eerste lievelingsnummer in de lijst = ', lievelingsnummers[0])
//Lijstelementen aanpassen
var automerken = ["BMW","Volkswagen","Minerva"]
automerken[2] = ["Opel"]
print(automerken)
Objecten of dictionary
Een object/dictionary wordt gedefinieerd tussen accolades { }
en bevatten eigenschappen (key-value pairs)
//object
var beelden = {
Sensor: "Sentinel 2",
Regios: ["Belgium","France","Vaticano"],
Aantalbeelden: 2,
1: "Ja"
}
Een eigenschap van een object kun je oproepen met een puntnotatie:
// Sensor bekijken
print(beelden.Sensor)
// Andere methode via haakjes []
print('Regios: ', beelden['Regios'])
JavaScript referenties
In deze spoedcursus overlopen we enkel de basis-syntaxis van JavaScript. Het is niet nodig om eerst de volledige taal te beheersen om met GEE te werken. Earth Engine maakt gebruik van een beperkte set functies en objecten. Je leert deze stap voor stap doorheen de practica.
Specifieke Earth Engine objecten
ee.Image
Een Image
is rasterdata bestaande uit één of meerdere banden. Elke band heeft een eigen naam, datatype, resolutie en projectie. Een enkel Sentinel-2 beeld, zal als één Image
kunnen worden opgeslagen.
Om een Image in te laden en Earth Engine wordt gebruik gemaakt van ee.Image()
. In het volgende hoofdstuk tonen we hoe dit in de praktijk gebeurt.
ee.ImageCollection
Een ImageCollection
is een collectie van meerdere Image
objecten. De Sentinel-2 MSI Level-2A collectie bevat bijvoorbeeld het volledige aanbod aan atmosferisch gecorrigeerde Sentinel-2 beelden.
Elke collectie bevat nuttige informatie in de Data Catalog. Standaard zijn de beelden gesorteerd op datum, maar je kunt de sortering ook aanpassen (zoals je later in de oefeningen zult zien).