Reducer ওভারভিউ

রিডুসার হল আর্থ ইঞ্জিনে সময়, স্থান, ব্যান্ড, অ্যারে এবং অন্যান্য ডেটা স্ট্রাকচারের সাথে ডেটা একত্রিত করার উপায়। ee.Reducer ক্লাস নির্দিষ্ট করে কিভাবে ডেটা একত্রিত করা হয়। এই শ্রেণীর হ্রাসকারীরা একত্রিতকরণের জন্য ব্যবহার করার জন্য একটি সাধারণ পরিসংখ্যান নির্দিষ্ট করতে পারে (যেমন সর্বনিম্ন, সর্বোচ্চ, গড়, মধ্যক, মানক বিচ্যুতি ইত্যাদি), বা ইনপুট ডেটার আরও জটিল সারাংশ (যেমন হিস্টোগ্রাম, লিনিয়ার রিগ্রেশন, তালিকা)। সময়ের সাথে হ্রাস ঘটতে পারে ( imageCollection.reduce() ), স্পেস ( image.reduceRegion() , aggregate_ image.reduceNeighborhood() ), ব্যান্ড ( image.reduce() ), বা FeatureCollection ( featureCollection.reduceColumns() বা FeatureCollection পদ্ধতি যা শুরু হয় এর অ্যাট্রিবিউট স্পেস।

Reducers ইনপুট এবং আউটপুট আছে

হ্রাসকারীরা একটি ইনপুট ডেটাসেট নেয় এবং একটি একক আউটপুট তৈরি করে। যখন একটি মাল্টি-ব্যান্ড ইমেজে একটি একক ইনপুট রিডুসার প্রয়োগ করা হয়, তখন আর্থ ইঞ্জিন স্বয়ংক্রিয়ভাবে রিডুসারের প্রতিলিপি করে এবং প্রতিটি ব্যান্ডে আলাদাভাবে প্রয়োগ করে। ফলস্বরূপ, আউটপুট ইমেজ ইনপুট ইমেজ হিসাবে একই সংখ্যক ব্যান্ড আছে; আউটপুটে প্রতিটি ব্যান্ড হল ইনপুট ডেটাতে সংশ্লিষ্ট ব্যান্ড থেকে পিক্সেলের হ্রাস। কিছু হ্রাসকারী ইনপুট ডেটাসেটের টুপল নেয়। এই হ্রাসকারীগুলি প্রতিটি ব্যান্ডের জন্য স্বয়ংক্রিয়ভাবে প্রতিলিপি করা হবে না। উদাহরণস্বরূপ, ee.Reducer.LinearRegression() একটি নির্দিষ্ট ক্রমে একাধিক ভবিষ্যদ্বাণীকারী ডেটাসেট (রিগ্রেশনে স্বাধীন ভেরিয়েবলের প্রতিনিধিত্ব করে) নেয় ( রিগ্রেশন রিডিউসার্স দেখুন)।

কিছু রিডুসার একাধিক আউটপুট তৈরি করে, যেমন ee.Reducer.minMax() , ee.Reducer.histogram() বা ee.Reducer.toList() । যেমন:

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

// Load and filter the Sentinel-2 image collection.
var collection = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
    .filterDate('2016-01-01', '2016-12-31')
    .filterBounds(ee.Geometry.Point([-81.31, 29.90]));

// Reduce the collection.
var extrema = collection.reduce(ee.Reducer.minMax());

পাইথন সেটআপ

পাইথন এপিআই এবং ইন্টারেক্টিভ ডেভেলপমেন্টের জন্য geemap ব্যবহার করার জন্য পাইথন এনভায়রনমেন্ট পৃষ্ঠাটি দেখুন।

import ee
import geemap.core as geemap

Colab (পাইথন)

# Load and filter the Sentinel-2 image collection.
collection = (
    ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
    .filterDate('2016-01-01', '2016-12-31')
    .filterBounds(ee.Geometry.Point([-81.31, 29.90]))
)

# Reduce the collection.
extrema = collection.reduce(ee.Reducer.minMax())

এটি ইনপুটগুলির ব্যান্ডের দ্বিগুণ সংখ্যা সহ একটি আউটপুট তৈরি করবে, যেখানে আউটপুটে ব্যান্ডের নামগুলিতে ব্যান্ডের নামের সাথে '_min' বা '_max' যুক্ত থাকে।

আউটপুট প্রকার গণনার সাথে মিলিত হওয়া উচিত। উদাহরণস্বরূপ, একটি ImageCollection এ প্রয়োগ করা একটি রিডুসার একটি Image আউটপুট আছে। যেহেতু আউটপুটটিকে একটি পিক্সেল মান হিসাবে ব্যাখ্যা করা হয়েছে, তাই আপনাকে অবশ্যই একটি ImageCollection কমাতে একটি সংখ্যাসূচক আউটপুট সহ রিডুসার ব্যবহার করতে হবে ( toList() বা histogram() এর মতো হ্রাসকারীরা কাজ করবে না)।

Reducers ওজনযুক্ত ইনপুট ব্যবহার

ডিফল্টরূপে, পিক্সেল মানগুলির উপর হ্রাসগুলি তাদের মুখোশ দ্বারা ওজন করা হয়, যদিও এই আচরণটি পরিবর্তন করা যেতে পারে ( ওজন বিভাগ দেখুন)। 0 এর সমান মাস্ক সহ পিক্সেল হ্রাসে ব্যবহার করা হবে না।

হ্রাসকারী সমন্বয়

যদি আপনার উদ্দেশ্য একই ইনপুটগুলিতে একাধিক রিডুসার প্রয়োগ করা হয়, তবে দক্ষতার জন্য রিডুসারগুলিকে combine() ভাল অনুশীলন। বিশেষভাবে, sharedInputs true সেট করে একটি রিডুসারে combine() কল করার ফলে ডেটার উপর শুধুমাত্র একটি পাস হবে। উদাহরণস্বরূপ, একটি ছবিতে পিক্সেলের গড় এবং মানক বিচ্যুতি গণনা করতে, আপনি এইরকম কিছু ব্যবহার করতে পারেন:

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

// Load a Landsat 8 image.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');

// Combine the mean and standard deviation reducers.
var reducers = ee.Reducer.mean().combine({
  reducer2: ee.Reducer.stdDev(),
  sharedInputs: true
});

// Use the combined reducer to get the mean and SD of the image.
var stats = image.reduceRegion({
  reducer: reducers,
  bestEffort: true,
});

// Display the dictionary of band means and SDs.
print(stats);

পাইথন সেটআপ

পাইথন এপিআই এবং ইন্টারেক্টিভ ডেভেলপমেন্টের জন্য geemap ব্যবহার করার জন্য পাইথন এনভায়রনমেন্ট পৃষ্ঠাটি দেখুন।

import ee
import geemap.core as geemap

Colab (পাইথন)

# Load a Landsat 8 image.
image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')

# Combine the mean and standard deviation reducers.
reducers = ee.Reducer.mean().combine(
    reducer2=ee.Reducer.stdDev(), sharedInputs=True
)

# Use the combined reducer to get the mean and SD of the image.
stats = image.reduceRegion(reducer=reducers, bestEffort=True)

# Display the dictionary of band means and SDs.
display(stats)

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

আপনি যদি ওজনহীন ইনপুট ব্যবহার করে রিডুসার এবং ওয়েটেড ইনপুট ব্যবহার করে রিডুসারকে একত্রিত করছেন, তাহলে সমস্ত ওজনযুক্ত ইনপুট অবশ্যই সমস্ত ওজনহীন ইনপুটগুলির আগে হতে হবে।