ছবি ও ইমেজ ব্যান্ড ভিজ্যুয়ালাইজ করা

আপনি এখন Earth Engine JavaScript লেখা শুরু করার জন্য প্রস্তুত, তাই কোড এডিটরে নিম্নলিখিত কোডটি কপি করে শুরু করুন:

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

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

কোড এডিটরের উপরে রান বোতামে ক্লিক করুন এবং লক্ষ্য করুন যে ম্যাপে একটি খুব ধূসর ছবি দেখা যাচ্ছে। চিন্তা করবেন না, আপনি শীঘ্রই এটি আরও ভালো করে তুলতে পারবেন। এই উদাহরণের কোনও অংশের সিনট্যাক্স অপরিচিত হলে, Earth Engine-এর জন্য JavaScript টিউটোরিয়াল পর্যালোচনা করতে ভুলবেন না।

ইমেজ কনস্ট্রাক্টর

এই উদাহরণের প্রথম নতুন জিনিস হল ইমেজ কনস্ট্রাক্টর ee.Image()। কনস্ট্রাক্টরে দেওয়া আর্গুমেন্ট হল Earth Engine ডেটা ক্যাটালগে ছবির স্ট্রিং আইডি। (ইমেজ কনস্ট্রাক্টরের সম্ভাব্য আর্গুমেন্টের সম্পূর্ণ তালিকা দেখতে, কোড এডিটরের বাঁদিকে Docs ট্যাব দেখুন। Earth Engine কী করতে পারে সেই সম্পর্কে সবচেয়ে আপ-টু-ডেট তথ্য Docs ট্যাবে দেখানো হয়।)

ছবির আইডি খুঁজে পেতে, কোড এডিটরের উপরে সার্চ টুল ব্যবহার করে Earth Engine ডেটা ক্যাটালগে সার্চ করুন। যেমন, সার্চ ফিল্ডে 'উচ্চতা' টাইপ করুন এবং লক্ষ্য করুন যে রাস্টারের একটি তালিকা দেখানো হয়েছে। 'SRTM ডিজিটাল এলিভেশন ডেটা ভার্সন ৪' এন্ট্রিতে ক্লিক করে সেই ডেটাসেট সম্পর্কে আরও তথ্য দেখুন। ডেটা সেট বিবরণের ডানদিকে ছবি আইডি ফিল্ড আছে। লক্ষ্য করুন যে উদাহরণে দেখানো ছবির আইডি ডেটাসেটের বিবরণে দেখানো ছবির আইডি থেকে কপি করা হয়েছে।

ছবির আইডি কপি ও পেস্ট করার বিকল্প হল ডেটাসেটের বিবরণে ইমপোর্ট করুন বোতাম বা সার্চ ফলাফলের ডানদিকে ইমপোর্ট করুন লিঙ্ক ব্যবহার করা। আপনি ইম্পোর্ট লিঙ্ক বা বোতামে ক্লিক করলে, আপনার স্ক্রিপ্টের একদম উপরে 'ইম্পোর্ট' নামে একটি বিশেষ বিভাগে অটোমেটিক একটি ভেরিয়েবল তৈরি হয়ে যায়। আপনি ইমপোর্ট বিভাগে ভেরিয়েবেলের নামের উপর ক্লিক করে তার নাম পরিবর্তন করতে পারবেন।

ম্যাপ কনফিগার করা হচ্ছে

এই উদাহরণের দ্বিতীয় নতুন অংশ হল Map.setCenter() কল। এই পদ্ধতি Map অবজেক্টে, যা কোড এডিটরে ম্যাপ ডিসপ্লেকে উপস্থাপন করে, ম্যাপটিকে প্রদত্ত দ্রাঘিমাংশ, অক্ষাংশ (দশমিক ডিগ্রিতে) এবং জুম লেভেলে কেন্দ্র করে যেখানে ১ হল জুম আউট করা যাতে ম্যাপটি সমগ্র পৃথিবীর পৃষ্ঠ দেখায়। সেখান থেকে বড় সংখ্যা জুম ইন করুন। কোড এডিটরের বাঁদিকে Docs ট্যাবে Map বিভাগ চেক করে Map অবজেক্টের সব পদ্ধতি খুঁজে দেখুন।

ম্যাপে লেয়ার যোগ করা হচ্ছে

উদাহরণে শেষ লাইনে বলা হয়েছে: কোড এডিটরে ম্যাপ ডিসপ্লেতে ছবি যোগ করতে Map অবজেক্টের addLayer() পদ্ধতি ব্যবহার করুন।

