আর্থ ইঞ্জিন দিয়ে শুরু করুন

আর্থ ইঞ্জিন জাভাস্ক্রিপ্ট API এর সাথে প্রোগ্রামিং শুরু করার একটি দ্রুত উপায় হিসাবে এই শুরু করুন নির্দেশিকাটির উদ্দেশ্য। আর্থ ইঞ্জিন এপিআই-এর সাথে জাভাস্ক্রিপ্টের পরিচায়ক এবং আরও গভীর অনুশীলনের জন্য, টিউটোরিয়ালগুলি দেখুন। প্রস্তাবিত জাভাস্ক্রিপ্ট কোডিং শৈলীর জন্য, Google JavaScript শৈলী নির্দেশিকা দেখুন।

Google আর্থ ইঞ্জিন ব্যবহারকারীদের জিওরিফারেন্সড ইমেজ এবং Google এর অবকাঠামোতে সঞ্চিত ভেক্টরগুলিতে অ্যালগরিদম চালানোর অনুমতি দেয়। Google Earth Engine API ফাংশনগুলির একটি লাইব্রেরি প্রদান করে যা প্রদর্শন এবং বিশ্লেষণের জন্য ডেটাতে প্রয়োগ করা যেতে পারে। আর্থ ইঞ্জিনের পাবলিক ডেটা ক্যাটালগে প্রচুর পরিমাণে সর্বজনীনভাবে উপলব্ধ চিত্রাবলী এবং ভেক্টর ডেটাসেট রয়েছে। ব্যবহারকারীদের ব্যক্তিগত ফোল্ডারেও ব্যক্তিগত সম্পদ তৈরি করা যেতে পারে।

কিভাবে এই ডক্স ব্যবহার করতে হয়

আর্থ ইঞ্জিন ডকুমেন্টেশন ভূ-স্থানিক ডেটা বিশ্লেষণের সাথে পরিচিত ব্যক্তিদের জন্য ডিজাইন করা হয়েছে। ডক্সগুলি প্রাথমিকভাবে ডেটা টাইপ দ্বারা গঠিত। উদাহরণস্বরূপ, বাম দিকের নেভিগেশনে Image , ImageCollection , Feature , FeatureCollection , Geometry , Reducer , Chart , Join এবং Array এর মতো গুরুত্বপূর্ণ ডেটা প্রকারের বিভাগ বা পৃষ্ঠাগুলির লিঙ্ক রয়েছে। এই নির্দেশিকা আপনাকে শুরু করার জন্য শুধুমাত্র এই ধরনের সম্পর্কে যথেষ্ট বর্ণনা করে। এছাড়াও মেশিন লার্নিং , বিশেষায়িত বা সেন্সর নির্দিষ্ট অ্যালগরিদম ( যেমন ল্যান্ডস্যাট অ্যালগরিদম ), পাবলিক ফেসিং অ্যাপস , ডেটা (সম্পদ) ব্যবস্থাপনা এবং আর্থ ইঞ্জিনের অভ্যন্তরীণ কাজ সম্পর্কে গুরুত্বপূর্ণ বিবরণের জন্য বিভাগ রয়েছে। যে কোনো একটি মধ্যে ডাইভিং আগে, এখানে শুরু!

কোড এডিটর

