Google Earth Engine skriptu izpildes laika optimizēšana
Google Earth Engine (GEE) ir jaudīga platforma liela mēroga ģeotelpisko datu analīzei. Tomēr lietotāji bieži saskaras ar problēmām ar izpildes laiku, pat ja viņu skripti šķiet vienkārši. Skripts, kura izpildei nepieciešamas vairākas minūtes, var ietekmēt produktivitāti un aizkavēt ieskatus.
Šajā gadījumā lietotājs ir izveidojis vienkāršu skriptu Sentinel un Landsat 8 datu apstrādei. Neskatoties uz vienkāršību, skripta izpilde aizņem apmēram 3–5 minūtes. Efektīvai datu apstrādei ir svarīgi saprast, kāpēc tas notiek un kā optimizēt skriptu.
GEE skripta veiktspēja ir atkarīga no vairākiem faktoriem, tostarp datu lieluma, filtrēšanas un skaitļošanas sarežģītības. Izpildes laika samazināšana ietver skripta vājo vietu identificēšanu, piemēram, nevajadzīgas darbības vai lielas datu kopas, kas palēnina apstrādi.
Šajā rakstā tiks pētīti iespējamie lēna izpildes laika cēloņi GEE un sniegti praktiski padomi dotā skripta optimizēšanai. Ieviešot šīs stratēģijas, lietotāji var ievērojami uzlabot savu ģeotelpisko datu analīzes uzdevumu ātrumu un veiktspēju.
Pavēli | Lietošanas piemērs |
---|---|
normalizedDifference() | Šo funkciju izmanto, lai aprēķinātu tādus indeksus kā NDVI, NDWI un NDSI, aprēķinot starpību starp divām joslām, dalītu ar to summu. Tas ir raksturīgs attālās uzrādes analīzei, kur ir nepieciešami veģetācijas, ūdens un sniega indeksi. |
filterBounds() | Filtrē attēlu kolekciju, lai iekļautu tikai attēlus, kas krustojas ar noteiktu ģeometriju. Šajā gadījumā tas ierobežo satelīta datus apgabalā ap definēto interešu punktu, padarot apstrādi efektīvāku, izslēdzot nebūtiskus datus. |
filterDate() | Šī komanda ierobežo attēlu kolekciju līdz noteiktam datumu diapazonam. Mūsu problēmai ir ļoti svarīgi analizēt atšķirības starp vienu un to pašu laika periodu Sentinel un Landsat datu kopām. |
addBands() | Katram kolekcijas attēlam pievieno jaunas aprēķinātās joslas (piemēram, NDVI, NDWI un NDSI). Tas ir būtiski, lai vienai attēlu kolekcijai lietotu vairākus indeksus, neveidojot atsevišķas datu kopas. |
unmask() | Aizpilda maskētos pikseļus ar noteiktu vērtību. Mūsu skriptā tas tiek izmantots, lai atmaskotu pastāvīgus ūdens apgabalus, nodrošinot datu konsekventu apstrādi visā reģionā. |
reduce() | Samazina attēlu kolekciju, izmantojot noteiktu reduktora funkciju, piemēram, ee.Reducer.percentile(). Šeit to izmanto, lai aprēķinātu pikseļu vērtību 30. procentili, optimizējot salikto attēlu ģenerēšanu. |
clip() | Apgriež attēlu līdz norādītā interesējošā reģiona robežām. Tas nodrošina, ka tiek apstrādāti tikai ar teritoriju saistītie dati, kas paātrina izpildi. |
gt() | Šī komanda apzīmē “lielāks par” un tiek izmantota, lai izveidotu binārus attēlus, pamatojoties uz slieksni. Šajā gadījumā tas identificē apgabalus, kuros ūdens sastopamība pārsniedz 80%. |
map() | Katram kolekcijas attēlam tiek piemērota funkcija. Mūsu piemērā tā izmanto funkciju addIndices, lai aprēķinātu NDVI, NDWI un NDSI visiem kolekcijas attēliem, racionalizējot darbplūsmu. |
GEE skriptu optimizēšana, lai uzlabotu efektivitāti
Nodrošinātā skripta mērķis ir iegūt un apstrādāt satelītattēlus no diviem dažādiem avotiem: Sentinel un Landsat. The platforma ļauj lietotājiem piekļūt milzīgam satelītu datu apjomam un veikt dažādas darbības, piemēram, filtrēšanu, indeksēšanu un vizualizāciju. Viena no galvenajām šajā skriptā izmantotajām funkcijām ir funkcija, ko izmanto, lai aprēķinātu svarīgus indeksus, piemēram, NDVI, NDWI un NDSI. Šie indeksi ir būtiski, lai analizētu veģetāciju, ūdeni un sniega segu norādītajā reģionā. Skripts sākas ar interesējošā punkta definēšanu un centrē karti uz tā, izmantojot norādītās koordinātas.
Skripts izmanto vairākus filtrus, piemēram un , lai samazinātu apstrādājamo datu apjomu, tādējādi uzlabojot izpildes laiku. Piemēram, filterBounds() nodrošina, ka tiek iekļauti tikai tie attēli, kas krustojas interesējošo zonu filtra datums() ierobežo attēlus līdz noteiktam datumu diapazonam. Tas ir būtiski, lai apstrādātu lielas datu kopas, piemēram, Sentinel un Landsat attēlus, jo tas samazina skaitļošanas slodzi. Turklāt, mākoņu pārklājums palīdz atmest attēlus, kuros ir pārāk daudz mākoņu, nodrošinot labākas kvalitātes analīzi.
Viens svarīgs skripta aspekts ir funkcija, kas attēliem pievieno aprēķinātos indeksus (NDVI, NDWI, NDSI), padarot tos pieejamus turpmākai analīzei. Skriptā ir iekļauta arī pastāvīga ūdens maska, izmantojot datus no JRC globālās virsmas ūdens datu kopas. Ūdens maska palīdz izslēgt apgabalus, kuros ir daudz ūdens (vairāk nekā 80%), kas citādi varētu izkropļot veģetācijas un sniega analīzes rezultātus. Tas tiek darīts, izmantojot un funkcijas, kas ļauj skriptam izolēt apgabalus, pamatojoties uz pikseļu vērtībām.
Visbeidzot, skripts izmanto funkcija ar procentiļu reduktoru, lai ģenerētu saliktu attēlu, kas attēlo atlasīto pikseļu vērtību 30. procentili. Pēc tam šis saliktais attēls tiek apgriezts interesējošajā reģionā un tiek vizualizēts kartē, izmantojot funkciju. Vizuālie parametri ir definēti gan Sentinel, gan Landsat kompozītmateriāliem, ļaujot lietotājam tos apskatīt ar atbilstošiem krāsu iestatījumiem. Apvienojot dažādas attēlu apstrādes darbības, piemēram, filtrēšanu, maskēšanu un kompozītmateriālu ģenerēšanu, šis skripts nodrošina efektīvu veidu, kā analizēt satelītattēlus, lai gan varētu izmantot papildu optimizāciju, lai samazinātu izpildes laiku.
Google Earth Engine skripta izpildes optimizēšana ātrākai apstrādei
Šis risinājums izmanto Google Earth Engine (GEE), liekot uzsvaru uz veiktspējas optimizēšanu, samazinot datu izguves laiku un vienkāršojot darbības. JavaScript tiek izmantots kā skriptu valoda.
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));
Efektīvas datu apstrādes izmantošana GEE, lai samazinātu skripta aizkaves
Šis risinājums integrē optimizētu datu apstrādi, apvienojot indeksu aprēķinus un sliekšņus. Google Earth Engine apstrādei tiek izmantots JavaScript.
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);
Tālvadības skriptu efektivitātes uzlabošana
Viens no galvenajiem apsvērumiem, strādājot ar Google Earth Engine (GEE) skriptiem, ir nodrošināt, lai darbības tiktu apstrādātas efektīvi. Lai gan vides analīzē plaši tiek izmantotas lielas datu kopas, piemēram, Sentinel un Landsat, milzīgais datu apjoms var palēnināt skripta izpildi. Viena no metodēm veiktspējas uzlabošanai ir nodrošināt, ka tiek apstrādāti tikai nepieciešamie dati. Izmantojot tādas komandas kā un samazina datu kopas lielumu, kas palīdz racionalizēt aprēķinus. Konkrētu datumu diapazonu un ģeogrāfisko reģionu atlasīšana var ievērojami samazināt izpildes laiku.
Vēl viens aspekts, kas ietekmē GEE skripta veiktspēju, ir datu apstrāde. Skripta piemērā tiek izmantota funkcija, lai aprēķinātu svarīgus indeksus, piemēram, NDVI, NDWI un NDSI. Šie indeksi tiek pievienoti attēlu kolekcijām kā joslas, kas ļauj veikt rūpīgāku analīzi. Tomēr izplatīta kļūda ir šādu funkciju lietošana visai datu kopai, vispirms nefiltrējot. Ir ļoti svarīgi lietot šādas darbības pēc filtrēšanas, lai izvairītos no nevajadzīgiem aprēķiniem par neatbilstošiem datiem.
Vizualizācija ir vēl viens skripta elements, ko var optimizēt. Pārāk daudzu slāņu vai sarežģītu vizualizāciju pievienošana var saīsināt apstrādes laiku. Skripts izmanto iepriekš definētus vizuālos parametrus, lai renderētu kompozītus, taču veiktspēju var uzlabot, atspējojot noteiktus slāņus, ja vien tie nav īpaši nepieciešami. Tas palīdz saglabāt skriptu vieglu, vienlaikus saglabājot tā funkcionalitāti. Izmantojot komandas arī nodrošina, ka tiek atveidots tikai nepieciešamais laukums, samazinot kopējo apstrādes slogu.
- Kā uzlabot savu GEE skriptu veiktspēju?
- Optimizējiet izmantošanu , , un pirms apstrādes samaziniet datu kopas lielumu.
- Kāpēc manam GEE skriptam ir nepieciešams tik ilgs laiks?
- Lielas datu kopas un sarežģīti aprēķini var palēnināt izpildi. Izmantot un ierobežot apstrādi attiecīgajās jomās.
- Vai es varu samazināt GEE apstrādāto attēlu skaitu?
- Jā, piesakoties mākoņu pārklājumam un koncentrēties uz konkrētiem periodiem.
- Kā es varu vienkāršot indeksa aprēķinus savā skriptā?
- Izmantojiet tādu funkciju kā lai racionalizētu vairāku indeksu (piemēram, NDVI, NDWI) pievienošanu vienā darbībā.
- Vai ir iespējams vizualizēt tikai būtiskos slāņus?
- Jā, atspējojiet nevajadzīgos slāņus un izmantojiet vienkāršotus vizualizācijas parametrus labākai veiktspējai.
Google Earth Engine skriptu optimizēšana ietver lielu datu kopu efektīvu apstrādi, filtru agrīnu lietošanu un nevajadzīgu datu darbību samazināšanu. Koncentrēšanās uz būtiskām jomām, piemēram, filtrēšana pēc un atrašanās vieta var ievērojami samazināt apstrādes laiku.
Iekļaujot tādas funkcijas kā un izmantojot sliekšņa maskas, lai novērstu nebūtiskus datus, skripta veiktspēju var vēl vairāk uzlabot. Šīs metodes var racionalizēt izpildi, piedāvājot ātrākus rezultātus un labāku Google Earth Engine platformas izmantošanu.
- Šis raksts tika izveidots, izmantojot saturu, kura pamatā ir oficiālā Google Earth Engine dokumentācija, kas sniedz ieskatu skriptu optimizācijas paņēmienos. Google Earth programmas ceļveži
- Papildu informācija tika iegūta no GEE kopienas foruma, piedāvājot diskusijas un risinājumus sarežģītu skriptu veiktspējas uzlabošanai. Google Earth Engine kopiena
- Paraugprakse lielu datu kopu apstrādei tika minēta attālās uzrādes literatūrā un apmācībās, kas pieejamas šajā saitē. NASA Zemes observatorija