গুগল আর্থ ইঞ্জিন স্ক্রিপ্টের এক্সিকিউশন টাইম অপ্টিমাইজ করা
Google আর্থ ইঞ্জিন (GEE) হল বড় আকারের ভূ-স্থানিক ডেটা বিশ্লেষণের জন্য একটি শক্তিশালী প্ল্যাটফর্ম। যাইহোক, ব্যবহারকারীরা প্রায়শই এক্সিকিউশনের সময় সমস্যার সম্মুখীন হন, এমনকি যখন তাদের স্ক্রিপ্টগুলি মৌলিক দেখায়। একটি স্ক্রিপ্ট যা চালানোর জন্য কয়েক মিনিট সময় নেয় তা উত্পাদনশীলতাকে প্রভাবিত করতে পারে এবং অন্তর্দৃষ্টি বিলম্বিত করতে পারে।
এই ক্ষেত্রে, একজন ব্যবহারকারী সেন্টিনেল এবং ল্যান্ডস্যাট 8 ডেটা প্রক্রিয়া করার জন্য একটি সহজ স্ক্রিপ্ট তৈরি করেছেন। এর সরলতা সত্ত্বেও, স্ক্রিপ্টটি কার্যকর হতে প্রায় 3-5 মিনিট সময় নেয়। কেন এটি ঘটে এবং স্ক্রিপ্টটি কীভাবে অপ্টিমাইজ করা যায় তা বোঝা দক্ষ ডেটা প্রক্রিয়াকরণের জন্য অপরিহার্য।
একটি 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-এর মতো গুরুত্বপূর্ণ সূচকগুলি গণনা করতে নিযুক্ত করা হয়। এই সূচকগুলি নির্দিষ্ট অঞ্চলে গাছপালা, জল এবং তুষার আচ্ছাদন বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ। স্ক্রিপ্টটি আগ্রহের একটি বিন্দু সংজ্ঞায়িত করে শুরু হয় এবং প্রদত্ত স্থানাঙ্ক ব্যবহার করে মানচিত্রটিকে কেন্দ্র করে।
স্ক্রিপ্ট একাধিক ফিল্টার প্রয়োগ করে, যেমন ফিল্টার তারিখ() এবং ফিল্টারবাউন্ডস(), প্রসেস করা ডেটার পরিমাণ কমাতে, এইভাবে এক্সিকিউশনের সময় উন্নত করে। যেমন, ফিল্টারবাউন্ডস() নিশ্চিত করে যে শুধুমাত্র আগ্রহের ক্ষেত্রটিকে ছেদ করে এমন চিত্রগুলি অন্তর্ভুক্ত করা হয়েছে, যখন৷ ফিল্টার তারিখ() ছবিগুলিকে একটি নির্দিষ্ট তারিখ পরিসরে সীমাবদ্ধ করে। সেন্টিনেল এবং ল্যান্ডস্যাট চিত্রের মতো বড় ডেটাসেটগুলি প্রক্রিয়া করার জন্য এটি অপরিহার্য, কারণ এটি গণনামূলক লোডকে কমিয়ে দেয়। উপরন্তু, দ ফিল্টার ক্লাউড কভারেজের জন্য অনেক বেশি ক্লাউড আছে এমন ছবিগুলিকে বাতিল করতে সাহায্য করে, যাতে উন্নতমানের বিশ্লেষণ নিশ্চিত করা যায়।
স্ক্রিপ্টের একটি গুরুত্বপূর্ণ দিক হল addBands() ফাংশন, যা চিত্রগুলিতে গণনাকৃত সূচক (NDVI, NDWI, NDSI) যোগ করে, আরও বিশ্লেষণের জন্য তাদের অ্যাক্সেসযোগ্য করে তোলে। স্ক্রিপ্টটি JRC গ্লোবাল সারফেস ওয়াটার ডেটাসেট থেকে ডেটা ব্যবহার করে একটি স্থায়ী জলের মুখোশও অন্তর্ভুক্ত করে। জলের মুখোশটি জলের উচ্চ সংঘটন (80% এর বেশি) সহ অঞ্চলগুলি বাদ দিতে সহায়তা করে যা অন্যথায় গাছপালা এবং তুষার বিশ্লেষণের ফলাফলগুলিকে তির্যক হতে পারে। এই মাধ্যমে করা হয় gt() এবং মুখোশ খুলুন() ফাংশন, যা স্ক্রিপ্টকে পিক্সেল মানের উপর ভিত্তি করে এলাকাগুলিকে বিচ্ছিন্ন করার অনুমতি দেয়।
অবশেষে, স্ক্রিপ্ট ব্যবহার করে হ্রাস () নির্বাচিত পিক্সেল মানের 30 তম পার্সেন্টাইল প্রতিনিধিত্ব করে এমন একটি যৌগিক চিত্র তৈরি করতে পারসেন্টাইল রিডুসারের সাথে ফাংশন। এই যৌগিক চিত্রটি তারপর আগ্রহের অঞ্চলে ক্লিপ করা হয় এবং ব্যবহার করে মানচিত্রে ভিজ্যুয়ালাইজ করা হয়৷ ক্লিপ() ফাংশন সেন্টিনেল এবং ল্যান্ডস্যাট কম্পোজিট উভয়ের জন্য ভিজ্যুয়াল প্যারামিটারগুলি সংজ্ঞায়িত করা হয়েছে, ব্যবহারকারীকে উপযুক্ত রঙের সেটিংসের সাথে সেগুলি দেখতে দেয়। ফিল্টারিং, মাস্কিং, এবং কম্পোজিট জেনারেশনের মত বিভিন্ন ইমেজ প্রসেসিং ধাপ একত্রিত করে, এই স্ক্রিপ্ট স্যাটেলাইট ইমেজ বিশ্লেষণ করার একটি কার্যকর উপায় প্রদান করে, যদিও এক্সিকিউশন সময় কমাতে আরও অপ্টিমাইজেশন প্রয়োগ করা যেতে পারে।
দ্রুত প্রক্রিয়াকরণের জন্য Google আর্থ ইঞ্জিন স্ক্রিপ্ট এক্সিকিউশন অপ্টিমাইজ করা
এই সমাধানটি ডেটা পুনরুদ্ধারের সময় কমিয়ে এবং ক্রিয়াকলাপগুলিকে সহজ করে কার্যক্ষমতা অপ্টিমাইজ করার উপর জোর দিয়ে Google আর্থ ইঞ্জিন (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 আর্থ ইঞ্জিন প্রক্রিয়াকরণের জন্য প্রয়োগ করা হয়।
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 আর্থ ইঞ্জিন (GEE) স্ক্রিপ্টগুলির সাথে কাজ করার সময় একটি মূল বিবেচ্য বিষয় হল অপারেশনগুলি দক্ষতার সাথে পরিচালনা করা নিশ্চিত করা। যদিও পরিবেশগত বিশ্লেষণে সেন্টিনেল এবং ল্যান্ডস্যাটের মতো বড় ডেটাসেটগুলির ব্যবহার সাধারণ, ডেটার নিছক পরিমাণ স্ক্রিপ্ট সম্পাদনকে ধীর করে দিতে পারে। কর্মক্ষমতা উন্নত করার একটি পদ্ধতি হল শুধুমাত্র প্রয়োজনীয় ডেটা প্রক্রিয়া করা হচ্ছে তা নিশ্চিত করা। যেমন কমান্ড ব্যবহার করে ফিল্টারবাউন্ডস() এবং ফিল্টার তারিখ() ডেটাসেটের আকার ছোট করে, যা কম্পিউটেশন স্ট্রিমলাইন করতে সাহায্য করে। নির্দিষ্ট তারিখ ব্যাপ্তি এবং ভৌগলিক অঞ্চল নির্বাচন করা কার্যকর করার সময় উল্লেখযোগ্যভাবে কমাতে পারে।
আরেকটি দিক যা GEE স্ক্রিপ্টের কর্মক্ষমতাকে প্রভাবিত করে তা হল কীভাবে ডেটা প্রক্রিয়া করা হয়। স্ক্রিপ্ট উদাহরণ NDVI, NDWI, এবং NDSI এর মতো গুরুত্বপূর্ণ সূচকগুলি গণনা করতে একটি ফাংশন ব্যবহার করে। এই সূচকগুলিকে চিত্র সংগ্রহে ব্যান্ড হিসাবে যুক্ত করা হয়, যা আরও পুঙ্খানুপুঙ্খ বিশ্লেষণের অনুমতি দেয়। যাইহোক, একটি সাধারণ ভুল হল প্রথম ফিল্টার না করে একটি সম্পূর্ণ ডেটাসেটে এই ধরনের ফাংশন প্রয়োগ করা। অপ্রাসঙ্গিক ডেটাতে অপ্রয়োজনীয় গণনা এড়াতে ফিল্টার করার পরে এই ধরনের ক্রিয়াকলাপগুলি প্রয়োগ করা অত্যন্ত গুরুত্বপূর্ণ।
ভিজ্যুয়ালাইজেশন হল স্ক্রিপ্টের আরেকটি উপাদান যা অপ্টিমাইজ করা যায়। অনেকগুলি স্তর বা জটিল ভিজ্যুয়ালাইজেশন যোগ করা প্রক্রিয়াকরণের সময়কে কমিয়ে দিতে পারে। স্ক্রিপ্ট কম্পোজিট রেন্ডার করার জন্য পূর্বনির্ধারিত ভিজ্যুয়াল প্যারামিটার ব্যবহার করে, তবে নির্দিষ্ট স্তরগুলিকে নিষ্ক্রিয় করে কর্মক্ষমতা উন্নত করা যেতে পারে যদি না সেগুলি স্পষ্টভাবে প্রয়োজন হয়৷ এটি এর কার্যকারিতা বজায় রেখে স্ক্রিপ্টটিকে হালকা রাখতে সাহায্য করে। ব্যবহার করে ক্লিপ() কমান্ডগুলি নিশ্চিত করে যে শুধুমাত্র প্রয়োজনীয় এলাকা রেন্ডার করা হয়েছে, সামগ্রিক প্রক্রিয়াকরণের বোঝা হ্রাস করে।
গুগল আর্থ ইঞ্জিন স্ক্রিপ্ট অপ্টিমাইজ করা সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন
- আমি কিভাবে আমার GEE স্ক্রিপ্টগুলির কর্মক্ষমতা উন্নত করব?
- এর ব্যবহার অপ্টিমাইজ করুন filterDate(), filterBounds(), এবং প্রক্রিয়াকরণের আগে আপনার ডেটাসেটের আকার কমিয়ে দিন।
- কেন আমার GEE স্ক্রিপ্ট চালানোর জন্য এত সময় নেয়?
- বড় ডেটাসেট এবং জটিল গণনা সম্পাদনকে ধীর করে দিতে পারে। ব্যবহার করুন reduce() এবং clip() প্রাসঙ্গিক এলাকায় প্রক্রিয়াকরণ সীমিত করতে.
- আমি কি GEE তে প্রক্রিয়াকৃত ছবির সংখ্যা কমাতে পারি?
- হ্যাঁ, আবেদন করে filter() মেঘ কভারেজ জন্য এবং filterDate() নির্দিষ্ট সময়ের উপর ফোকাস করতে।
- আমি কিভাবে আমার স্ক্রিপ্টে সূচক গণনা সহজ করতে পারি?
- মত একটি ফাংশন ব্যবহার করুন addBands() এক ধাপে একাধিক সূচক (যেমন, NDVI, NDWI) যোগ করে স্ট্রীমলাইন করতে।
- শুধুমাত্র প্রয়োজনীয় স্তরগুলি কল্পনা করা কি সম্ভব?
- হ্যাঁ, অপ্রয়োজনীয় স্তরগুলি অক্ষম করুন এবং এর সাথে সরলীকৃত ভিজ্যুয়ালাইজেশন প্যারামিটার ব্যবহার করুন৷ Map.addLayer() ভালো পারফরম্যান্সের জন্য।
GEE স্ক্রিপ্ট অপ্টিমাইজ করার বিষয়ে চূড়ান্ত চিন্তাভাবনা
গুগল আর্থ ইঞ্জিন স্ক্রিপ্টগুলিকে অপ্টিমাইজ করার জন্য বড় ডেটাসেটগুলি দক্ষতার সাথে পরিচালনা করা, তাড়াতাড়ি ফিল্টার প্রয়োগ করা এবং অপ্রয়োজনীয় ডেটা ক্রিয়াকলাপ হ্রাস করা জড়িত৷ দ্বারা ফিল্টারিং মত প্রয়োজনীয় এলাকায় ফোকাস তারিখ এবং অবস্থান উল্লেখযোগ্যভাবে প্রক্রিয়াকরণ সময় কমাতে পারে.
যেমন ফাংশন অন্তর্ভুক্ত করে অ্যাডব্যান্ড এবং অপ্রাসঙ্গিক ডেটা দূর করতে থ্রেশহোল্ড মাস্ক ব্যবহার করে, স্ক্রিপ্টের কর্মক্ষমতা আরও উন্নত করা যেতে পারে। এই কৌশলগুলি এক্সিকিউশনকে স্ট্রিমলাইন করতে পারে, দ্রুত ফলাফল প্রদান করে এবং Google আর্থ ইঞ্জিন প্ল্যাটফর্মের আরও ভাল ব্যবহার করতে পারে।
গুগল আর্থ ইঞ্জিন স্ক্রিপ্ট অপ্টিমাইজ করার জন্য উত্স এবং রেফারেন্স
- এই নিবন্ধটি অফিসিয়াল Google আর্থ ইঞ্জিন ডকুমেন্টেশনের উপর ভিত্তি করে সামগ্রী ব্যবহার করে তৈরি করা হয়েছে, যা স্ক্রিপ্ট অপ্টিমাইজেশান কৌশলগুলির অন্তর্দৃষ্টি প্রদান করে৷ গুগল আর্থ ইঞ্জিন গাইড
- GEE কমিউনিটি ফোরাম থেকে অতিরিক্ত তথ্য সংগ্রহ করা হয়েছে, জটিল স্ক্রিপ্টে পারফরম্যান্সের উন্নতির জন্য আলোচনা এবং সমাধানের প্রস্তাব দেওয়া হয়েছে। গুগল আর্থ ইঞ্জিন সম্প্রদায়
- বড় ডেটাসেটগুলি পরিচালনার জন্য সর্বোত্তম অনুশীলনগুলি নিম্নলিখিত লিঙ্কে উপলব্ধ রিমোট সেন্সিং সাহিত্য এবং টিউটোরিয়ালগুলি থেকে উল্লেখ করা হয়েছে। নাসা আর্থ অবজারভেটরি