কোড এডিটর হল আর্থ ইঞ্জিন অ্যাপ্লিকেশন তৈরির জন্য একটি ইন্টারেক্টিভ পরিবেশ (চিত্র 1)। কেন্দ্র প্যানেল একটি জাভাস্ক্রিপ্ট কোড সম্পাদক প্রদান করে। সম্পাদকের উপরে বর্তমান স্ক্রিপ্ট সংরক্ষণ, এটি চালানো এবং মানচিত্র পরিষ্কার করার জন্য বোতাম রয়েছে। লিঙ্ক পান বোতামটি ঠিকানা বারে স্ক্রিপ্টের জন্য একটি অনন্য URL তৈরি করে। নীচের প্যানেলের মানচিত্রে স্ক্রিপ্ট দ্বারা যোগ করা স্তরগুলি রয়েছে৷ শীর্ষে ডেটাসেট এবং স্থানগুলির জন্য একটি অনুসন্ধান বাক্স রয়েছে৷ বাম প্যানেলে কোড উদাহরণ, আপনার সংরক্ষিত স্ক্রিপ্ট, একটি অনুসন্ধানযোগ্য API রেফারেন্স এবং ব্যক্তিগত ডেটার জন্য একটি সম্পদ ব্যবস্থাপক রয়েছে৷ ডান প্যানেলে মানচিত্র অনুসন্ধানের জন্য একজন পরিদর্শক, একটি আউটপুট কনসোল এবং দীর্ঘমেয়াদী কাজের জন্য একজন ম্যানেজার রয়েছে। উপরের ডানদিকে বোতামটিতে এই গাইডের লিঙ্ক এবং সাহায্য পাওয়ার জন্য অন্যান্য সংস্থান রয়েছে। কোড এডিটর গাইড এবং সাহায্য পান গাইড থেকে আরও জানুন।

কোড এডিটর
চিত্র 1. code.earthengine.google.com- এ আর্থ ইঞ্জিন কোড এডিটর

কোড এডিটরে কোড খোলা এবং চলমান

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

  1. এখানে আর্থ ইঞ্জিন কোড এডিটর খুলুন: code.earthengine.google.com
  2. কোড এডিটরের একেবারে বাম দিকে অবস্থিত স্ক্রিপ্ট ট্যাবে নেভিগেট করুন। সেখানে আপনি উদাহরণ স্ক্রিপ্টের একটি সংগ্রহ পাবেন যা আর্থ ইঞ্জিন ডেটা অ্যাক্সেস, প্রদর্শন এবং বিশ্লেষণ করে।
  3. "ইমেজ কালেকশন" এর অধীনে "ফিল্টার করা কম্পোজিট" উদাহরণটি নির্বাচন করুন। আপনি কেন্দ্র কনসোলে একটি স্ক্রিপ্ট উপস্থিত দেখতে পাবেন। স্ক্রিপ্ট চালানোর জন্য রান বোতাম টিপুন। ফিল্টার করা কম্পোজিট উদাহরণটি ল্যান্ডস্যাট 7 চিত্রগুলিকে নির্বাচন করে যা কলোরাডো এবং উটাহ-এর সীমানার মধ্যে ছেদ করে বা ছেদ করে৷ এটি তারপর নির্বাচিত চিত্রগুলির একটি সত্যিকারের রঙের সংমিশ্রণ প্রদর্শন করে। নমুনাগুলি আপনাকে সাধারণত ব্যবহৃত পদ্ধতিগুলির সাথে পরিচয় করিয়ে দেয়, যেমন filter() , clip() , এবং Map.addLayer()

আর্থ ইঞ্জিন ডেটা স্ট্রাকচার

