GEDI in Google Earth Engine
Introductie
Voor het gebruik van GEDI over grotere gebieden is het downloaden van enorme hoeveelheden (ruwe) data nodig. Gelukkig bestaat er een platform waarmee deze data snel en eenvoudig toegankelijk is: Google Earth Engine.
Met Google Earth Engine is het niet alleen mogelijk om GEDI-data efficiënt te analyseren, maar ook om deze te combineren met andere datasets, zoals Sentinel-1 en Sentinel-2. In de (nabije) toekomst kan dit worden uitgebreid met gegevens van nieuwe missies, zoals NISAR en BIOMASS, beiden gepland in 2025.
Het verkrijgen van GEDI-data in Google Earth Engine werkt op een vergelijkbare manier als bij Landsat- en Sentinel-data. Je kunt beginnen door de GEDI-collectie(s) te bekijken in de catalogus: https://developers.google.com/earth-engine/datasets/tags/gedi
Visualisatie van GEDI-Level 2A shots
1 - Inlezen van de GEDI-collectie:
-
Laad de GEDI L2A Raster Canopy Top Height (Version 2) als de variabele
GEDI_L2A
in. -
Bekijk de (metadata)-informatie van het eerste beeld. Print ook de namen van de beschikbare banden met de
.bandNames()
-functie naar de console.
Code
var GEDI_L2A = ee.ImageCollection('LARSE/GEDI/GEDI02_A_002_MONTHLY');
// Bekijk eerste beeld in de console
print('Eerste GEDI-beeld: ', GEDI_L2A.first())
// Welke banden zijn aanwezig?
print('Banden aanwezig: ', GEDI_L2A.first().bandNames())
2 - Collectie filteren op locatie en datum
Filter GEDI_L2A
op een studiegebied (zelf in te tekenen), of maak gebruik van volgende geometrie; de mangrove-zone aan de kustlijn van Suriname:
var ROI = ee.FeatureCollection('projects/ee-mangroves-suriname/assets/ROI_Mangrove_2022').first().geometry()
- ... op basis van de ROI
- ... op basis van datum: 1 Januari 2020 tot 31 december 2021.
Code
// Alleen de 'images' overlappend met de ROI worden weerhouden
var GEDI_L2A = GEDI_L2A.filterBounds(ROI);
// Temporeel Filteren: enkel de beelden binnen 2020 - 2021 behouden
var GEDI_L2A = GEDI_L2A.filterDate('2020-01-01','2021-12-31');
3 - Visualisatie van de GEDI-shots
Aangezien GEDI_L2A
een Imagecollection
met meerdere beelden is (geaggregeerd per maand), moeten we deze verder reduceren tot één beeld. Dit kan met reducers zoals .mean()
, .median()
. We kunnen er hierbij van uitgaan dat er op elke locatie slechts één shot beschikbaar is, waardoor de mediaan of het gemiddelde tot hetzelfde resultaat zullen komen.
Bij het plotten dienen we eerst de band (lees: de GEDI-metriek) die we wensen te visualiseren. Hier gebruiken we voor de kroonhoogte, wat gelijkgesteld wordt aan rh98
, de hoogte waaropen 98% van alle laser-energie is teruggekaatst. Dit betekent dat deze hoogte de grens aangeeft waar het grootste deel van de vegetatie, zoals het bladerdak, zich bevindt, en geeft daarmee een nauwkeurige indicatie van de kroonhoogte.
OEFENING
- Maak een visualisatie van de GEDI-shots. Maak hierbij een visualisatie aan, kleurenrange in te stellen tussen 0 en 30 meter.
- Identificeer enkele GEDI-pixels in het studiegebied. (Gebruik hiervoor de Inspector)
- Probeer pixels te kiezen in gebieden met verschillende vegetatietypes (gebruik Google Maps of satellietbeelden als referentie).
- Vergelijk de gemeten kroonhoogtes (
rh98
) met je verwachting op basis van de visuele kenmerken van de vegetatie. Zijn de waarden logisch?
Oplossing
// Visualisatieparameters
// We gaan uit van een kroonhoogte tot 30m, dus visualisatie min = 0, max= 30m
var visParams = {
min: 0,
max: 30,
palette: 'darkred,red,orange,green,darkgreen' // Kan ook met de HTML web-colours
};
// Visualisatie van de 'rh98' band.
Map.addLayer(GEDI_L2A.select('rh98'), visParams, 'GEDI_L2A filtered')
4 - Filteren op shotkwaliteit
Niet alle GEDI-shots hebben een goede kwaliteit, vaak door bijvoorbeeld (dikke) wolken of slechte reflecties. Deze shots kunnen we filteren met een functie die enkele kwaliteitscriteria toepast.
Om ervoor te zorgen dat alleen de hoogwaardige shots worden gebruikt, passen we een kwaliteitsfilter toe.
Concreet worden de volgende criteria gebruikt:
- Quality Flag: Alleen shots met een quality_flag van 1 worden behouden. Dit betekent dat de opname voldoet aan eisen met betrekking tot energie, gevoeligheid, amplitude, real-time oppervlaktetracking en het verschil met een digitaal hoogte model (DEM).
- Degrade Flag: Shots met een degrade_flag van 0 worden behouden. Dit geeft aan dat er geen significante kwaliteitsverlies is opgetreden.
- Gevoeligheid (Sensitivity): Alleen shots met een gevoeligheidswaarde groter dan 0.95 worden behouden, wat aangeeft dat de reflectie betrouwbaar is.
- Beam Type: Alleen full-power laserstralen worden behouden (beam > 4 in Google Earth Engine).
// Schrijven van kwaliteitsfilter, op basis van de kwaliteitsfilters
var qualityMask = function(image) {
return image
// Op basis van de 'quality flag'
.updateMask(image.select('quality_flag').eq(1))
// Op basis van de 'degrade flag'
.updateMask(image.select('degrade_flag').eq(0))
// Op basis van de Sensitivity
.updateMask(image.select('sensitivity').gt(0.95))
// Enkel de 'full power beams' (in GEE: BEAMS > 4
.updateMask(image.select('beam').gt(4));
};
- Pas deze functie toe op de gehele (overblijvende) collectie
Oplossing
// Filter toepassen op elk beeld in de collectie.
// De .map() functie: kwaliteitfilters toepassen over de resterende collectie
var GEDI_L2A = GEDI_L2A.map(qualityMask);
5 - Visualisatie van de finale GEDI-shotpixels
- Visualiseer nu de resterende shots en geef passende visualisatieparameters mee. In dit voorbeeld mappen we opnieuw
rh98
= de kroonhoogte. Neem hierbij een mediane reducer.
Oplossing
var visParams = {
min: 0,
max: 30,
palette: 'darkred,red,orange,green,darkgreen'
};
Map.addLayer(GEDI_L2A.median().select('rh98'), visParams, 'GEDI rh98 2020/2021');
Opdracht - GEDI Level-4A
In het bovenstaande voorbeeld visualiseerden we de GEDI-Level-2A dataset. Nu kun je dezelfde stappen uitvoeren voor de Level-4 biomassa-waarden. De collectie GEDI-level 4 is te vinden onder de volgende collectie: https://developers.google.com/earth-engine/datasets/catalog/LARSE_GEDI_GEDI04_A_002_MONTHLY.
Stappen:
- Gebruik de Level-4-collectie:
var GEDI_L4 = ee.ImageCollection("LARSE/GEDI/GEDI04_A_002_MONTHLY")
- Pas de regio-, datum- en kwaliteitsfilters toe op de collectie.
Opgelet! De 'quality'-mask voor L4A is verschillend
var qualityMask = function(image) { return image // Op basis van de 'quality flag' .updateMask(image.select('l2_quality_flag').eq(1)) // Verschillend met andere mask // Op basis van de 'degrade flag' .updateMask(image.select('degrade_flag').eq(0)) // Op basis van de Sensitivity .updateMask(image.select('sensitivity').gt(0.95)) // Enkel de 'full power beams' (in GEE: BEAMS > 4 .updateMask(image.select('beam').gt(4)); };
- Gebruik de
agbd
-band (Above-Ground Biomass Density, Mg/ha) voor je visualisatie.