अपने Google Earth इंजन JavaScript को तेज़ कैसे चलाएं

Optimization

Google Earth इंजन स्क्रिप्ट के निष्पादन समय को अनुकूलित करना

Google Earth इंजन (GEE) बड़े पैमाने पर भू-स्थानिक डेटा का विश्लेषण करने के लिए एक शक्तिशाली मंच है। हालाँकि, उपयोगकर्ताओं को अक्सर निष्पादन समय के साथ समस्याओं का सामना करना पड़ता है, भले ही उनकी स्क्रिप्ट बुनियादी लगती हो। एक स्क्रिप्ट जिसे चलने में कई मिनट लगते हैं, उत्पादकता को प्रभावित कर सकती है और अंतर्दृष्टि में देरी कर सकती है।

इस मामले में, एक उपयोगकर्ता ने सेंटिनल और लैंडसैट 8 डेटा को संसाधित करने के लिए एक सरल स्क्रिप्ट बनाई है। अपनी सरलता के बावजूद, स्क्रिप्ट को निष्पादित होने में लगभग 3-5 मिनट लगते हैं। यह समझना कि ऐसा क्यों होता है और स्क्रिप्ट को कैसे अनुकूलित किया जाए, कुशल डेटा प्रोसेसिंग के लिए आवश्यक है।

GEE स्क्रिप्ट का प्रदर्शन डेटा आकार, फ़िल्टरिंग और कम्प्यूटेशनल जटिलता सहित कई कारकों पर निर्भर करता है। निष्पादन समय को कम करने में स्क्रिप्ट के भीतर बाधाओं की पहचान करना शामिल है, जैसे अनावश्यक संचालन या बड़े डेटासेट जो प्रसंस्करण को धीमा कर देते हैं।

यह आलेख GEE में धीमे निष्पादन समय के संभावित कारणों का पता लगाएगा और दी गई स्क्रिप्ट को अनुकूलित करने के लिए व्यावहारिक सुझाव प्रदान करेगा। इन रणनीतियों को लागू करके, उपयोगकर्ता अपने भू-स्थानिक डेटा विश्लेषण कार्यों की गति और प्रदर्शन में उल्लेखनीय सुधार कर सकते हैं।

आज्ञा उपयोग का उदाहरण
normalizedDifference() इस फ़ंक्शन का उपयोग दो बैंडों के बीच अंतर की गणना करके, उनके योग से विभाजित करके एनडीवीआई, एनडीडब्ल्यूआई और एनडीएसआई जैसे सूचकांकों की गणना करने के लिए किया जाता है। यह सुदूर संवेदन विश्लेषण के लिए विशिष्ट है जहां वनस्पति, जल और बर्फ सूचकांक की आवश्यकता होती है।
filterBounds() किसी छवि संग्रह को केवल उन छवियों को शामिल करने के लिए फ़िल्टर करता है जो किसी दिए गए ज्यामिति को प्रतिच्छेद करती हैं। इस मामले में, यह उपग्रह डेटा को रुचि के परिभाषित बिंदु के आसपास के क्षेत्र तक सीमित कर देता है, जिससे अप्रासंगिक डेटा को छोड़कर प्रसंस्करण अधिक कुशल हो जाता है।
filterDate() यह आदेश छवि संग्रह को एक विशिष्ट दिनांक सीमा तक सीमित करता है। हमारी समस्या के लिए, सेंटिनल और लैंडसैट डेटासेट के लिए समान समय अवधि के बीच अंतर का विश्लेषण करना महत्वपूर्ण है।
addBands() संग्रह में प्रत्येक छवि में नए परिकलित बैंड (जैसे NDVI, NDWI और NDSI) जोड़ता है। अलग-अलग डेटासेट बनाए बिना एक ही छवि संग्रह में एकाधिक सूचकांक लागू करने के लिए यह आवश्यक है।
unmask() मास्क्ड पिक्सेल को एक निर्दिष्ट मान से भरता है। हमारी स्क्रिप्ट में, इसका उपयोग स्थायी जल क्षेत्रों को उजागर करने के लिए किया जाता है, जिससे यह सुनिश्चित होता है कि डेटा पूरे क्षेत्र में लगातार संसाधित होता है।
reduce() निर्दिष्ट रिड्यूसर फ़ंक्शन, जैसे ee.Reducer.percentile() का उपयोग करके छवि संग्रह को कम करता है। यहां, इसका उपयोग समग्र छवि निर्माण को अनुकूलित करते हुए, पिक्सेल मानों के 30वें प्रतिशतक की गणना करने के लिए किया जाता है।
clip() किसी छवि को रुचि के निर्दिष्ट क्षेत्र की सीमाओं पर क्लिप करता है। यह सुनिश्चित करता है कि केवल क्षेत्र से संबंधित डेटा ही संसाधित किया जाता है, जिससे निष्पादन में तेजी आती है।
gt() यह कमांड 'ग्रेटर दैन' के लिए है और इसका उपयोग थ्रेशोल्ड के आधार पर बाइनरी इमेज बनाने के लिए किया जाता है। इस मामले में, यह 80% से अधिक जल उपस्थिति वाले क्षेत्रों की पहचान करता है।
map() संग्रह में प्रत्येक छवि पर एक फ़ंक्शन लागू करता है। हमारे उदाहरण में, यह वर्कफ़्लो को सुव्यवस्थित करते हुए, संग्रह में सभी छवियों पर NDVI, NDWI और NDSI की गणना करने के लिए addIndices फ़ंक्शन लागू करता है।