আর্থ ইঞ্জিনের দুটি সবচেয়ে মৌলিক ভৌগলিক ডেটা স্ট্রাকচার হল Image এবং Feature যথাক্রমে রাস্টার এবং ভেক্টর ডেটা প্রকারের সাথে সম্পর্কিত। চিত্রগুলি ব্যান্ড এবং বৈশিষ্ট্যগুলির একটি অভিধান নিয়ে গঠিত। বৈশিষ্ট্যগুলি একটি Geometry এবং বৈশিষ্ট্যগুলির একটি অভিধান দ্বারা গঠিত। ছবিগুলির একটি স্ট্যাক (যেমন একটি ইমেজ টাইম সিরিজ) একটি ImageCollection দ্বারা পরিচালিত হয়। বৈশিষ্ট্যের একটি সংগ্রহ একটি FeatureCollection দ্বারা পরিচালিত হয়। আর্থ ইঞ্জিনের অন্যান্য মৌলিক ডেটা স্ট্রাকচারের মধ্যে রয়েছে Dictionary , List , Array , Date , Number এবং String ( এই টিউটোরিয়াল থেকে মৌলিক ডেটা টাইপ সম্পর্কে আরও জানুন। এটি মনে রাখা গুরুত্বপূর্ণ যে এগুলি সমস্ত সার্ভার-সাইড অবজেক্ট এবং ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট অবজেক্টের মতো ম্যানিপুলেট করা হয় না ( আরো জানুন )।

আর্থ ইঞ্জিন অ্যালগরিদম

API এ অপারেশন চালানোর বিভিন্ন উপায় আছে:

  • কলিং পদ্ধতি যা বস্তুর সাথে সংযুক্ত।
  • কলিং অ্যালগরিদম।
  • কলিং কোড এডিটর নির্দিষ্ট ফাংশন।
  • নতুন ফাংশন সংজ্ঞায়িত করা.

কোড এডিটরের ডক্স ট্যাব প্রতিটি API ক্লাসের পদ্ধতি তালিকাভুক্ত করে। উদাহরণস্বরূপ, Image শ্রেণীর একটি add() পদ্ধতি রয়েছে:

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

var image3 = image1.add(image2);

এই পদ্ধতিটি image2 এর ব্যান্ডগুলিকে image1 এর ব্যান্ডগুলিতে যুক্ত করে। ee.Algorithms বিভাগে বিশেষায়িত বা ডোমেন নির্দিষ্ট প্রক্রিয়াকরণের জন্য বর্তমানে সমর্থিত অ্যালগরিদমগুলির একটি তালিকা রয়েছে৷ উদাহরণস্বরূপ, একটি ইনপুট ডিজিটাল এলিভেশন মডেল (DEM) থেকে টপোগ্রাফিক স্তর তৈরি করতে:

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

var terrainImage = ee.Algorithms.Terrain(dem);

কোড এডিটর নির্দিষ্ট ফাংশনগুলির মধ্যে রয়েছে Map এবং Export পদ্ধতি, যা নিয়ন্ত্রণ করে কিভাবে মানচিত্র প্যানেলে স্তরগুলি যুক্ত করা হয় বা Google ড্রাইভে রপ্তানি করা হয়। জাভাস্ক্রিপ্ট ব্যবহার করেও ফাংশন তৈরি করা যায়

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

var myFunction = function(args) {
  // do something
  return something;
};

ম্যাপিং বিভাগে চিত্রিত হিসাবে, ব্যবহারকারীর সংজ্ঞায়িত ফাংশনগুলি ব্যবহার করে কাস্টম কার্যকারিতা তৈরি করতে বা সংগ্রহের উপাদানগুলি পরিবর্তন করার জন্য দরকারী:

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

var collection2 = collection1.map(aFunction);

নিম্নলিখিত বিভাগগুলি বিভিন্ন সাধারণ ব্যবহারের ক্ষেত্রে এই ধারণাগুলিকে চিত্রিত করে।

'হ্যালো ওয়ার্ল্ড!' জাভাস্ক্রিপ্ট

কনসোলে তথ্য মুদ্রণ করা একটি অবজেক্ট সম্পর্কে তথ্য পাওয়া, একটি গণনার সংখ্যাসূচক ফলাফল প্রদর্শন, অবজেক্ট মেটাডেটা প্রদর্শন বা ডিবাগিংয়ে সহায়তা করার জন্য একটি মৌলিক কাজ। আইকনিক 'হ্যালো ওয়ার্ল্ড!' কোড এডিটরের উদাহরণ হল:

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

print('Hello world!');

কোড এডিটরের কোড এডিটরে এই লাইনটি কপি করুন এবং Run এ ক্লিক করুন। নোট করুন যে আউটপুটটি কোড এডিটরের ডানদিকে কনসোল ট্যাবে প্রদর্শিত হয়। আরও রিমোট সেন্সিং প্রাসঙ্গিক উদাহরণের জন্য, নিম্নলিখিতটি একটি Landsat 8 ছবির মেটাডেটা প্রিন্ট করে:

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

print(ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'));

ল্যান্ডস্যাট চিত্রগুলির জন্য উপলব্ধ মেটাডেটা দেখতে কনসোলে আউটপুটটি যত্ন সহকারে পরিদর্শন করুন৷

মানচিত্রে ডেটা যোগ করা হচ্ছে

কনসোলে তথ্য মুদ্রণ করার পাশাপাশি, Map ডেটা যোগ করা হল ভৌগলিক ডেটা কল্পনা করার উপায়। এটি করতে Map.addLayer() ব্যবহার করুন। নিম্নলিখিত উদাহরণে, ee.Image() ব্যবহার করে একটি Image ইনস্ট্যান্টিয়েট করা হয়েছে (এই ছবিগুলিকে কীভাবে খুঁজে বের করা যায়) ব্যবহার করে, Map.addLayer() দিয়ে মানচিত্রে যোগ করা হয়েছে এবং মানচিত্রটি ছবিটিকে কেন্দ্র করে:

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

// Load an image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Center the map on the image.
Map.centerObject(image, 9);

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

Map.centerObject() এর দ্বিতীয় প্যারামিটারটি একটি জুম স্তর, যেখানে উচ্চ সংখ্যাগুলি বড় স্কেল নির্দেশ করে (আরও জুম ইন)। ডক্স ট্যাব থেকে অ্যাক্সেসযোগ্য API রেফারেন্সে Map ফাংশনের পরামিতিগুলি গভীরভাবে বর্ণনা করা হয়েছে। যদি চিত্রটির উপস্থিতি অসন্তোষজনক হয়, তাহলে Map.addLayer() এ একটি অতিরিক্ত আর্গুমেন্ট সহ ডিসপ্লে প্যারামিটারগুলি কনফিগার করুন। যেমন:

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

// Load the image from the archive.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Define visualization parameters in an object literal.
var vizParams = {bands: ['B5', 'B4', 'B3'], min: 0.02, max: 0.4, gamma: 1.3};

// Center the map on the image and display.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'Landsat 8 false color');

লক্ষ্য করুন যে ভিজ্যুয়ালাইজেশন প্যারামিটারগুলি একটি বস্তুর আক্ষরিক দ্বারা সংজ্ঞায়িত করা হয়েছে, যার মধ্যে প্রদর্শনের জন্য ব্যান্ডগুলির একটি তালিকা, একটি সর্বনিম্ন এবং সর্বাধিক প্রতিফলিত মান এবং একটি গামা মান রয়েছে৷ ( এখানে Landsat ব্যান্ড সম্পর্কে আরও জানুন। এখানে ইমেজ ভিজ্যুয়ালাইজেশন সম্পর্কে আরও জানুন)।

মানচিত্রে বৈশিষ্ট্য এবং বৈশিষ্ট্য সংগ্রহ যোগ করতে Map.addLayer() ব্যবহার করুন। যেমন,

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

var counties = ee.FeatureCollection('TIGER/2018/Counties');
Map.addLayer(counties, {}, 'counties');

ছবি, ছবি সংগ্রহ এবং বৈশিষ্ট্য সংগ্রহ খোঁজা

আর্থ ইঞ্জিন ডেটা ক্যাটালগ অনুসন্ধান করে ছবি, চিত্র সংগ্রহ এবং বৈশিষ্ট্য সংগ্রহগুলি আবিষ্কারযোগ্য। উদাহরণস্বরূপ, অনুসন্ধান ক্ষেত্রে 'ল্যান্ডস্যাট 8' প্রবেশ করালে রাস্টার ডেটাসেটের একটি তালিকা পাওয়া যায়। (আর্থ ইঞ্জিন ডেটাসেটের সম্পূর্ণ তালিকা আর্থ ইঞ্জিন ডেটা ক্যাটালগে রয়েছে)। একটি সংক্ষিপ্ত বিবরণ, অস্থায়ী প্রাপ্যতা, ডেটা প্রদানকারী এবং সংগ্রহ আইডি সম্পর্কে তথ্য পেতে ডেটাসেটের নামের উপর ক্লিক করুন। এই সংগ্রহের জন্য একটি পরিবর্তনশীল সহ আপনার স্ক্রিপ্টের শীর্ষে স্বয়ংক্রিয়ভাবে একটি আমদানি বিভাগ তৈরি করতে আমদানি বোতামে ক্লিক করুন৷

বিকল্পভাবে, সংগ্রহের আইডি কপি করুন এবং আপনার কোডে পেস্ট করুন। উদাহরণস্বরূপ, 'ল্যান্ডস্যাট 8' অনুসন্ধানের টিয়ার 1 TOA ফলাফলটি চয়ন করুন এবং নিম্নরূপ আইডিটি অনুলিপি করুন:

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

var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

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

ডেটা ক্যাটালগের মাধ্যমে বৈশিষ্ট্য সংগ্রহও পাওয়া যায়। তাদের উপস্থাপনা চিত্র সংগ্রহের তুলনায় ছোট, কিন্তু আপনি আন্তর্জাতিক, আদমশুমারি, জলাশয়, এবং সুরক্ষিত এলাকার সীমানা খুঁজে পাবেন, কয়েকটি নাম। এখানে আপনার নিজস্ব ভেক্টর ডেটাসেট আমদানি সম্পর্কে আরও জানুন।

ফিল্টারিং এবং বাছাই করা

ফলাফলের সংখ্যা সীমিত করার জন্য স্থান এবং/অথবা সময় অনুসারে একটি সংগ্রহ ফিল্টার করা প্রায়শই প্রয়োজন। উদাহরণস্বরূপ, সান ফ্রান্সিসকোর জন্য একটি ক্লাউড-মুক্ত দৃশ্য খুঁজে পেতে ল্যান্ডস্যাট 8 দৃশ্য সংগ্রহকে সাজানোর কাজটি বিবেচনা করুন। প্রথমত, আগ্রহের অঞ্চলটি সংজ্ঞায়িত করা প্রয়োজন। একটি পয়েন্ট প্রায়ই এটি জন্য দরকারী. কোড এডিটরের ডানদিকে ইন্সপেক্টর ট্যাবটি সক্রিয় করুন এবং আপনার আগ্রহের এলাকার কেন্দ্রের কাছে ক্লিক করুন, ইন্সপেক্টর ট্যাব থেকে স্থানাঙ্কগুলি অনুলিপি করুন, তারপর ব্যবহার করে একটি Point তৈরি করুন:

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

var point = ee.Geometry.Point(-122.262, 37.8719);

শুরু এবং শেষ তারিখগুলি তৈরি করুন:

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

var start = ee.Date('2014-06-01');
var finish = ee.Date('2014-10-01');

পয়েন্ট এবং তারিখগুলি ব্যবহার করে ল্যান্ডস্যাট 8 সংগ্রহ ফিল্টার করুন, তারপর একটি মেটাডেটা বৈশিষ্ট্য ব্যবহার করে সাজান (ল্যান্ডস্যাট 8 দৃশ্যের মেটাডেটা পরিদর্শনের সময় আবিষ্কৃত):

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

var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(point)
  .filterDate(start, finish)
  .sort('CLOUD_COVER', true);

এই সংগ্রহ নিরাপদে মুদ্রিত এবং পরিদর্শন করা যেতে পারে. (যদি সংগ্রহে অনেকগুলি ছবি থাকে, তবে এটি মুদ্রণ করা হয় খুব ধীর হবে, সময় শেষ হবে বা একটি ত্রুটি ফিরিয়ে দেবে)। লক্ষ্য করুন যে সংগ্রহের ছবিগুলি ImageCollection 'বৈশিষ্ট্য' বৈশিষ্ট্যে সংরক্ষিত একটি List । সংগ্রহে থাকা যেকোনো ছবির আইডি উপরের মত Image কন্সট্রাক্টরে কপি করা যেতে পারে। বিকল্পভাবে, প্রথম ছবি পান (সর্বনিম্ন মেঘের আবরণ):

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

var first = filteredCollection.first();

আর্গুমেন্ট হিসাবে ee.Filter দিয়ে filter() ব্যবহার করে সম্পূর্ণ আর্থ ইঞ্জিন ফিল্টারিং কার্যকারিতা অ্যাক্সেস করুন। (উপরে ব্যবহৃত filterBounds() এবং filterDate() পদ্ধতি হল শর্টকাট)। উদাহরণস্বরূপ, নিম্নলিখিতটি একটি Filter তৈরি করে, এটি FeatureCollection ফিল্টার করতে ব্যবহার করে এবং ফলাফল প্রদর্শন করে:

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

// Load a feature collection.
var featureCollection = ee.FeatureCollection('TIGER/2016/States');

// Filter the collection.
var filteredFC = featureCollection.filter(ee.Filter.eq('NAME', 'California'));

// Display the collection.
Map.setCenter(-119.604, 37.798, 6);
Map.addLayer(filteredFC, {}, 'California');

ব্যান্ড গণিত

Image পদ্ধতি ব্যবহার করে চিত্রগুলিতে গাণিতিক ক্রিয়াকলাপ সম্পাদন করুন। এর মধ্যে ব্যান্ড রিকম্বিনেশন (বর্ণালী সূচক), চিত্রের পার্থক্য বা গাণিতিক ক্রিয়াকলাপ যেমন ধ্রুবক দ্বারা গুণ করা অন্তর্ভুক্ত থাকতে পারে। উদাহরণস্বরূপ, 20 বছরের ব্যবধানে নরমালাইজড ডিফারেন্স ভেজিটেশন ইনডেক্স (NDVI) চিত্রগুলির মধ্যে পার্থক্য গণনা করুন:

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

// This function gets NDVI from Landsat 5 imagery.
var getNDVI = function(image) {
  return image.normalizedDifference(['B4', 'B3']);
};

// Load two Landsat 5 images, 20 years apart.
var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604');
var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611');

// Compute NDVI from the scenes.
var ndvi1 = getNDVI(image1);
var ndvi2 = getNDVI(image2);

// Compute the difference in NDVI.
var ndviDifference = ndvi2.subtract(ndvi1);

এই উদাহরণে একটি ব্যবহারকারী সংজ্ঞায়িত function ব্যবহার লক্ষ্য করুন. পরবর্তী বিভাগে ফাংশন সম্পর্কে আরো.

ম্যাপিং (ফর-লুপের পরিবর্তে কী করতে হবে)

একটি সংগ্রহের আইটেমগুলির উপর পুনরাবৃত্তি করতে map() ব্যবহার করুন। (আর্থ ইঞ্জিনে লুপগুলি এটি করার সঠিক উপায় নয় এবং এড়ানো উচিত)। map() ফাংশনটি একটি ImageCollection , একটি FeatureCollection বা একটি List প্রয়োগ করা যেতে পারে এবং একটি function তার যুক্তি হিসেবে গ্রহণ করে। ফাংশনের আর্গুমেন্ট হল সংগ্রহের একটি উপাদান যার উপর এটি ম্যাপ করা হয়। এটি সংগ্রহের প্রতিটি উপাদানকে একইভাবে পরিবর্তন করার জন্য দরকারী, উদাহরণস্বরূপ যোগ করা। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি একটি ImageCollection প্রতিটি ছবিতে একটি NDVI ব্যান্ড যুক্ত করে:

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

// This function gets NDVI from Landsat 8 imagery.
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']));
};

// Load the Landsat 8 TOA data, filter by location and date.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-06-01', '2014-10-01');

// Map the function over the collection.
var ndviCollection = collection.map(addNDVI);

আরেকটি সাধারণ কাজ হল FeatureCollection এর বৈশিষ্ট্যগুলিতে একটি নতুন সম্পত্তি (বা 'অ্যাট্রিবিউট' বা 'ক্ষেত্র') যোগ করা। নিম্নলিখিত উদাহরণে, নতুন সম্পত্তি দুটি বিদ্যমান বৈশিষ্ট্য জড়িত একটি গণনা:

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

// This function creates a new property that is the sum of two existing properties.
var addField = function(feature) {
  var sum = ee.Number(feature.get('property1')).add(feature.get('property2'));
  return feature.set({'sum': sum});
};

// Create a FeatureCollection from a list of Features.
var features = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point(-122.4536, 37.7403),
    {property1: 100, property2: 100}),
    ee.Feature(ee.Geometry.Point(-118.2294, 34.039),
    {property1: 200, property2: 300}),
]);

