Google Earth Engine ismertető - I. rész
A Google Earth Engine (GEE) egy felhőalapú platform, amelyet kifejezetten földmegfigyelési adatok, például műholdfelvételek nagy mennyiségű feldolgozására és elemzésére fejlesztettek ki. A platformon keresztül könnyen elérhetők a világ legnagyobb földmegfigyelési adatbázisai, köztük számos amerikai és európai műhold (például a Sentinel-2) adatai. A felhőalapú infrastruktúra lehetővé teszi nagy volumenű adatok gyors feldolgozását. Ezek az adatok feldolgozása JavaScript vagy Python programozási nyelveken lehetséges.
A GEE ingyenesen használható kutatási, oktatási és nonprofit célokra. Illetve magánfelhasználók számára is bizonyos korlátozásokkal ingyenesen elérhető.
JavaScript API
A böngészőalapú Code Editor felületén JavaScript kódokat írhatunk.
A Google Earth Engine saját JavaScript API-t kínál, amely egy speciális belső adatmodellre épül. A natív JavaScript-hez szokott fejlesztők számára a szintaxis kezdetben kissé szokatlannak tűnhet, mivel a GEE nem valós időben futtatja a JavaScript kódunkat, hanem egy "lusta kiértékelés" módszerrel működik. Ez azt jelenti, hogy a kódban megadott utasításokat először adatfolyamként kezeljük, amely majd szerver oldalon fut le.
Ennek következményeként a GEE JavaScript API-ja nem teljesen megegyező a hagyományos JavaScript-tel, mivel a Google Earth Engine objektumai (például ee.Image, ee.Number, ee.Geometry stb.) nem közvetlen értékeket tárolnak. Ezek az objektumok "helyfoglalók", amelyek reprezentálják a műveletek eredményeit, de önállóan nem hordozzák az adatokat. Ahelyett, hogy a hagyományos JavaScript Number, String vagy Array típusait használnánk, a GEE saját típusait alkalmazzuk, mint az ee.Number, ee.String, ee.List stb. Ezekkel az objektumokkal csak akkor dolgozunk ténylegesen, amikor a szerver oldalra kerülnek, és ott hajtódnak végre a szükséges számítások.
Az első példakód
Ime egy egyszerű kód, amely Sentinel-2-es műholdképeken számítja ki és jeleníti meg az NDVI-t egy adott területre és időintervallumra:
// Definiáljunk egy területet (ROI - region of interest).
var roi = ee.Geometry.Point([20.25, 47.30]); // középpont koordinátái
// Töltsük be a Sentinel-2 képgyűjteményt.
var sentinel2 = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(roi) // Szűrés a területre
.filterDate('2024-06-01', '2024-09-30') // Szűrés egy adott időszakra
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)); // Felhőmentes képek szűrése (20%-nál kevesebb felhő).
// NDVI számítás (NDVI = (NIR - Red) / (NIR + Red)).
var calculateNDVI = function(image) {
var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI'); // B8: NIR, B4: Red
return image.addBands(ndvi);
};
// Alkalmazzuk az NDVI számítást minden képre.
var ndviCollection = sentinel2.map(calculateNDVI);
// Az első kép kiválasztása és NDVI megjelenítése.
var ndviImage = ndviCollection.first().select('NDVI');
// Vizualizációs paraméterek.
var ndviParams = {min: -1, max: 1, palette: ['red', 'yellow', 'green']};
// NDVI réteg hozzáadása a térképhez.
Map.centerObject(roi, 14);
Map.addLayer(ndviImage, ndviParams, 'NDVI');
A következő cikkben, majd ezt a script-et fogjuk szétszedni, és részenként továbbfejleszteni.