Optimalizácia času spustenia skriptov Google Earth Engine Scripts
Google Earth Engine (GEE) je výkonná platforma na analýzu rozsiahlych geopriestorových údajov. Používatelia sa však často stretávajú s problémami s časom vykonávania, aj keď sa ich skripty javia ako základné. Skript, ktorého spustenie trvá niekoľko minút, môže ovplyvniť produktivitu a oneskoriť prehľady.
V tomto prípade používateľ vytvoril jednoduchý skript na spracovanie údajov Sentinel a Landsat 8. Napriek svojej jednoduchosti trvá spustenie skriptu približne 3-5 minút. Pochopenie, prečo sa to deje a ako optimalizovať skript, je nevyhnutné pre efektívne spracovanie údajov.
Výkon skriptu GEE závisí od niekoľkých faktorov vrátane veľkosti údajov, filtrovania a výpočtovej zložitosti. Skrátenie času vykonávania zahŕňa identifikáciu úzkych miest v rámci skriptu, ako sú zbytočné operácie alebo veľké množiny údajov, ktoré spomaľujú spracovanie.
Tento článok preskúma možné príčiny pomalého spustenia v GEE a poskytne praktické tipy na optimalizáciu daného skriptu. Implementáciou týchto stratégií môžu používatelia výrazne zvýšiť rýchlosť a výkon svojich úloh analýzy geopriestorových údajov.
Príkaz | Príklad použitia |
---|---|
normalizedDifference() | Táto funkcia sa používa na výpočet indexov ako NDVI, NDWI a NDSI vypočítaním rozdielu medzi dvoma pásmami, deleného ich súčtom. Je to špecifické pre analýzu diaľkového snímania, kde sú potrebné indexy vegetácie, vody a snehu. |
filterBounds() | Filtruje kolekciu obrázkov tak, aby obsahovala iba obrázky, ktoré pretínajú danú geometriu. V tomto prípade obmedzí satelitné údaje na oblasť okolo definovaného bodu záujmu, čím sa spracovanie zefektívni vylúčením irelevantných údajov. |
filterDate() | Tento príkaz obmedzuje kolekciu obrázkov na konkrétny rozsah dátumov. Pre náš problém je kľúčové analyzovať rozdiely medzi rovnakým časovým obdobím pre súbory údajov Sentinel a Landsat. |
addBands() | Pridá nové vypočítané pásma (ako NDVI, NDWI a NDSI) ku každému obrázku v kolekcii. Je to nevyhnutné na použitie viacerých indexov na rovnakú kolekciu obrázkov bez vytvárania samostatných množín údajov. |
unmask() | Vyplní maskované pixely zadanou hodnotou. V našom skripte sa používa na odmaskovanie trvalých vodných plôch, čím sa zabezpečí konzistentné spracovanie údajov v celom regióne. |
reduce() | Zmenší kolekciu obrázkov pomocou špecifikovanej funkcie zmenšovania, ako je napríklad ee.Reducer.percentile(). Tu sa používa na výpočet 30. percentilu hodnôt pixelov, čím sa optimalizuje generovanie kompozitného obrazu. |
clip() | Vystrihne obrázok k hraniciam zadanej oblasti záujmu. To zaisťuje, že sa spracúvajú iba údaje relevantné pre danú oblasť, čo urýchľuje realizáciu. |
gt() | Tento príkaz znamená „väčší než“ a používa sa na vytváranie binárnych obrázkov na základe prahovej hodnoty. V tomto prípade identifikuje oblasti s výskytom vody väčším ako 80 %. |
map() | Aplikuje funkciu na každý obrázok v kolekcii. V našom príklade použije funkciu addIndices na výpočet NDVI, NDWI a NDSI naprieč všetkými obrázkami v kolekcii, čím sa zjednoduší pracovný postup. |
Optimalizácia GEE skriptov pre vyššiu efektivitu
V poskytnutom skripte je cieľom extrahovať a spracovať satelitné snímky z dvoch rôznych zdrojov: Sentinel a Landsat. The Táto platforma umožňuje používateľom pristupovať k obrovskému množstvu satelitných údajov a používať rôzne operácie, ako je filtrovanie, indexovanie a vizualizácia. Jednou z kľúčových funkcií použitých v tomto skripte je funkcia, ktorá sa používa na výpočet dôležitých indexov ako NDVI, NDWI a NDSI. Tieto indexy sú kľúčové pre analýzu vegetácie, vody a snehovej pokrývky v špecifikovanom regióne. Skript začína definovaním bodu záujmu a vycentruje mapu naň pomocou poskytnutých súradníc.
Skript aplikuje viacero filtrov, ako napr a , aby sa znížilo množstvo spracovávaných údajov, čím sa skrátil čas vykonávania. napr. filterBounds() zaisťuje, že budú zahrnuté iba obrázky pretínajúce oblasť záujmu, zatiaľ čo filterDate() obmedzí obrázky na konkrétny rozsah dátumov. To je nevyhnutné pre spracovanie veľkých súborov údajov, ako sú snímky Sentinel a Landsat, pretože to minimalizuje výpočtovú záťaž. Okrem toho, pre cloudové pokrytie pomáha vyradiť obrázky, ktoré majú príliš veľa cloudu, čím sa zabezpečí lepšia kvalita analýzy.
Jedným z dôležitých aspektov scenára je funkcia, ktorá k snímkam pridáva vypočítané indexy (NDVI, NDWI, NDSI), čím ich sprístupňuje pre ďalšiu analýzu. Skript tiež obsahuje permanentnú vodnú masku využívajúcu údaje zo súboru údajov o globálnej povrchovej vode JRC. Vodná maska pomáha pri vylúčení oblastí s vysokým výskytom vody (nad 80%), ktorá by inak mohla skresliť výsledky rozboru vegetácie a snehu. Toto sa vykonáva prostredníctvom a funkcie, ktoré umožňujú skriptu izolovať oblasti na základe hodnôt pixelov.
Nakoniec skript používa funkciu s percentilovou redukciou na vytvorenie zloženého obrazu, ktorý predstavuje 30. percentil vybratých hodnôt pixelov. Tento zložený obrázok sa potom pristrihne do oblasti záujmu a zobrazí sa na mape pomocou funkciu. Vizuálne parametre sú definované pre kompozity Sentinel aj Landsat, čo umožňuje užívateľovi ich zobrazenie s príslušným nastavením farieb. Kombináciou rôznych krokov spracovania obrazu, ako je filtrovanie, maskovanie a generovanie kompozitov, tento skript poskytuje efektívny spôsob analýzy satelitných snímok, aj keď je možné použiť ďalšiu optimalizáciu na skrátenie času vykonávania.
Optimalizácia spúšťania skriptu Google Earth Engine pre rýchlejšie spracovanie
Toto riešenie využíva Google Earth Engine (GEE) s dôrazom na optimalizáciu výkonu skrátením času získavania údajov a zjednodušením operácií. JavaScript sa používa ako skriptovací jazyk.
var pointJSP = ee.Geometry.Point([86.465263, 20.168076]);
Map.centerObject(pointJSP, 14);
// Combine date variables for flexibility
var startDate = '2024-02-01';
var endDate = '2024-03-01';
// Function to add NDVI, NDWI, NDSI
var addIndices = function(image) {
var ndvi = image.normalizedDifference(['NIR', 'RED']).rename('NDVI');
var ndwi = image.normalizedDifference(['NIR', 'SWIR1']).rename('NDWI');
var ndsi = image.normalizedDifference(['SWIR1', 'SWIR2']).rename('NDSI');
return image.addBands(ndvi).addBands(ndwi).addBands(ndsi);
};
// Use fewer data points by filtering for cloud-free pixels only once
var sentinel = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(pointJSP)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30));
Použitie efektívneho spracovania dát pre GEE na minimalizáciu oneskorenia skriptov
Toto riešenie integruje optimalizované spracovanie údajov kombináciou výpočtov indexov a prahových hodnôt. JavaScript sa používa na spracovanie Google Earth Engine.
var landsat8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(pointJSP)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUD_COVER', 30));
// Apply water mask for permanent water areas
var waterMask = ee.Image('JRC/GSW1_4/GlobalSurfaceWater').select('occurrence').gt(80).unmask();
// Add indices to Landsat 8 imagery
var landsatIndices = landsat8.map(addIndices);
var composite = landsatIndices.reduce(ee.Reducer.percentile([30])).clip(pointJSP).mask(waterMask.eq(0));
Map.addLayer(composite, {bands: ['RED', 'GREEN', 'BLUE'], min: 0, max: 3000}, 'Landsat Composite');
Map.addLayer(waterMask, {min: 0, max: 1, palette: ['white', 'blue']}, 'Water Mask', false);
Zlepšenie účinnosti skriptov diaľkového snímania
Jedným z kľúčových faktorov pri práci so skriptami Google Earth Engine (GEE) je zabezpečenie efektívneho spracovania operácií. Zatiaľ čo používanie veľkých súborov údajov, ako sú Sentinel a Landsat, je bežné v environmentálnej analýze, samotný objem údajov môže spomaliť vykonávanie skriptov. Jednou z metód na zlepšenie výkonu je zabezpečiť, aby sa spracovávali iba potrebné údaje. Pomocou príkazov ako a minimalizuje veľkosť množiny údajov, čo pomáha zefektívniť výpočty. Výber konkrétnych rozsahov dátumov a geografických oblastí môže výrazne skrátiť čas vykonania.
Ďalším aspektom, ktorý ovplyvňuje výkon skriptu GEE, je spôsob spracovania údajov. Príklad skriptu používa funkciu na výpočet dôležitých indexov ako NDVI, NDWI a NDSI. Tieto indexy sa pridávajú ako pásy do kolekcií obrázkov, čo umožňuje dôkladnejšiu analýzu. Bežnou chybou je však použitie takýchto funkcií na celý súbor údajov bez predchádzajúceho filtrovania. Je dôležité použiť takéto operácie po filtrovaní, aby ste sa vyhli zbytočným výpočtom na irelevantných údajoch.
Vizualizácia je ďalším prvkom skriptu, ktorý je možné optimalizovať. Pridanie príliš veľkého počtu vrstiev alebo zložitých vizualizácií môže skrátiť čas spracovania. Skript používa na vykreslenie kompozitov preddefinované vizuálne parametre, ale výkon možno zlepšiť zakázaním určitých vrstiev, pokiaľ nie sú vyslovene potrebné. To pomáha udržiavať skript ľahký pri zachovaní jeho funkčnosti. Používanie príkazy tiež zaisťujú, že sa vykresľuje iba potrebná oblasť, čím sa znižuje celkové zaťaženie spracovania.
- Ako zlepším výkon mojich GEE skriptov?
- Optimalizujte využitie , a pred spracovaním zmenšite veľkosť množiny údajov.
- Prečo trvá spustenie môjho skriptu GEE tak dlho?
- Veľké súbory údajov a zložité výpočty môžu spomaliť vykonávanie. Použite a obmedziť spracovanie na príslušné oblasti.
- Môžem znížiť počet obrázkov spracovaných v GEE?
- Áno, podaním žiadosti pre cloudové pokrytie a zamerať sa na konkrétne obdobia.
- Ako môžem zjednodušiť výpočty indexu v mojom skripte?
- Použite funkciu ako zefektívniť pridávanie viacerých indexov (napr. NDVI, NDWI) v jednom kroku.
- Je možné vizualizovať len podstatné vrstvy?
- Áno, zakázať nepotrebné vrstvy a použiť zjednodušené parametre vizualizácie s pre lepší výkon.
Optimalizácia skriptov Google Earth Engine zahŕňa efektívne spracovanie veľkých množín údajov, včasné použitie filtrov a zníženie nepotrebných operácií s údajmi. Zameranie na základné oblasti, ako je filtrovanie podľa a umiestnenie môže výrazne skrátiť čas spracovania.
Začlenením funkcií ako napr a použitím prahových masiek na elimináciu irelevantných údajov možno ďalej zlepšiť výkon skriptu. Tieto techniky môžu zefektívniť vykonávanie, ponúkajú rýchlejšie výsledky a lepšie využitie platformy Google Earth Engine.
- Tento článok bol vytvorený s použitím obsahu založeného na oficiálnej dokumentácii Google Earth Engine, ktorá poskytuje prehľad o technikách optimalizácie skriptov. Google Earth Engine Guides
- Ďalšie informácie boli zhromaždené z fóra komunity GEE, ktoré ponúka diskusie a riešenia na zlepšenie výkonu v zložitých skriptoch. Komunita Google Earth Engine
- Na osvedčené postupy narábania s veľkými súbormi údajov sa odkazuje na literatúru a návody o diaľkovom prieskume, ktoré sú k dispozícii na nasledujúcom odkaze. NASA Earth Observatory