একটি চিত্র অঞ্চলের পরিসংখ্যান

reduceRegion

একটি ee.Image এর একটি অঞ্চলে পিক্সেল মানের পরিসংখ্যান পেতে, image.reduceRegion() ব্যবহার করুন। এটি অঞ্চল(গুলি) এর সমস্ত পিক্সেলকে পরিসংখ্যান বা অঞ্চলের পিক্সেল ডেটার অন্যান্য কম্প্যাক্ট উপস্থাপনায় (যেমন হিস্টোগ্রাম) হ্রাস করে। অঞ্চলটিকে একটি Geometry হিসাবে উপস্থাপন করা হয়, যা একটি বহুভুজ হতে পারে, যাতে অনেকগুলি পিক্সেল থাকতে পারে, বা এটি একটি একক বিন্দু হতে পারে, এই ক্ষেত্রে অঞ্চলটিতে শুধুমাত্র একটি পিক্সেল থাকবে৷ উভয় ক্ষেত্রেই, চিত্র 1-এ যেমন দেখানো হয়েছে, আউটপুট হল একটি পরিসংখ্যান যা অঞ্চলের পিক্সেল থেকে প্রাপ্ত।

অঞ্চল চিত্র হ্রাস করুন
চিত্র 1. একটি চিত্র এবং একটি অঞ্চলে প্রয়োগ করা একটি ee.Reducer একটি চিত্র৷

reduceRegion() ব্যবহার করে একটি চিত্রের একটি অঞ্চলে পিক্সেল পরিসংখ্যান পাওয়ার উদাহরণের জন্য, সিয়েরা নেভাদা কনিফেরাস ফরেস্টের সীমানার মধ্যে একটি 5-বছরের ল্যান্ডস্যাট কম্পোজিটের গড় বর্ণালী মান খুঁজে বের করার কথা বিবেচনা করুন (চিত্র 2 দ্বারা চিত্রিত):

// Load input imagery: Landsat 7 5-year composite.
var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012');

// Load an input region: Sierra Nevada.
var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3')
  .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada'))
  .first());

// Reduce the region. The region parameter is the Feature geometry.
var meanDictionary = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region.geometry(),
  scale: 30,
  maxPixels: 1e9
});

// The result is a Dictionary.  Print it.
print(meanDictionary);

গণনা জোরদার করার জন্য, ফলাফলটি মুদ্রণ করা যথেষ্ট, যা কোড এডিটর কনসোলে একটি Dictionary হিসাবে প্রদর্শন করবে। আউটপুট এমন কিছু হওয়া উচিত:

B1: 25.406029716816853
B2: 23.971497014238988
B3: 22.91059593763103
B4: 54.83164133293403
B5: 38.07655472573677
B6_VCID_2: 198.93216428012906
B7: 24.063261634961563
অঞ্চল চিত্র হ্রাস করুন
চিত্র 2. ক্যালিফোর্নিয়া এবং নেভাদার জন্য ল্যান্ডস্যাট ইমেজ ডেটার মিথ্যা রঙের সংমিশ্রণ। যে অঞ্চলটি কমাতে হবে সেটি সাদা রঙে দেখানো হয়েছে।

উল্লেখ্য যে এই উদাহরণে রিডুসারে ইনপুট করার জন্য সর্বাধিক সংখ্যক পিক্সেলের জন্য reducer ( ee.Reducer.mean() ), geometry ( region.geometry() ), scale (30 মিটার) এবং maxPixels প্রদান করে হ্রাসটি নির্দিষ্ট করা হয়েছে। একটি স্কেল সর্বদা reduceRegion() কলে নির্দিষ্ট করা উচিত। এর কারণ হল জটিল প্রসেসিং প্রবাহে, যা বিভিন্ন স্কেলের সাথে বিভিন্ন উত্স থেকে ডেটা জড়িত হতে পারে, ইনপুট থেকে আউটপুটের স্কেল দ্ব্যর্থহীনভাবে নির্ধারিত হবে না। সেই ক্ষেত্রে, স্কেলটি 1 ডিগ্রিতে ডিফল্ট হয়, যা সাধারণত অসন্তোষজনক ফলাফল দেয়। আর্থ ইঞ্জিন কীভাবে স্কেল পরিচালনা করে সে সম্পর্কে আরও তথ্যের জন্য এই পৃষ্ঠাটি দেখুন।

স্কেল সেট করার দুটি উপায় আছে: scale প্যারামিটার নির্দিষ্ট করে, অথবা একটি CRS এবং CRS রূপান্তর নির্দিষ্ট করে। (সিআরএস এবং সিআরএস রূপান্তর সম্পর্কে আরও তথ্যের জন্য শব্দকোষ দেখুন)। উদাহরণস্বরূপ, meanDictionary reduction (উপরে) নিম্নলিখিতগুলির সমতুল্য:

// As an alternative to specifying scale, specify a CRS and a CRS transform.
// Make this array by constructing a 4326 projection at 30 meters,
// then copying the bounds of the composite, from composite.projection().
var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563];

// Perform the reduction, print the result.
print(image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region.geometry(),
  crs: 'EPSG:4326',
  crsTransform: affine,
  maxPixels: 1e9
}));

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

অঞ্চলে পিক্সেল

পিক্সেলগুলি নির্দিষ্ট স্কেল এবং অভিক্ষেপে প্রয়োগ করা নিম্নলিখিত নিয়ম অনুসারে অঞ্চলে (এবং ওজনযুক্ত) হতে নির্ধারিত হয়:

  • ওজনহীন রিডুসার (যেমন ee.Reducer.count() বা ee.Reducer.mean().unweighted() ): পিক্সেল অন্তর্ভুক্ত করা হয় যদি তাদের সেন্ট্রোয়েড অঞ্চলে হয় এবং ছবির মুখোশ অ-শূন্য হয়।
  • ওয়েটেড রিডুসার (যেমন ee.Reducer.mean() ): পিক্সেল অন্তর্ভুক্ত করা হয় যদি অন্তত (প্রায়) পিক্সেলের 0.5% অঞ্চলে থাকে এবং ছবির মুখোশ অ-শূন্য হয়; তাদের ওজন হল ছবির মুখোশের সর্বনিম্ন এবং (আনুমানিক) পিক্সেলের ভগ্নাংশ অঞ্চল দ্বারা আচ্ছাদিত৷

গণনা সফল করতে maxPixels প্যারামিটার প্রয়োজন। যদি এই প্যারামিটারটি উদাহরণ থেকে বাদ দেওয়া হয়, একটি ত্রুটি ফেরত দেওয়া হয়, যা দেখতে এরকম কিছু দেখায়:

এই ত্রুটিগুলি কাটিয়ে উঠতে একাধিক বিকল্প রয়েছে: maxPixels বাড়ান, যেমন উদাহরণে, scale বাড়ান বা bestEffort কে সত্যে সেট করুন, যা স্বয়ংক্রিয়ভাবে একটি নতুন (বড়) স্কেল গণনা করে যাতে maxPixels অতিক্রম না হয়। আপনি maxPixels নির্দিষ্ট না করলে, ডিফল্ট মান ব্যবহার করা হয়।