Earth Engine অবজেক্ট

এখন আপনি JavaScript-এর সাথে স্বাচ্ছন্দ্য বোধ করছেন, তাই JavaScript অবজেক্ট এবং প্রিমিটিভকে Earth Engine কন্টেনারে কীভাবে রাখবেন তা শিখুন যাতে সেগুলি সার্ভারে পাঠানো এবং Google-এ প্রসেস করা যায়।

স্ট্রিং

যেমন, একটি স্ট্রিং সংজ্ঞায়িত করুন, তারপর Earth Engine-এ পাঠানোর জন্য এটি ee.String() কন্টেনারে রাখুন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Define a string, then put it into an EE container.
var aString = 'To the cloud!';
var eeString = ee.String(aString);
print('Where to?', eeString);

ee.Thing-কে সার্ভারে থাকা কোনও জিনিসের কন্টেনার হিসেবে ভাবুন। এই উদাহরণে, স্ট্রিংটি প্রথমে সংজ্ঞায়িত করা হয়, তারপর কন্টেনারে রাখা হয়। এছাড়াও, আপনি একসাথে কন্টেনার ও তার কন্টেন্ট নির্ধারণ করতে পারবেন। যেমন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Define a string that exists on the server.
var serverString = ee.String('This is on the server.');
print('String on the server:', serverString);

যদিও print()-এর প্রথম আর্গুমেন্ট ক্লায়েন্টের কাছে শুধু একটি স্ট্রিং, দ্বিতীয় আর্গুমেন্টটি আসলে সার্ভারে পাঠানো হয় যাতে সেটি মূল্যায়ন করা যায়, তারপর ফেরত পাঠানো হয়।

Numbers

সার্ভারে নম্বর অবজেক্ট তৈরি করতে ee.Number() ব্যবহার করুন। যেমন, সার্ভারে কনস্ট্যান্ট ভ্যালু তৈরি করতে Math.E জাভাস্ক্রিপ্ট পদ্ধতি ব্যবহার করুন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Define a number that exists on the server.
var serverNumber = ee.Number(Math.E);
print('e=', serverNumber);

ee.String() এবং ee.Number() মেথড হল কনস্ট্রাক্টর। কনস্ট্রাক্টর তার আর্গুমেন্ট (এবং সম্ভবত অন্যান্য প্যারামিটার) নেয়, সেটি একটি কন্টেনারে রাখে এবং কন্টেনার ও তার কন্টেন্ট Earth Engine অবজেক্ট হিসেবে ফেরত দেয় যা আপনি নিজের কোডে ম্যানিপুলেট করতে পারবেন। ee দিয়ে শুরু হওয়া যেকোনও কনস্ট্রাক্টর Earth Engine অবজেক্ট রিটার্ন করে।

Earth Engine অবজেক্টে পদ্ধতি

মনে রাখবেন, আপনি একবার Earth Engine অবজেক্ট তৈরি করে নিলে, সেটি প্রসেস করার জন্য আপনাকে Earth Engine পদ্ধতি ব্যবহার করতে হবে। এই উদাহরণে, আপনি Earth Engine অবজেক্ট প্রসেস করার জন্য জাভাস্ক্রিপ্টের Math.log() ব্যবহার করতে পারবেন না। আপনাকে ee.Number-এর জন্য নির্ধারিত সমতুল্য পদ্ধতি ব্যবহার করতে হবে:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Use a built-in function to perform an operation on the number.
var logE = serverNumber.log();
print('log(e)=', logE);

এই উদাহরণে, log() হল ee.Number অবজেক্টের একটি পদ্ধতি। (প্রতিটি Earth Engine অবজেক্টের ধরনের জন্য সব পদ্ধতির তালিকা দেখতে, কোড এডিটরের বাঁদিকে Docs ট্যাব ব্যবহার করুন, যেমন ee.Number > log())। মনে রাখবেন যে Earth Engine অবজেক্টের পদ্ধতিগুলি অন্যান্য Earth Engine অবজেক্ট ফিরিয়ে দেয়।

তালিকা

