Optimiziranje vremena izvršavanja skripti Google Earth Enginea
Google Earth Engine (GEE) moćna je platforma za analizu velikih geoprostornih podataka. Međutim, korisnici se često susreću s problemima s vremenom izvršenja, čak i kada se njihove skripte čine jednostavnima. Skripta čije izvođenje traje nekoliko minuta može utjecati na produktivnost i odgoditi uvide.
U ovom slučaju, korisnik je izradio jednostavnu skriptu za obradu podataka Sentinela i Landsata 8. Unatoč svojoj jednostavnosti, skripti je potrebno oko 3-5 minuta da se izvrši. Razumijevanje zašto se to događa i kako optimizirati skriptu ključno je za učinkovitu obradu podataka.
Izvedba GEE skripte ovisi o nekoliko čimbenika, uključujući veličinu podataka, filtriranje i računsku složenost. Smanjenje vremena izvršenja uključuje prepoznavanje uskih grla unutar skripte, kao što su nepotrebne operacije ili veliki skupovi podataka koji usporavaju obradu.
Ovaj će članak istražiti moguće uzroke sporog vremena izvršavanja u GEE-u i dati praktične savjete za optimiziranje dane skripte. Implementacijom ovih strategija korisnici mogu značajno poboljšati brzinu i izvedbu svojih zadataka analize geoprostornih podataka.
Naredba | Primjer upotrebe |
---|---|
normalizedDifference() | Ova se funkcija koristi za izračunavanje indeksa kao što su NDVI, NDWI i NDSI izračunavanjem razlike između dva raspona, podijeljene njihovim zbrojem. Specifičan je za analizu daljinskog očitavanja gdje su potrebni indeksi vegetacije, vode i snijega. |
filterBounds() | Filtrira kolekciju slika tako da uključuje samo slike koje sijeku danu geometriju. U ovom slučaju ograničava satelitske podatke na područje oko definirane točke interesa, čineći obradu učinkovitijom isključivanjem nevažnih podataka. |
filterDate() | Ova naredba ograničava zbirku slika na određeni datumski raspon. Za naš problem ključno je analizirati razlike između istog vremenskog razdoblja za skupove podataka Sentinel i Landsat. |
addBands() | Dodaje nove izračunate pojaseve (poput NDVI, NDWI i NDSI) svakoj slici u kolekciji. Ovo je bitno za primjenu više indeksa na istu zbirku slika bez stvaranja zasebnih skupova podataka. |
unmask() | Ispunjava maskirane piksele određenom vrijednošću. U našoj skripti koristi se za demaskiranje stalnih vodenih područja, osiguravajući dosljednu obradu podataka u cijeloj regiji. |
reduce() | Smanjuje zbirku slika pomoću određene reduktorske funkcije, kao što je ee.Reducer.percentile(). Ovdje se koristi za izračun 30. percentila vrijednosti piksela, optimizirajući generiranje kompozitne slike. |
clip() | Izrezuje sliku na granice navedenog područja interesa. To osigurava da se obrađuju samo podaci relevantni za područje, što ubrzava izvršenje. |
gt() | Ova naredba označava 'veće od' i koristi se za stvaranje binarnih slika na temelju praga. U ovom slučaju identificira područja s pojavom vode većom od 80%. |
map() | Primjenjuje funkciju na svaku sliku u zbirci. U našem primjeru, primjenjuje se funkcija addIndices za izračunavanje NDVI, NDWI i NDSI na svim slikama u zbirci, pojednostavljujući tijek rada. |
Optimiziranje GEE skripti za poboljšanu učinkovitost
U priloženoj skripti cilj je izdvojiti i obraditi satelitske snimke iz dva različita izvora: Sentinel i Landsat. The platforma omogućuje korisnicima pristup golemim količinama satelitskih podataka i primjenu raznih operacija kao što su filtriranje, indeksiranje i vizualizacija. Jedna od ključnih značajki korištenih u ovoj skripti je koja se koristi za izračunavanje važnih indeksa kao što su NDVI, NDWI i NDSI. Ovi indeksi su ključni za analizu vegetacije, vode i snježnog pokrivača u navedenoj regiji. Skripta počinje definiranjem točke interesa i centrira kartu na nju koristeći navedene koordinate.
Skripta primjenjuje više filtara, kao što su i , kako bi se smanjila količina podataka koji se obrađuju, čime se poboljšava vrijeme izvršenja. Na primjer, filterBounds() osigurava da su uključene samo slike koje sijeku područje interesa, dok filterDatum() ograničava slike na određeni datumski raspon. Ovo je bitno za obradu velikih skupova podataka kao što su Sentinel i Landsat slike, jer smanjuje računalno opterećenje. Osim toga, jer pokrivenost oblakom pomaže u odbacivanju slika koje imaju previše oblaka, osiguravajući analizu bolje kvalitete.
Jedan važan aspekt scenarija je koja dodaje izračunate indekse (NDVI, NDWI, NDSI) slikama, čineći ih dostupnima za daljnju analizu. Skripta također uključuje trajnu vodenu masku koristeći podatke iz skupa podataka JRC Global Surface Water. Vodena maska pomaže u isključivanju područja s velikom pojavom vode (većom od 80%), koja bi inače mogla iskriviti rezultate analize vegetacije i snijega. To se radi putem i funkcije koje skripti omogućuju izolaciju područja na temelju vrijednosti piksela.
Konačno, skripta koristi funkcija s reduktorom percentila za generiranje složene slike koja predstavlja 30. percentil vrijednosti odabranih piksela. Ova kompozitna slika se zatim izrezuje na područje interesa i vizualizira na karti pomoću funkcija. Vizualni parametri definirani su i za kompozite Sentinel i Landsat, omogućujući korisniku da ih vidi s odgovarajućim postavkama boja. Kombinacijom različitih koraka obrade slike kao što su filtriranje, maskiranje i kompozitno generiranje, ova skripta pruža učinkovit način za analizu satelitskih slika, iako se može primijeniti dodatna optimizacija kako bi se smanjilo vrijeme izvršenja.
Optimiziranje izvršavanja skripte Google Earth Enginea za bržu obradu
Ovo rješenje koristi Google Earth Engine (GEE) s naglaskom na optimizaciji performansi smanjenjem vremena dohvaćanja podataka i pojednostavljivanjem operacija. JavaScript se koristi kao skriptni jezik.
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));
Korištenje učinkovite obrade podataka za GEE za smanjenje kašnjenja skripte
Ovo rješenje integrira optimizirano rukovanje podacima kombiniranjem izračuna indeksa i pragova. JavaScript se primjenjuje za obradu Google Earth Enginea.
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);
Poboljšanje učinkovitosti skripti za daljinsko očitavanje
Jedno ključno razmatranje pri radu sa skriptama Google Earth Enginea (GEE) je osiguravanje učinkovitog rukovanja operacijama. Iako je korištenje velikih skupova podataka kao što su Sentinel i Landsat uobičajeno u analizi okoliša, sama količina podataka može usporiti izvršavanje skripte. Jedna od metoda za poboljšanje performansi je osigurati da se obrađuju samo potrebni podaci. Korištenje naredbi poput i minimizira veličinu skupa podataka, što pomaže pojednostaviti izračune. Odabir određenih datumskih raspona i geografskih regija može znatno smanjiti vrijeme izvršenja.
Drugi aspekt koji utječe na izvedbu GEE skripte je kako se podaci obrađuju. Primjer skripte koristi funkciju za izračunavanje važnih indeksa kao što su NDVI, NDWI i NDSI. Ovi se indeksi dodaju kao trake u zbirke slika, što omogućuje temeljitiju analizu. Međutim, uobičajena pogreška je primjena takvih funkcija na cijeli skup podataka bez prethodnog filtriranja. Ključno je primijeniti takve operacije nakon filtriranja kako bi se izbjegla nepotrebna izračunavanja na nevažnim podacima.
Vizualizacija je još jedan element skripte koji se može optimizirati. Dodavanje previše slojeva ili složenih vizualizacija može skratiti vrijeme obrade. Skripta koristi unaprijed definirane vizualne parametre za renderiranje kompozita, ali izvedba se može poboljšati onemogućavanjem određenih slojeva osim ako nisu izričito potrebni. To pomaže u održavanju skripte laganom, a istovremeno održava njezinu funkcionalnost. Korištenje naredbe također osigurava da se renderira samo potrebno područje, smanjujući ukupni teret obrade.
- Kako mogu poboljšati performanse svojih GEE skripti?
- Optimizirajte korištenje , i smanjite veličinu skupa podataka prije obrade.
- Zašto mojoj GEE skripti treba toliko vremena da se pokrene?
- Veliki skupovi podataka i složeni izračuni mogu usporiti izvođenje. Koristiti i ograničiti obradu na relevantna područja.
- Mogu li smanjiti broj slika koje se obrađuju u GEE?
- Da, prijavom za pokrivenost oblakom i fokusirati se na određena razdoblja.
- Kako mogu pojednostaviti izračune indeksa u svojoj skripti?
- Koristite funkciju poput za pojednostavljenje dodavanja više indeksa (npr. NDVI, NDWI) u jednom koraku.
- Je li moguće vizualizirati samo bitne slojeve?
- Da, onemogućite nepotrebne slojeve i koristite pojednostavljene parametre vizualizacije za bolje performanse.
Optimiziranje skripti Google Earth Enginea uključuje učinkovito rukovanje velikim skupovima podataka, ranu primjenu filtara i smanjenje nepotrebnih podatkovnih operacija. Fokusiranje na bitna područja kao što je filtriranje prema i lokacija može značajno smanjiti vrijeme obrade.
Uključivanjem funkcija kao što su i upotrebom maski praga za uklanjanje nevažnih podataka, izvedba skripte može se dodatno poboljšati. Ove tehnike mogu pojednostaviti izvođenje, nudeći brže rezultate i bolje korištenje platforme Google Earth Engine.
- Ovaj je članak izrađen pomoću sadržaja temeljenog na službenoj dokumentaciji Google Earth Enginea, koja pruža uvid u tehnike optimizacije skripte. Vodiči za Google Earth Engine
- Dodatne informacije prikupljene su s foruma zajednice GEE, nudeći rasprave i rješenja za poboljšanje izvedbe u složenim skriptama. Google Earth Engine zajednica
- Najbolji primjeri iz prakse za rukovanje velikim skupovima podataka navedeni su u literaturi o daljinskom očitavanju i vodičima dostupnim na sljedećoj poveznici. NASA Zemaljski opservatorij