অভিনন্দন! আপনি প্রথম Earth Engine স্ক্রিপ্ট তৈরি করেছেন। পরবর্তী বিভাগে, আপনি জানতে পারবেন কীভাবে সেই ছবিটিকে আরও একটু ভালো করে তোলা যায়।

অন্য প্রসঙ্গে: Earth Engine-এ ছবি

Earth Engine-এ ছবি (আরও বিবরণের জন্য এই পৃষ্ঠা দেখুন) এক বা একাধিক ব্যান্ড দিয়ে তৈরি হয়। কোনও ছবির প্রতিটি ব্যান্ডের নিজস্ব নাম, পিক্সেল ভ্যালু, পিক্সেল রেজোলিউশন ও প্রোজেকশন থাকে। আপনি শীঘ্রই দেখতে পাবেন যে SRTM ছবিতে একটি ব্যান্ড আছে: 'elevation'।

Map.addLayer() ব্যবহার করে ম্যাপে কোনও ছবি যোগ করলে, Earth Engine-কে নির্ধারণ করতে হয় যে কীভাবে ছবির ব্যান্ডে থাকা ভ্যালু ডিসপ্লেতে রঙে ম্যাপ করা হবে। ম্যাপে সিঙ্গেল-ব্যান্ড ছবি যোগ করা হলে, ডিফল্ট হিসেবে Earth Engine ব্যান্ডটি গ্রেস্কেলে দেখায়, যেখানে ন্যূনতম ভ্যালু কালো এবং সর্বোচ্চ ভ্যালু সাদা রঙে দেখানো হয়। আপনি যদি সর্বনিম্ন এবং সর্বোচ্চ কী হওয়া উচিত তা নির্দিষ্ট না করেন, তাহলে Earth Engine ডিফল্ট মান ব্যবহার করবে। যেমন, আপনি ম্যাপে যে ছবি যোগ করেছেন সেটি ডেটার সম্পূর্ণ রেঞ্জ জুড়ে প্রসারিত গ্রে-স্কেল ছবি বা সাইন করা ১৬-বিট ইন্টিজার [-32768, 32767] হিসেবে দেখানো হয়। (float ব্যান্ড [0, 1] পর্যন্ত এবং byte ব্যান্ড ডিফল্ট হিসেবে [0, 255] পর্যন্ত স্ট্রেচ করা হয়)।

আপনি ছবির ডেটা টাইপ প্রিন্ট করে এবং Console ট্যাবে ছবির অবজেক্ট পরীক্ষা করে দেখতে পারেন। যেমন, আগের কোডের পরে নিম্নলিখিত কোডটি পেস্ট করুন:

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

print('SRTM image', image);

আপনি রান করুন বিকল্পে ক্লিক করলে, কনসোলে একটি অবজেক্ট দেখতে পাবেন। অবজেক্টের প্রপার্টি খতিয়ে দেখতে, অবজেক্ট বা প্রপার্টির বাঁদিকে জিপিতে () ক্লিক করে এটি বড় করুন। ইমেজ অবজেক্ট, 'ব্যান্ড' প্রপার্টি, '0' ইন্ডেক্সে 'এলিভেশন' ব্যান্ড এবং 'এলিভেশন' ব্যান্ডের 'data_type' প্রপার্টি বড় করে দেখুন, যাতে বুঝতে পারেন যে এটি একটি signed int16 ডেটা টাইপ।

লেয়ার ভিজ্যুয়ালাইজেশন কাস্টমাইজ করা

ডেটা যেভাবে স্ট্রেচ করা হয় তা পরিবর্তন করতে, আপনি Map.addLayer() কলে অন্য প্যারামিটার দিতে পারেন। বিশেষত, দ্বিতীয় প্যারামিটার, visParams, আপনাকে দেখানোর জন্য ন্যূনতম ও সর্বাধিক ভ্যালু নির্দিষ্ট করতে দেয়। কোন ভ্যালু ব্যবহার করতে হবে তা জানতে, Inspector ট্যাব অ্যাক্টিভেট করুন এবং পিক্সেল ভ্যালুর রেঞ্জ সম্পর্কে ধারণা পেতে ম্যাপের বিভিন্ন জায়গায় ক্লিক করুন। বিকল্প হিসেবে, লেয়ার ম্যানেজার ব্যবহার করে ইন্টার‍্যাক্টিভভাবে ডেটা স্ট্রেচ করুন, তারপর পার্সেন্টাইল বা স্ট্যান্ডার্ড ডেভিয়েশন স্ট্রেচের সাথে সম্পর্কিত ন্যূনতম ও সর্বাধিক মান লক্ষ্য করুন। ধরা যাক, এই ধরনের এক্সপেরিমেন্টের মাধ্যমে আপনি নির্ধারণ করেছেন যে ডেটা [০, ৩০০০] পর্যন্ত স্ট্রেচ করা উচিত। এই রেঞ্জ ব্যবহার করে ছবি দেখাতে, এটি ব্যবহার করুন:

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

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