// Map the function over the collection.
var featureCollection = features.map(addField);

// Print a selected property of one Feature.
print(featureCollection.first().get('sum'));

// Print the entire FeatureCollection.
print(featureCollection);

add() পদ্ধতি ব্যবহার করার জন্য সম্পত্তির মানটিকে একটি সংখ্যা হিসাবে স্বীকৃত করার জন্য প্রয়োজনীয় ee.Number এ কাস্ট করুন। সংগ্রহের ধরন map() দ্বারা পরিবর্তন করা যেতে পারে। যেমন:

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

// This function returns the image centroid as a new Feature.
var getGeom = function(image) {
  return ee.Feature(image.geometry().centroid(), {foo: 1});
};

// Load a Landsat 8 TOA collection.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-06-01', '2014-10-01');

// Map the function over the ImageCollection.
var featureCollection = ee.FeatureCollection(collection.map(getGeom));

// Print the collection.
print(featureCollection);

ইমেজ সেন্ট্রয়েড থেকে তৈরি প্রতিটি বৈশিষ্ট্যের জন্য যোগ করা সম্পত্তি ( foo ) নোট করুন। চূড়ান্ত লাইনে, কাস্ট ফলাফল সংগ্রহকে FeatureCollection হিসাবে স্বীকৃত করে তোলে।