সার্ভারে জাভাস্ক্রিপ্ট তালিকাকে ee.List অবজেক্টে পরিণত করতে, আপনি সংখ্যা ও স্ট্রিংয়ের মতো কন্টেনারে জাভাস্ক্রিপ্ট লিটারেল রাখতে পারেন। এছাড়াও, Earth Engine নম্বরের সিকোয়েন্স তৈরি করার জন্য সার্ভার-সাইড কনভেনিয়েন্স পদ্ধতি প্রদান করে। যেমন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Make a sequence the hard way.
var eeList = ee.List([1, 2, 3, 4, 5]);
// Make a sequence the easy way!
var sequence = ee.List.sequence(1, 5);
print('Sequence:', sequence);

যেহেতু ee.List অবজেক্ট শুধুমাত্র সার্ভারে থাকে, তাই সেগুলির সাথে ইন্টার‍্যাক্ট করতে Earth Engine-এর প্রদান করা ফাংশন ব্যবহার করুন। যেমন, তালিকা থেকে কিছু সরাতে, ee.List অবজেক্টের get() পদ্ধতি ব্যবহার করুন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Use a method on an ee.List to extract a value.
var value = sequence.get(2);
print('Value at index 2:', value);

কাস্টিং

কখনও কখনও, Earth Engine কোনও পদ্ধতি থেকে ফেরত পাওয়া অবজেক্টের ধরন সম্পর্কে জানে না। প্রোগ্রামার হিসেবে আপনি জানেন যে আগের উদাহরণের value ভেরিয়েবলটি হল একটি নম্বর অবজেক্ট। কিন্তু আপনি যদি ee.Number-এর add() পদ্ধতি ব্যবহার করার চেষ্টা করেন, তাহলে আপনি এই ধরনের একটি ত্রুটি পাবেন:

এটি get() ফাংশনের ক্ষেত্রে সাধারণ, যা সব ধরনের Earth Engine অবজেক্ট ফেরত দিতে পারে। এটি ঠিক করতে, ফলাফল কাস্ট করতে ee.Number কনস্ট্রাক্টর ব্যবহার করুন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Cast the return value of get() to a number.
print('No error:', ee.Number(value).add(3));

অভিধানগুলি

আপনি স্ট্রিং, সংখ্যা ও তালিকার মতো জাভাস্ক্রিপ্ট অবজেক্ট থেকে Earth Engine Dictionary তৈরি করতে পারবেন। কনস্ট্রাকশনের সময়, Earth Engine অবজেক্ট ইনিশিয়ালাইজ করতে আপনি জাভাস্ক্রিপ্ট ফাংশনালিটি ব্যবহার করতে পারবেন। এই ক্ষেত্রে, একটি ee.Dictionary সরাসরি জাভাস্ক্রিপ্ট লিটারেল অবজেক্ট থেকে তৈরি করা হয়:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Make a Dictionary on the server.
var dictionary = ee.Dictionary({
  e: Math.E,
  pi: Math.PI,
  phi: (1 + Math.sqrt(5)) / 2
});

// Get some values from the dictionary.
print('Euler:', dictionary.get('e'));
print('Pi:', dictionary.get('pi'));
print('Golden ratio:', dictionary.get('phi'));

// Get all the keys:
print('Keys: ', dictionary.keys());

এই উদাহরণে, লক্ষ্য করুন যে আপনার কাছে ee.Dictionary থাকলে, আপনাকে অবশ্যই ভ্যালু পেতে ee.Dictionary-এ পদ্ধতি ব্যবহার করতে হবে (আগের পাঠে জাভাস্ক্রিপ্ট অভিধানের মতো নয়)। নির্দিষ্টভাবে, get(key), key-এর সাথে সম্পর্কিত ভ্যালু রিটার্ন করে। যেহেতু get()-এর মাধ্যমে রিটার্ন করা অবজেক্টের ধরন যেকোনও কিছু হতে পারে, তাই আপনি যদি অবজেক্টটি প্রিন্ট করা ছাড়া অন্য কিছু করতে চান, তাহলে আপনাকে এটি সঠিক ধরনের কাস্ট করতে হবে। এছাড়াও মনে রাখবেন যে keys() পদ্ধতি ee.List রিটার্ন করে।

তারিখ