बेहतर दक्षता के लिए जीईई स्क्रिप्ट का अनुकूलन

प्रदान की गई स्क्रिप्ट में, लक्ष्य दो अलग-अलग स्रोतों से उपग्रह इमेजरी को निकालना और संसाधित करना है: सेंटिनल और लैंडसैट। प्लेटफ़ॉर्म उपयोगकर्ताओं को बड़ी मात्रा में सैटेलाइट डेटा तक पहुंचने और फ़िल्टरिंग, इंडेक्सिंग और विज़ुअलाइज़ेशन जैसे विभिन्न संचालन लागू करने की अनुमति देता है। इस स्क्रिप्ट में प्रयुक्त प्रमुख विशेषताओं में से एक है फ़ंक्शन, जिसका उपयोग एनडीवीआई, एनडीडब्ल्यूआई और एनडीएसआई जैसे महत्वपूर्ण सूचकांकों की गणना करने के लिए किया जाता है। ये सूचकांक निर्दिष्ट क्षेत्र में वनस्पति, पानी और बर्फ के आवरण का विश्लेषण करने के लिए महत्वपूर्ण हैं। स्क्रिप्ट रुचि के एक बिंदु को परिभाषित करने से शुरू होती है और प्रदान किए गए निर्देशांक का उपयोग करके मानचित्र को उस पर केंद्रित करती है।

स्क्रिप्ट कई फ़िल्टर लागू करती है, जैसे और , संसाधित किए जा रहे डेटा की मात्रा को कम करने के लिए, इस प्रकार निष्पादन समय में सुधार होगा। उदाहरण के लिए, फ़िल्टरबाउंड() यह सुनिश्चित करता है कि केवल रुचि के क्षेत्र को प्रतिच्छेद करने वाली छवियां ही शामिल की गई हैं फ़िल्टरदिनांक() छवियों को एक विशिष्ट दिनांक सीमा तक सीमित करता है। यह सेंटिनल और लैंडसैट इमेजरी जैसे बड़े डेटासेट को संसाधित करने के लिए आवश्यक है, क्योंकि यह कम्प्यूटेशनल लोड को कम करता है। इसके अतिरिक्त, क्लाउड कवरेज उन छवियों को हटाने में मदद करता है जिनमें बहुत अधिक क्लाउड है, जिससे बेहतर गुणवत्ता वाला विश्लेषण सुनिश्चित होता है।

स्क्रिप्ट का एक महत्वपूर्ण पहलू है फ़ंक्शन, जो इमेजरी में परिकलित सूचकांक (एनडीवीआई, एनडीडब्ल्यूआई, एनडीएसआई) जोड़ता है, जिससे उन्हें आगे के विश्लेषण के लिए सुलभ बनाया जा सकता है। स्क्रिप्ट में जेआरसी ग्लोबल सरफेस वॉटर डेटासेट के डेटा का उपयोग करके एक स्थायी वॉटर मास्क भी शामिल है। वॉटर मास्क उन क्षेत्रों को बाहर करने में मदद करता है जहां पानी की अधिकता (80% से अधिक) है, जो अन्यथा वनस्पति और बर्फ विश्लेषण के परिणामों को खराब कर सकता है। के माध्यम से किया जाता है और फ़ंक्शंस, जो स्क्रिप्ट को पिक्सेल मानों के आधार पर क्षेत्रों को अलग करने की अनुमति देते हैं।