হ্রাস করা

আর্থ ইঞ্জিনে সময়, স্থান, ব্যান্ড, অ্যারে এবং অন্যান্য ডেটা স্ট্রাকচারের সাথে ডেটা একত্রিত করার উপায় হ্রাস করা। এপিআই-এ এই উদ্দেশ্যে বিভিন্ন পদ্ধতি বিদ্যমান। উদাহরণস্বরূপ, একটি ImageCollection এর একটি কম্পোজিট তৈরি করতে, সংকলনে থাকা ছবিগুলিকে একটি ছবিতে কমাতে reduce() ব্যবহার করুন। একটি সাধারণ উদাহরণ হল আগে সংজ্ঞায়িত ল্যান্ডস্যাট 8 সংগ্রহে পাঁচটি সর্বনিম্ন মেঘলা দৃশ্যের মধ্যবর্তী সংমিশ্রণ তৈরি করা:

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

// Load a Landsat 8 TOA collection.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  // Filter by date and location.
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-01-01', '2014-12-31')
  // Sort by increasing cloudiness.
  .sort('CLOUD_COVER');

// Compute the median of each pixel for each band of the 5 least cloudy scenes.
var median = collection.limit(5).reduce(ee.Reducer.median());

Feature বা FeatureCollection দ্বারা সংজ্ঞায়িত অঞ্চলগুলিতে একটি চিত্রের পরিসংখ্যান পাওয়ার উপায়ও হ্রাস করা। ধরুন কাজটি হল আগ্রহের একটি এলাকার মধ্যে গড় পিক্সেল মান গণনা করা। এই উদ্দেশ্যে reduceRegion() ব্যবহার করুন। যেমন:

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

