ગૂગલ અર્થ એંજીન સ્ક્રિપ્ટ્સના એક્ઝેક્યુશન ટાઇમને ઑપ્ટિમાઇઝ કરવું
Google Earth Engine (GEE) એ મોટા પાયે જિયોસ્પેશિયલ ડેટાનું વિશ્લેષણ કરવા માટેનું એક શક્તિશાળી પ્લેટફોર્મ છે. જો કે, વપરાશકર્તાઓ ઘણીવાર અમલના સમય સાથે સમસ્યાઓનો સામનો કરે છે, પછી ભલે તેમની સ્ક્રિપ્ટ મૂળભૂત દેખાય. એક સ્ક્રિપ્ટ જે ચલાવવામાં થોડી મિનિટો લે છે તે ઉત્પાદકતાને અસર કરી શકે છે અને આંતરદૃષ્ટિમાં વિલંબ કરી શકે છે.
આ કિસ્સામાં, વપરાશકર્તાએ સેન્ટીનેલ અને લેન્ડસેટ 8 ડેટા પર પ્રક્રિયા કરવા માટે એક સરળ સ્ક્રિપ્ટ બનાવી છે. તેની સરળતા હોવા છતાં, સ્ક્રિપ્ટને એક્ઝેક્યુટ કરવામાં લગભગ 3-5 મિનિટ લાગે છે. આ કેમ થાય છે અને સ્ક્રિપ્ટને કેવી રીતે ઑપ્ટિમાઇઝ કરવી તે સમજવું કાર્યક્ષમ ડેટા પ્રોસેસિંગ માટે જરૂરી છે.
GEE સ્ક્રિપ્ટનું પ્રદર્શન ડેટા કદ, ફિલ્ટરિંગ અને કોમ્પ્યુટેશનલ જટિલતા સહિતના ઘણા પરિબળો પર આધારિત છે. એક્ઝેક્યુશન સમય ઘટાડવામાં સ્ક્રિપ્ટમાં અવરોધોને ઓળખવાનો સમાવેશ થાય છે, જેમ કે બિનજરૂરી કામગીરી અથવા મોટા ડેટાસેટ્સ જે પ્રક્રિયાને ધીમું કરે છે.
આ લેખ GEE માં ધીમા અમલના સમયના સંભવિત કારણોનું અન્વેષણ કરશે અને આપેલ સ્ક્રિપ્ટને ઑપ્ટિમાઇઝ કરવા માટે વ્યવહારુ ટીપ્સ પ્રદાન કરશે. આ વ્યૂહરચનાઓ અમલમાં મૂકીને, વપરાશકર્તાઓ તેમના ભૌગોલિક ડેટા વિશ્લેષણ કાર્યોની ઝડપ અને કામગીરીમાં નોંધપાત્ર સુધારો કરી શકે છે.
આદેશ | ઉપયોગનું ઉદાહરણ |
---|---|
normalizedDifference() | આ ફંક્શનનો ઉપયોગ બે બેન્ડ વચ્ચેના તફાવતની ગણતરી કરીને NDVI, NDWI અને NDSI જેવા સૂચકાંકોની ગણતરી કરવા માટે થાય છે. તે રિમોટ સેન્સિંગ વિશ્લેષણ માટે વિશિષ્ટ છે જ્યાં વનસ્પતિ, પાણી અને બરફ સૂચકાંકોની જરૂર હોય છે. |
filterBounds() | આપેલ ભૂમિતિને છેદે છે તેવી છબીઓને જ સમાવવા માટે છબી સંગ્રહને ફિલ્ટર કરે છે. આ કિસ્સામાં, તે સેટેલાઇટ ડેટાને રુચિના નિર્ધારિત બિંદુની આસપાસના વિસ્તાર સુધી પ્રતિબંધિત કરે છે, અપ્રસ્તુત ડેટાને બાકાત કરીને પ્રક્રિયાને વધુ કાર્યક્ષમ બનાવે છે. |
filterDate() | આ આદેશ છબી સંગ્રહને ચોક્કસ તારીખ શ્રેણી સુધી મર્યાદિત કરે છે. અમારી સમસ્યા માટે, સેન્ટીનેલ અને લેન્ડસેટ ડેટાસેટ્સ માટે સમાન સમયગાળા વચ્ચેના તફાવતોનું વિશ્લેષણ કરવું મહત્વપૂર્ણ છે. |
addBands() | સંગ્રહમાં દરેક ઈમેજમાં નવા ગણતરી કરેલ બેન્ડ્સ (જેમ કે NDVI, NDWI અને NDSI) ઉમેરે છે. અલગ ડેટાસેટ્સ બનાવ્યા વિના સમાન છબી સંગ્રહમાં બહુવિધ સૂચકાંકો લાગુ કરવા માટે આ જરૂરી છે. |
unmask() | નિર્દિષ્ટ મૂલ્ય સાથે માસ્ક કરેલા પિક્સેલ ભરે છે. અમારી સ્ક્રિપ્ટમાં, તેનો ઉપયોગ કાયમી પાણીના વિસ્તારોને અનમાસ્ક કરવા માટે થાય છે, તે સુનિશ્ચિત કરે છે કે સમગ્ર પ્રદેશમાં ડેટાની સતત પ્રક્રિયા થાય છે. |
reduce() | ઉલ્લેખિત રીડ્યુસર ફંક્શનનો ઉપયોગ કરીને ઇમેજ કલેક્શન ઘટાડે છે, જેમ કે ee.Reducer.percentile(). અહીં, તેનો ઉપયોગ સંયુક્ત ઇમેજ જનરેશનને ઑપ્ટિમાઇઝ કરીને, પિક્સેલ મૂલ્યોની 30મી પર્સેન્ટાઇલની ગણતરી કરવા માટે થાય છે. |
clip() | રુચિના ઉલ્લેખિત ક્ષેત્રની સીમાઓ પર છબીને ક્લિપ કરે છે. આ સુનિશ્ચિત કરે છે કે ફક્ત વિસ્તાર સાથે સંબંધિત ડેટા પર પ્રક્રિયા કરવામાં આવે છે, જે એક્ઝેક્યુશનને ઝડપી બનાવે છે. |
gt() | આ આદેશનો અર્થ 'મોટા કરતાં' છે અને તેનો ઉપયોગ થ્રેશોલ્ડ પર આધારિત દ્વિસંગી છબીઓ બનાવવા માટે થાય છે. આ કિસ્સામાં, તે 80% થી વધુ પાણીની ઘટનાવાળા વિસ્તારોને ઓળખે છે. |
map() | સંગ્રહમાંની દરેક છબી પર કાર્ય લાગુ કરે છે. અમારા ઉદાહરણમાં, તે વર્કફ્લોને સુવ્યવસ્થિત કરીને, સંગ્રહમાંની તમામ છબીઓમાં NDVI, NDWI, અને NDSI ની ગણતરી કરવા માટે addIndices ફંક્શન લાગુ કરે છે. |
સુધારેલ કાર્યક્ષમતા માટે GEE સ્ક્રિપ્ટ્સને ઑપ્ટિમાઇઝ કરવું
પ્રદાન કરેલ સ્ક્રિપ્ટમાં, ધ્યેય બે અલગ-અલગ સ્ત્રોતોમાંથી ઉપગ્રહ ઈમેજને કાઢવા અને પ્રક્રિયા કરવાનો છે: સેન્ટીનેલ અને લેન્ડસેટ. આ ગૂગલ અર્થ એન્જિન (GEE) પ્લેટફોર્મ વપરાશકર્તાઓને વિશાળ માત્રામાં સેટેલાઇટ ડેટાને ઍક્સેસ કરવાની અને ફિલ્ટરિંગ, ઇન્ડેક્સીંગ અને વિઝ્યુલાઇઝેશન જેવી વિવિધ કામગીરીઓ લાગુ કરવાની મંજૂરી આપે છે. આ સ્ક્રિપ્ટમાં વપરાતી મુખ્ય વિશેષતાઓમાંની એક છે સામાન્ય તફાવત() કાર્ય, જે NDVI, NDWI અને NDSI જેવા મહત્વપૂર્ણ સૂચકાંકોની ગણતરી કરવા માટે કાર્યરત છે. આ સૂચકાંકો નિર્દિષ્ટ પ્રદેશમાં વનસ્પતિ, પાણી અને બરફના આવરણનું વિશ્લેષણ કરવા માટે નિર્ણાયક છે. સ્ક્રિપ્ટ રસના બિંદુને વ્યાખ્યાયિત કરીને શરૂ થાય છે અને પ્રદાન કરેલા કોઓર્ડિનેટ્સનો ઉપયોગ કરીને તેના પર નકશાને કેન્દ્રમાં રાખે છે.
સ્ક્રિપ્ટ બહુવિધ ફિલ્ટર્સ લાગુ કરે છે, જેમ કે ફિલ્ટર તારીખ() અને ફિલ્ટરબાઉન્ડ્સ(), પ્રક્રિયા કરવામાં આવી રહેલા ડેટાની માત્રાને ઘટાડવા માટે, આમ એક્ઝેક્યુશન સમયને સુધારે છે. દાખલા તરીકે, ફિલ્ટરબાઉન્ડ્સ() સુનિશ્ચિત કરે છે કે માત્ર રુચિના ક્ષેત્રને છેદતી છબીઓ શામેલ છે, જ્યારે ફિલ્ટર તારીખ() છબીઓને ચોક્કસ તારીખ શ્રેણી સુધી મર્યાદિત કરે છે. સેન્ટીનેલ અને લેન્ડસેટ ઇમેજરી જેવા મોટા ડેટાસેટ્સ પર પ્રક્રિયા કરવા માટે આ જરૂરી છે, કારણ કે તે કોમ્પ્યુટેશનલ લોડને ઘટાડે છે. વધુમાં, ધ ફિલ્ટર ક્લાઉડ કવરેજ માટે વધુ સારી-ગુણવત્તાવાળા પૃથ્થકરણને સુનિશ્ચિત કરીને વધુ પડતા ક્લાઉડ ધરાવતી છબીઓને કાઢી નાખવામાં મદદ કરે છે.
સ્ક્રિપ્ટનું એક મહત્વનું પાસું છે એડબેન્ડ્સ() ફંક્શન, જે કલ્પનામાં સૂચકાંકો (NDVI, NDWI, NDSI) ઉમેરે છે, જે તેમને વધુ વિશ્લેષણ માટે સુલભ બનાવે છે. સ્ક્રિપ્ટમાં JRC ગ્લોબલ સરફેસ વોટર ડેટાસેટના ડેટાનો ઉપયોગ કરીને કાયમી વોટર માસ્ક પણ સામેલ છે. વોટર માસ્ક એવા વિસ્તારોને બાકાત રાખવામાં મદદ કરે છે જ્યાં પાણીની વધુ માત્રા હોય છે (80% થી વધુ), જે અન્યથા વનસ્પતિ અને બરફના વિશ્લેષણના પરિણામોને ત્રાંસી કરી શકે છે. આ દ્વારા કરવામાં આવે છે gt() અને અનમાસ્ક () ફંક્શન્સ, જે સ્ક્રિપ્ટને પિક્સેલ મૂલ્યોના આધારે વિસ્તારોને અલગ કરવાની મંજૂરી આપે છે.
છેલ્લે, સ્ક્રિપ્ટ ઉપયોગ કરે છે ઘટાડો() પસંદ કરેલ પિક્સેલ મૂલ્યોની 30મી પર્સેન્ટાઇલ રજૂ કરતી સંયુક્ત છબી બનાવવા માટે પર્સેન્ટાઇલ રીડ્યુસર સાથે કાર્ય. આ સંયુક્ત છબી પછી રસના ક્ષેત્રમાં ક્લિપ કરવામાં આવે છે અને તેનો ઉપયોગ કરીને નકશા પર વિઝ્યુઅલાઈઝ કરવામાં આવે છે ક્લિપ() કાર્ય સેન્ટીનેલ અને લેન્ડસેટ કમ્પોઝીટ બંને માટે વિઝ્યુઅલ પેરામીટર્સ વ્યાખ્યાયિત કરવામાં આવ્યા છે, જે વપરાશકર્તાને યોગ્ય રંગ સેટિંગ્સ સાથે જોઈ શકે છે. ફિલ્ટરિંગ, માસ્કિંગ અને કમ્પોઝિટ જનરેશન જેવા વિવિધ ઇમેજ પ્રોસેસિંગ સ્ટેપ્સને જોડીને, આ સ્ક્રિપ્ટ સેટેલાઇટ ઇમેજરીનું પૃથ્થકરણ કરવાની એક કાર્યક્ષમ રીત પૂરી પાડે છે, જોકે અમલના સમયને ઘટાડવા માટે વધુ ઑપ્ટિમાઇઝેશન લાગુ કરી શકાય છે.
ઝડપી પ્રક્રિયા માટે Google અર્થ એન્જિન સ્ક્રિપ્ટ એક્ઝેક્યુશનને ઑપ્ટિમાઇઝ કરી રહ્યું છે
આ સોલ્યુશન ડેટા પુનઃપ્રાપ્તિનો સમય ઘટાડીને અને કામગીરીને સરળ બનાવીને પ્રભાવને શ્રેષ્ઠ બનાવવા પર ભાર સાથે Google અર્થ એંજીન (GEE) નો ઉપયોગ કરે છે. JavaScript નો ઉપયોગ સ્ક્રિપ્ટીંગ ભાષા તરીકે થાય છે.
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));
સ્ક્રિપ્ટ વિલંબને ઘટાડવા માટે GEE માટે કાર્યક્ષમ ડેટા પ્રોસેસિંગનો ઉપયોગ કરવો
આ સોલ્યુશન સૂચકાંકોની ગણતરીઓ અને થ્રેશોલ્ડને જોડીને ઑપ્ટિમાઇઝ ડેટા હેન્ડલિંગને એકીકૃત કરે છે. જાવાસ્ક્રિપ્ટ Google અર્થ એન્જિન પ્રક્રિયા માટે લાગુ કરવામાં આવે છે.
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);
રિમોટ સેન્સિંગ સ્ક્રિપ્ટ્સની કાર્યક્ષમતામાં સુધારો
Google Earth Engine (GEE) સ્ક્રિપ્ટ્સ સાથે કામ કરતી વખતે એક મુખ્ય વિચારણા એ સુનિશ્ચિત કરવાનું છે કે ઑપરેશન્સ અસરકારક રીતે સંચાલિત થાય છે. જ્યારે પર્યાવરણીય વિશ્લેષણમાં સેન્ટીનેલ અને લેન્ડસેટ જેવા મોટા ડેટાસેટ્સનો ઉપયોગ સામાન્ય છે, ત્યારે ડેટાની તીવ્ર માત્રા સ્ક્રિપ્ટના અમલીકરણને ધીમું કરી શકે છે. પ્રદર્શન સુધારવા માટેની એક પદ્ધતિ એ સુનિશ્ચિત કરવાની છે કે માત્ર જરૂરી ડેટા પર પ્રક્રિયા કરવામાં આવી રહી છે. જેવા આદેશોનો ઉપયોગ કરવો ફિલ્ટરબાઉન્ડ્સ() અને ફિલ્ટર તારીખ() ડેટાસેટનું કદ ઓછું કરે છે, જે ગણતરીઓને સુવ્યવસ્થિત કરવામાં મદદ કરે છે. ચોક્કસ તારીખ શ્રેણીઓ અને ભૌગોલિક પ્રદેશો પસંદ કરવાથી અમલના સમયને નોંધપાત્ર રીતે ઘટાડી શકાય છે.
GEE સ્ક્રિપ્ટ પ્રદર્શનને અસર કરતું બીજું પાસું એ છે કે ડેટાની પ્રક્રિયા કેવી રીતે થાય છે. સ્ક્રિપ્ટ ઉદાહરણ NDVI, NDWI, અને NDSI જેવા મહત્વપૂર્ણ સૂચકાંકોની ગણતરી કરવા માટે ફંક્શનનો ઉપયોગ કરે છે. આ સૂચકાંકો ઇમેજ કલેક્શનમાં બેન્ડ તરીકે ઉમેરવામાં આવે છે, જે વધુ સંપૂર્ણ વિશ્લેષણ માટે પરવાનગી આપે છે. જો કે, પ્રથમ ફિલ્ટર કર્યા વિના આખા ડેટાસેટ પર આવા કાર્યો લાગુ કરવાની સામાન્ય ભૂલ છે. અપ્રસ્તુત ડેટા પર બિનજરૂરી ગણતરીઓ ટાળવા માટે ફિલ્ટર કર્યા પછી આવી કામગીરી લાગુ કરવી મહત્વપૂર્ણ છે.
વિઝ્યુલાઇઝેશન એ સ્ક્રિપ્ટનું બીજું તત્વ છે જેને ઑપ્ટિમાઇઝ કરી શકાય છે. ઘણા બધા સ્તરો અથવા જટિલ વિઝ્યુલાઇઝેશન ઉમેરવાથી પ્રક્રિયાનો સમય બગડી શકે છે. સ્ક્રિપ્ટ કંપોઝીટ્સને રેન્ડર કરવા માટે પૂર્વવ્યાખ્યાયિત વિઝ્યુઅલ પરિમાણોનો ઉપયોગ કરે છે, પરંતુ ચોક્કસ સ્તરોને અક્ષમ કરીને પ્રદર્શનને સુધારી શકાય છે સિવાય કે તે સ્પષ્ટપણે જરૂરી હોય. આ તેની કાર્યક્ષમતા જાળવી રાખીને સ્ક્રિપ્ટને હળવા રાખવામાં મદદ કરે છે. ઉપયોગ કરીને ક્લિપ() આદેશો એ પણ સુનિશ્ચિત કરે છે કે માત્ર જરૂરી વિસ્તાર રેન્ડર કરવામાં આવે છે, સમગ્ર પ્રક્રિયા બોજને ઘટાડે છે.
ગૂગલ અર્થ એંજીન સ્ક્રિપ્ટને ઑપ્ટિમાઇઝ કરવા વિશે વારંવાર પૂછાતા પ્રશ્નો
- હું મારી GEE સ્ક્રિપ્ટ્સના પ્રદર્શનને કેવી રીતે સુધારી શકું?
- નો ઉપયોગ ઑપ્ટિમાઇઝ કરો filterDate(), filterBounds(), અને પ્રક્રિયા કરતા પહેલા તમારા ડેટાસેટનું કદ ઘટાડવું.
- મારી GEE સ્ક્રિપ્ટને ચાલવામાં આટલો સમય કેમ લાગે છે?
- મોટા ડેટાસેટ્સ અને જટિલ ગણતરીઓ અમલીકરણને ધીમું કરી શકે છે. ઉપયોગ કરો reduce() અને clip() પ્રક્રિયાને સંબંધિત વિસ્તારોમાં મર્યાદિત કરવા.
- શું હું GEE માં પ્રક્રિયા કરાયેલી છબીઓની સંખ્યા ઘટાડી શકું?
- હા, અરજી કરીને filter() મેઘ કવરેજ માટે અને filterDate() ચોક્કસ સમયગાળા પર ધ્યાન કેન્દ્રિત કરવા માટે.
- હું મારી સ્ક્રિપ્ટમાં અનુક્રમણિકાની ગણતરીઓને કેવી રીતે સરળ બનાવી શકું?
- જેવા ફંક્શનનો ઉપયોગ કરો addBands() એક પગલામાં બહુવિધ સૂચકાંકો (દા.ત., NDVI, NDWI) ઉમેરીને સુવ્યવસ્થિત કરવા.
- શું ફક્ત આવશ્યક સ્તરોની કલ્પના કરવી શક્ય છે?
- હા, બિનજરૂરી સ્તરોને અક્ષમ કરો અને તેની સાથે સરળ વિઝ્યુલાઇઝેશન પરિમાણોનો ઉપયોગ કરો Map.addLayer() વધુ સારી કામગીરી માટે.
GEE સ્ક્રિપ્ટ્સને ઑપ્ટિમાઇઝ કરવા પર અંતિમ વિચારો
Google અર્થ એંજીન સ્ક્રિપ્ટ્સને ઑપ્ટિમાઇઝ કરવા માટે મોટા ડેટાસેટ્સને અસરકારક રીતે હેન્ડલ કરવા, ફિલ્ટર્સને વહેલામાં લાગુ કરવા અને બિનજરૂરી ડેટા ઑપરેશન ઘટાડવાનો સમાવેશ થાય છે. દ્વારા ફિલ્ટરિંગ જેવા આવશ્યક ક્ષેત્રો પર ધ્યાન કેન્દ્રિત કરવું તારીખ અને સ્થાન પ્રક્રિયાના સમયને નોંધપાત્ર રીતે ઘટાડી શકે છે.
જેવા કાર્યોનો સમાવેશ કરીને બેન્ડ ઉમેરો અને અપ્રસ્તુત ડેટાને દૂર કરવા માટે થ્રેશોલ્ડ માસ્કનો ઉપયોગ કરીને, સ્ક્રિપ્ટ પ્રદર્શનને વધુ સુધારી શકાય છે. આ તકનીકો અમલીકરણને સુવ્યવસ્થિત કરી શકે છે, ઝડપી પરિણામો પ્રદાન કરે છે અને Google અર્થ એન્જિન પ્લેટફોર્મનો વધુ સારો ઉપયોગ કરી શકે છે.
Google અર્થ એન્જિન સ્ક્રિપ્ટને ઑપ્ટિમાઇઝ કરવા માટે સ્ત્રોતો અને સંદર્ભો
- આ લેખ સત્તાવાર Google અર્થ એંજીન દસ્તાવેજીકરણ પર આધારિત સામગ્રીનો ઉપયોગ કરીને બનાવવામાં આવ્યો હતો, જે સ્ક્રિપ્ટ ઓપ્ટિમાઇઝેશન તકનીકોમાં આંતરદૃષ્ટિ પ્રદાન કરે છે. Google અર્થ એન્જિન માર્ગદર્શિકાઓ
- જટિલ સ્ક્રિપ્ટ્સમાં પ્રદર્શન સુધારવા માટે ચર્ચાઓ અને ઉકેલો ઓફર કરતી GEE સમુદાય ફોરમમાંથી વધારાની માહિતી એકત્ર કરવામાં આવી હતી. Google અર્થ એન્જિન સમુદાય
- મોટા ડેટાસેટ્સને હેન્ડલ કરવા માટેની શ્રેષ્ઠ પદ્ધતિઓ નીચેની લિંક પર ઉપલબ્ધ રિમોટ સેન્સિંગ સાહિત્ય અને ટ્યુટોરિયલ્સમાંથી સંદર્ભિત કરવામાં આવી હતી. નાસા અર્થ ઓબ્ઝર્વેટરી