Earth Engine-এ তারিখ অবজেক্টের মাধ্যমে সময় দেখানো হয়। আগের উদাহরণের মতো, জাভাস্ক্রিপ্ট Date অবজেক্ট এবং Earth Engine ee.Date অবজেক্টের মধ্যে পার্থক্য করা গুরুত্বপূর্ণ। একটি স্ট্রিং, একটি জাভাস্ক্রিপ্ট Date থেকে বা ee.Date ক্লাস দ্বারা প্রদত্ত স্ট্যাটিক পদ্ধতি ব্যবহার করে একটি ee.Date তৈরি করুন। (আরও বিবরণের জন্য Docs ট্যাবে তারিখ বিভাগ দেখুন)। এই উদাহরণে দেখানো হয়েছে কীভাবে স্ট্রিং বা জাভাস্ক্রিপ্ট থেকে তারিখ তৈরি করা হয় তারিখ ১ জানুয়ারি, ১৯৭০ মধ্যরাত থেকে মিলিসেকেন্ডে দেখানো হয়েছে:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Define a date in Earth Engine.
var date = ee.Date('2015-12-31');
print('Date:', date);

// Get the current time using the JavaScript Date.now() method.
var now = Date.now();
print('Milliseconds since January 1, 1970', now);

// Initialize an ee.Date object.
var eeNow = ee.Date(now);
print('Now:', eeNow);

তারিখের সাহায্যে সংগ্রহ ফিল্টার করা যায়, বিশেষ করে filterDate() মেথডের আর্গুমেন্ট হিসেবে। কালেকশন সাজানোর ব্যাপারে আরও তথ্য পেতে, শুরু করুন পৃষ্ঠার এই বিভাগ দেখুন।

ডিগ্রেশন: নাম অনুযায়ী প্যারামিটার পাস করা

Earth Engine পদ্ধতির আর্গুমেন্ট ক্রমানুসারে পাস করা যেতে পারে, যেমন বছর, মাস ও দিন থেকে একটি ee.Date তৈরি করতে, আপনি বছর, মাস, দিন ক্রমানুসারে fromYMD() স্ট্যাটিক পদ্ধতির প্যারামিটার পাস করতে পারেন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

var aDate = ee.Date.fromYMD(2017, 1, 13);
print('aDate:', aDate);

বিকল্প হিসেবে, আপনি যেকোনও ক্রমে নাম অনুযায়ী প্যারামিটার পাস করতে পারেন। এতে কোড বেশি হতে পারে, তবে এটি পঠনযোগ্যতা এবং পুনর্ব্যবহারযোগ্যতা উন্নত করতে পারে। নাম অনুযায়ী প্যারামিটার পাস করতে, JavaScript অবজেক্টে পাস করুন যেখানে অবজেক্টের কী হল মেথড প্যারামিটারের নাম এবং ভ্যালু হল মেথডের আর্গুমেন্ট। যেমন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

var theDate = ee.Date.fromYMD({
  day: 13,
  month: 1,
  year: 2017
});
print('theDate:', theDate);

মনে রাখবেন যে অবজেক্ট প্রপার্টির (কী) নাম ee.Date.fromYMD() ডকুমেন্টে উল্লেখ করা নামের সাথে মিলতে হবে। এছাড়াও মনে রাখবেন যে আর্গুমেন্ট হিসেবে পাস করা অবজেক্টটি আবার ব্যবহার করার জন্য ভেরিয়েবলে সেভ করা যেতে পারে, যেমনটি JavaScript অবজেক্টের উদাহরণ-এ দেখানো হয়েছে।

Earth Engine ব্যবহার শুরু করার জন্য জাভাস্ক্রিপ্ট সম্পর্কে আপনার এখন যথেষ্ট ধারণা আছে! JavaScript বনাম Earth Engine অবজেক্টের আরও বিস্তারিত ব্যাখ্যার জন্য ক্লায়েন্ট বনাম সার্ভার পৃষ্ঠা দেখুন।

পরবর্তী বিভাগে, Earth Engine-এ for-লুপ, if/else শর্ত এবং ইটারেশন কার্যকরভাবে ব্যবহার করার জন্য ফাংশনাল প্রোগ্রামিং ধারণা সম্পর্কে আরও জানুন।