// Load and display a Landsat TOA image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.3});

// Create an arbitrary rectangle as a region and display it.
var region = ee.Geometry.Rectangle(-122.2806, 37.1209, -122.0554, 37.2413);
Map.addLayer(region);

// Get a dictionary of means in the region.  Keys are bandnames.
var mean = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region,
  scale: 30
});

Reducers ডক থেকে হ্রাসকারী সম্পর্কে আরও জানুন।

মাস্কিং

একটি ee.Image এর প্রতিটি পিক্সেলের একটি মান এবং একটি মুখোশ উভয়ই থাকে যা 0 (কোন তথ্য নেই) থেকে 1 পর্যন্ত। মাস্কড পিক্সেল (যেটিতে মাস্ক==0) কোনো ডেটা হিসাবে বিবেচিত হয় না। 0 < মাস্ক ≤ 1 সহ পিক্সেলগুলির একটি মান আছে, তবে এটি সংখ্যাসূচক গণনার জন্য মুখোশ দ্বারা ওজন করা হয়।

আপনি পিক্সেলগুলিকে স্বচ্ছ করতে পারেন বা মাস্ক ব্যবহার করে বিশ্লেষণ থেকে বাদ দিতে পারেন। পিক্সেলগুলি মাস্ক করা হয় যখন মুখোশের মান শূন্য হয়। চিত্রের ভিন্নতার উদাহরণ অব্যাহত রেখে, পার্থক্যের ব্যবধানে বর্ধিত এবং হ্রাসকৃত NDVI-এর ক্ষেত্রগুলি প্রদর্শন করতে একটি মাস্ক ব্যবহার করুন:

