আর্থ ইঞ্জিন অবজেক্ট

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

স্ট্রিংস

উদাহরণস্বরূপ, একটি স্ট্রিং সংজ্ঞায়িত করুন, তারপর এটিকে আর্থ ইঞ্জিনে পাঠানোর জন্য 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() করার প্রথম আর্গুমেন্টটি ক্লায়েন্টের একটি স্ট্রিং মাত্র, দ্বিতীয় আর্গুমেন্টটি আসলে মূল্যায়ন করার জন্য সার্ভারে পাঠানো হয়, তারপর ফেরত পাঠানো হয়।

সংখ্যা

সার্ভারে নম্বর বস্তু তৈরি করতে ee.Number() ব্যবহার করুন। উদাহরণস্বরূপ, সার্ভারে একটি ধ্রুবক মান তৈরি করতে Math.E JavaScript পদ্ধতি ব্যবহার করুন:

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

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

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

আর্থ ইঞ্জিন বস্তুর পদ্ধতি

মনে রাখবেন যে আপনি একবার আর্থ ইঞ্জিন অবজেক্ট তৈরি করলে, আপনাকে এটি প্রক্রিয়া করার জন্য আর্থ ইঞ্জিন পদ্ধতি ব্যবহার করতে হবে। এই উদাহরণে, আপনি সেই আর্থ ইঞ্জিন অবজেক্ট প্রক্রিয়া করতে JavaScript এর 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 অবজেক্টের জন্য একটি পদ্ধতি। (প্রতিটি আর্থ ইঞ্জিন অবজেক্ট টাইপের জন্য সমস্ত পদ্ধতির তালিকা দেখতে কোড এডিটরের বাম দিকে ডক্স ট্যাবটি ব্যবহার করুন, উদাহরণস্বরূপ ee.Number > log())। লক্ষ্য করুন যে আর্থ ইঞ্জিন বস্তুর পদ্ধতিগুলি অন্যান্য আর্থ ইঞ্জিন বস্তুকে ফিরিয়ে দেয়।

তালিকা

সার্ভারে একটি ee.List অবজেক্টে জাভাস্ক্রিপ্ট তালিকা তৈরি করতে, আপনি সংখ্যা এবং স্ট্রিংগুলির মতো একটি পাত্রে জাভাস্ক্রিপ্ট আক্ষরিক রাখতে পারেন। আর্থ ইঞ্জিন সংখ্যার ক্রম তৈরির জন্য সার্ভার-সাইড সুবিধার পদ্ধতিও প্রদান করে। যেমন:

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

// 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 বস্তুগুলি শুধুমাত্র সার্ভারে বিদ্যমান, তাই তাদের সাথে ইন্টারঅ্যাক্ট করতে আর্থ ইঞ্জিন প্রদত্ত ফাংশন ব্যবহার করুন। উদাহরণস্বরূপ, তালিকা থেকে কিছু পেতে, 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);

কাস্টিং

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

এটি get() ফাংশনের সাথে সাধারণ, যা সমস্ত ধরণের আর্থ ইঞ্জিন অবজেক্ট ফিরিয়ে দিতে পারে। এটি সংশোধন করতে, ফলাফল কাস্ট করতে ee.Number কনস্ট্রাক্টর ব্যবহার করুন:

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

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

অভিধান

আপনি একটি জাভাস্ক্রিপ্ট অবজেক্ট থেকে একটি আর্থ ইঞ্জিন Dictionary তৈরি করতে পারেন, যেমন স্ট্রিং, সংখ্যা এবং তালিকা। নির্মাণের সময়, আপনি আর্থ ইঞ্জিন অবজেক্ট শুরু করতে JavaScript কার্যকারিতা ব্যবহার করতে পারেন। এই ক্ষেত্রে একটি 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 প্রদান করে।

তারিখগুলি

আর্থ ইঞ্জিন সময়কে যেভাবে উপস্থাপন করে তা তারিখের বস্তু। আগের উদাহরণগুলির মতো, একটি জাভাস্ক্রিপ্ট Date অবজেক্ট এবং আর্থ ইঞ্জিন ee.Date অবজেক্টের মধ্যে পার্থক্য করা গুরুত্বপূর্ণ। একটি স্ট্রিং থেকে, একটি জাভাস্ক্রিপ্ট Date থেকে বা ee.Date ক্লাস দ্বারা প্রদত্ত স্ট্যাটিক পদ্ধতি ব্যবহার করে একটি ee.Date তৈরি করুন৷ (বিশদ বিবরণের জন্য ডক্স ট্যাবে তারিখ বিভাগটি দেখুন)। এই উদাহরণটি 1 জানুয়ারী, 1970-এর মধ্যরাত থেকে মিলিসেকেন্ডের প্রতিনিধিত্বকারী স্ট্রিং বা জাভাস্ক্রিপ্ট তারিখ থেকে তারিখের নির্মাণকে চিত্রিত করে:

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

// 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() পদ্ধতির আর্গুমেন্ট হিসাবে। সংগ্রহ বাছাই সম্পর্কে আরও তথ্যের জন্য শুরু করুন পৃষ্ঠার এই বিভাগটি দেখুন।

ডিগ্রেশন: নাম অনুসারে পরামিতি পাস করা

আর্থ ইঞ্জিন পদ্ধতিতে আর্গুমেন্টগুলি ক্রমানুসারে পাস করা যেতে পারে, উদাহরণস্বরূপ, বছর, মাস এবং দিন থেকে একটি ee.Date তৈরি করার জন্য, আপনি fromYMD() স্ট্যাটিক পদ্ধতির পরামিতিগুলিকে বছর, মাস, দিন ক্রমে পাস করতে পারেন:

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

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

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

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

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

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

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

পরবর্তী বিভাগে, আর্থ ইঞ্জিনে কার্যকরভাবে লুপ, যদি/অন্যথায় অবস্থা এবং পুনরাবৃত্তিগুলি ব্যবহার করার জন্য কার্যকরী প্রোগ্রামিং ধারণা সম্পর্কে আরও জানুন।