মনে রাখবেন যে visParams প্যারামিটার হল একটি অবজেক্ট, যার প্রপার্টি min এবং max নির্দিষ্ট করে। (JavaScript অবজেক্ট সম্পর্কে আরও জানুন JavaScript টিউটোরিয়াল বা এই এক্সটার্নাল রেফারেন্স থেকে)। মনে রাখবেন যে Map.addLayer()-এর জন্য তৃতীয় প্যারামিটার হল লেয়ারের নাম যা লেয়ার ম্যানেজার-এ দেখানো হয়। ফলাফলটি চিত্র ১-এর মতো দেখতে হবে। ডানদিকে লেয়ার বক্সের উপর মাউস নিয়ে গিয়ে দেখুন যে লেয়ারের নাম পরিবর্তন করলে কী প্রভাব পড়ে।

Tutorial_api_01_elevation.png
ছবি ১. উচ্চতার ছবি গ্রেস্কেল হিসেবে, [0, 3000] পর্যন্ত স্ট্রেচ করা হয়েছে।

কালার প্যালেট ব্যবহার করে একটি ব্যান্ড দেখাতে, visParams অবজেক্টে palette প্রপার্টি যোগ করুন:

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

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

ফলাফলটি ছবি ২-এর মতো দেখতে হবে।

Tutorial_api_02_palette.png
ছবি ২. উচ্চতার ছবি নীল থেকে লাল রঙের র‍্যাম্প হিসেবে দেখানো হয়েছে, যা [0, 3000] পর্যন্ত বিস্তৃত।

ডিগ্রেশন: প্যালেট

প্যালেট আপনাকে সিঙ্গল-ব্যান্ড ছবির জন্য রঙের স্কিম সেট করতে দেয়। প্যালেট হল কমা দ্বারা সীমাবদ্ধ কালার স্ট্রিংয়ের তালিকা যা ভিজ্যুয়ালাইজেশন প্যারামিটারে (বা ব্যান্ড টাইপ অনুযায়ী ডিফল্ট, যেমন আগে বর্ণনা করা হয়েছে) সর্বাধিক ও সর্বনিম্ন ভ্যালুর মধ্যে লিনিয়ারলি ইন্টারপোলেট করা হয়। যেমন, সর্বনিম্ন মানের থেকে কম বা সমান পিক্সেল তালিকায় প্রথম রঙে দেখানো হবে; সর্বাধিক মানের থেকে বেশি বা সমান পিক্সেল তালিকায় শেষ রঙে দেখানো হবে। অন্তর্বর্তী রঙগুলি অন্তর্বর্তী পিক্সেল ভ্যালুতে লিনিয়ারলি স্ট্রেচ করা হয়।

ওয়েব স্ট্যান্ডার্ড CSS কালার ভ্যালু স্কিম ব্যবহার করে কালার নির্ধারণ করা হয় (আরও জানতে এই এক্সটার্নাল রেফারেন্স দেখুন)। রঙের নাম বা হেক্সাডেসিমেল স্ট্রিংয়ের মাধ্যমে রঙ নির্দিষ্ট করা যেতে পারে যা লাল, সবুজ ও নীল রঙের কম্বিনেশনকে নির্দেশ করে। তিনটি পজিশনের যেকোনও একটিতে সর্বনিম্ন মান হল ০০ (দশমিক সংখ্যা ০-কে বোঝায়), যেখানে সর্বোচ্চ মান হল FF (দশমিক সংখ্যা ২৫৫-কে বোঝায়)। '000000' স্ট্রিং কালো রঙ, 'FFFFFF' সাদা, 'FF0000' লাল, '00FF00' সবুজ এবং '0000FF' নীল রঙকে বোঝায়। আরও জানতে কালার প্যালেট বিভাগ দেখুন। এই বিভাগে যেমন বর্ণনা করা হয়েছে, স্টাইল করা লেয়ার ডেসক্রিপ্টর ব্যবহার করে অন্যান্য স্ট্রেচ করা সম্ভব।

এই টিউটোরিয়ালের পরবর্তী অংশে, আপনি মাল্টি-ব্যান্ড ইমেজারি কীভাবে দেখাতে হয় তা জানতে পারবেন। তবে প্রথমে, ছবি ব্যবহার করে কম্পিউটেশন করার ব্যাপারে জানতে পরবর্তী পৃষ্ঠায় যান।