// This function gets NDVI from Landsat 5 imagery.
var getNDVI = function(image) {
  return image.normalizedDifference(['B4', 'B3']);
};

// Load two Landsat 5 images, 20 years apart.
var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604');
var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611');

// Compute NDVI from the scenes.
var ndvi1 = getNDVI(image1);
var ndvi2 = getNDVI(image2);

// Compute the difference in NDVI.
var ndviDifference = ndvi2.subtract(ndvi1);
// Load the land mask from the SRTM DEM.
var landMask = ee.Image('CGIAR/SRTM90_V4').mask();

// Update the NDVI difference mask with the land mask.
var maskedDifference = ndviDifference.updateMask(landMask);

// Display the masked result.
var vizParams = {min: -0.5, max: 0.5, palette: ['FF0000', 'FFFFFF', '0000FF']};
Map.setCenter(-122.2531, 37.6295, 9);
Map.addLayer(maskedDifference, vizParams, 'NDVI difference');

এই উদাহরণে, নোট করুন যে NDVI পার্থক্যের মাস্ক updateMask() দিয়ে ল্যান্ড মাস্ক দ্বারা আপডেট করা হয়েছে। এটি NDVI ডিফারেন্স পিক্সেলের মাস্ককে ল্যান্ড মাস্কে সেট করে যেখানে NDVI ডিফারেন্স মাস্ক অ-শূন্য হয়।