अंत में, स्क्रिप्ट का उपयोग करता है एक समग्र छवि उत्पन्न करने के लिए प्रतिशतक रिड्यूसर के साथ कार्य करें जो चयनित पिक्सेल मानों के 30वें प्रतिशतक का प्रतिनिधित्व करता है। फिर इस समग्र छवि को रुचि के क्षेत्र में क्लिप किया जाता है और इसका उपयोग करके मानचित्र पर देखा जाता है समारोह। दृश्य पैरामीटर सेंटिनल और लैंडसैट कंपोजिट दोनों के लिए परिभाषित किए गए हैं, जिससे उपयोगकर्ता उन्हें उचित रंग सेटिंग्स के साथ देख सकता है। फ़िल्टरिंग, मास्किंग और समग्र पीढ़ी जैसे विभिन्न छवि प्रसंस्करण चरणों को मिलाकर, यह स्क्रिप्ट उपग्रह इमेजरी का विश्लेषण करने का एक कुशल तरीका प्रदान करती है, हालांकि निष्पादन समय को कम करने के लिए आगे अनुकूलन लागू किया जा सकता है।

तेज़ प्रोसेसिंग के लिए Google Earth इंजन स्क्रिप्ट निष्पादन को अनुकूलित करना

यह समाधान डेटा पुनर्प्राप्ति समय को कम करके और संचालन को सरल बनाकर प्रदर्शन को अनुकूलित करने पर जोर देने के साथ Google Earth इंजन (GEE) का उपयोग करता है। जावास्क्रिप्ट का उपयोग स्क्रिप्टिंग भाषा के रूप में किया जाता है।

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 Earth इंजन प्रसंस्करण के लिए जावास्क्रिप्ट लागू किया जाता है।

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 इंजन (GEE) स्क्रिप्ट के साथ काम करते समय एक महत्वपूर्ण विचार यह सुनिश्चित करना है कि संचालन कुशलतापूर्वक किया जाए। जबकि पर्यावरण विश्लेषण में सेंटिनल और लैंडसैट जैसे बड़े डेटासेट का उपयोग आम है, डेटा की विशाल मात्रा स्क्रिप्ट निष्पादन को धीमा कर सकती है। प्रदर्शन में सुधार करने का एक तरीका यह सुनिश्चित करना है कि केवल आवश्यक डेटा संसाधित किया जा रहा है। जैसे कमांड का उपयोग करना और डेटासेट आकार को न्यूनतम करता है, जो गणनाओं को सुव्यवस्थित करने में मदद करता है। विशिष्ट दिनांक सीमाओं और भौगोलिक क्षेत्रों का चयन करने से निष्पादन समय काफी कम हो सकता है।

एक अन्य पहलू जो जीईई स्क्रिप्ट के प्रदर्शन को प्रभावित करता है वह यह है कि डेटा को कैसे संसाधित किया जाता है। स्क्रिप्ट उदाहरण एनडीवीआई, एनडीडब्ल्यूआई और एनडीएसआई जैसे महत्वपूर्ण सूचकांकों की गणना करने के लिए एक फ़ंक्शन का उपयोग करता है। इन सूचकांकों को छवि संग्रह में बैंड के रूप में जोड़ा जाता है, जो अधिक गहन विश्लेषण की अनुमति देता है। हालाँकि, एक सामान्य गलती ऐसे कार्यों को पहले फ़िल्टर किए बिना संपूर्ण डेटासेट पर लागू करना है। अप्रासंगिक डेटा पर अनावश्यक गणनाओं से बचने के लिए फ़िल्टर करने के बाद ऐसे ऑपरेशन लागू करना महत्वपूर्ण है।

