Ga naar inhoud

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".

  1. Open de Code Editor:
    👉 https://code.earthengine.google.com/
  2. 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
};
Bijvoorbeeld, een eenvoudige functie die iemand begroet:

//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).