মাস্কিং বিশ্লেষণ থেকে ডেটা বাদ দেওয়ার জন্যও কার্যকর। Reducing বিভাগ থেকে reduceRegion() উদাহরণ বিবেচনা করুন। ধরুন কাজটি হল মেঘলা পিক্সেল বাদে সান্তা ক্লারা কাউন্টি, CA-এর জন্য একটি মৌসুমী গড় NDVI গণনা করা। নিম্নলিখিত উদাহরণটি একাধিক ধারণা প্রদর্শন করে: ফিল্টারিং, ম্যাপিং, হ্রাস এবং একটি ক্লাউড মাস্ক ব্যবহার:

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

// This function gets NDVI from a Landsat 8 image.
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']));
};

// This function masks cloudy pixels.
var cloudMask = function(image) {
  var clouds = ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']);
  return image.updateMask(clouds.lt(10));
};

// Load a Landsat collection, map the NDVI and cloud masking functions over it.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point([-122.262, 37.8719]))
  .filterDate('2014-03-01', '2014-05-31')
  .map(addNDVI)
  .map(cloudMask);

// Reduce the collection to the mean of each pixel and display.
var meanImage = collection.reduce(ee.Reducer.mean());
var vizParams = {bands: ['B5_mean', 'B4_mean', 'B3_mean'], min: 0.02, max: 0.4};
Map.addLayer(meanImage, vizParams, 'mean');

// Load a region in which to compute the mean and display it.
var counties = ee.FeatureCollection('TIGER/2018/Counties');
var santaClara = ee.Feature(counties.filter(ee.Filter.eq('NAME', 'Santa Clara')).first());
Map.addLayer(santaClara);

// Get the mean of NDVI in the region.
var mean = meanImage.select(['nd_mean']).reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: santaClara.geometry(),
  scale: 30
});

// Print mean NDVI for the region.
mean.get('nd_mean').evaluate(function(val){
  print('Santa Clara spring mean NDVI:', val);
});