विज़ुअलाइज़ेशन स्क्रिप्ट का एक अन्य तत्व है जिसे अनुकूलित किया जा सकता है। बहुत अधिक परतें या जटिल विज़ुअलाइज़ेशन जोड़ने से प्रसंस्करण समय कम हो सकता है। कंपोजिट को प्रस्तुत करने के लिए स्क्रिप्ट पूर्वनिर्धारित दृश्य मापदंडों का उपयोग करती है, लेकिन कुछ परतों को अक्षम करके प्रदर्शन में सुधार किया जा सकता है जब तक कि उनकी स्पष्ट रूप से आवश्यकता न हो। यह स्क्रिप्ट की कार्यक्षमता को बनाए रखते हुए उसे हल्का रखने में मदद करता है। का उपयोग करते हुए कमांड यह भी सुनिश्चित करते हैं कि केवल आवश्यक क्षेत्र ही प्रदान किया जाए, जिससे समग्र प्रसंस्करण बोझ कम हो जाए।

  1. मैं अपनी GEE स्क्रिप्ट का प्रदर्शन कैसे सुधारूँ?
  2. के उपयोग को अनुकूलित करें , , और प्रसंस्करण से पहले अपने डेटासेट का आकार कम करें।
  3. मेरी GEE स्क्रिप्ट को चलने में इतना समय क्यों लगता है?
  4. बड़े डेटासेट और जटिल गणनाएँ निष्पादन को धीमा कर सकती हैं। उपयोग और प्रसंस्करण को प्रासंगिक क्षेत्रों तक सीमित करना।
  5. क्या मैं GEE में संसाधित छवियों की संख्या कम कर सकता हूँ?
  6. हाँ, आवेदन करके क्लाउड कवरेज के लिए और विशिष्ट अवधियों पर ध्यान केंद्रित करना।
  7. मैं अपनी स्क्रिप्ट में सूचकांक गणनाओं को कैसे सरल बना सकता हूँ?
  8. जैसे फ़ंक्शन का उपयोग करें एक चरण में अनेक सूचकांकों (जैसे, NDVI, NDWI) को जोड़ने को सुव्यवस्थित करना।
  9. क्या केवल आवश्यक परतों की कल्पना करना संभव है?
  10. हां, अनावश्यक परतों को अक्षम करें और सरलीकृत विज़ुअलाइज़ेशन पैरामीटर का उपयोग करें बेहतर प्रदर्शन के लिए.

Google Earth इंजन स्क्रिप्ट को अनुकूलित करने में बड़े डेटासेट को कुशलतापूर्वक प्रबंधित करना, फ़िल्टर को जल्दी लागू करना और अनावश्यक डेटा संचालन को कम करना शामिल है। फ़िल्टरिंग जैसे आवश्यक क्षेत्रों पर ध्यान केंद्रित करना और स्थान प्रसंस्करण समय को काफी कम कर सकता है।

जैसे कार्यों को शामिल करके और अप्रासंगिक डेटा को खत्म करने के लिए थ्रेशोल्ड मास्क का उपयोग करके स्क्रिप्ट के प्रदर्शन को और बेहतर बनाया जा सकता है। ये तकनीकें निष्पादन को सुव्यवस्थित कर सकती हैं, त्वरित परिणाम प्रदान कर सकती हैं और Google Earth इंजन प्लेटफ़ॉर्म का बेहतर उपयोग कर सकती हैं।

  1. यह लेख आधिकारिक Google Earth इंजन दस्तावेज़ीकरण पर आधारित सामग्री का उपयोग करके बनाया गया था, जो स्क्रिप्ट अनुकूलन तकनीकों में अंतर्दृष्टि प्रदान करता है। Google Earth इंजन मार्गदर्शिकाएँ
  2. जीईई सामुदायिक मंच से अतिरिक्त जानकारी एकत्र की गई, जिसमें जटिल स्क्रिप्ट में प्रदर्शन में सुधार के लिए चर्चा और समाधान की पेशकश की गई। Google Earth इंजन समुदाय
  3. बड़े डेटासेट को संभालने के लिए सर्वोत्तम प्रथाओं को निम्नलिखित लिंक पर उपलब्ध रिमोट सेंसिंग साहित्य और ट्यूटोरियल से संदर्भित किया गया था। नासा पृथ्वी वेधशाला