ওয়েটেড রিডাকশন

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

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

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

// Create an arbitrary region.
var geometry = ee.Geometry.Rectangle(-122.496, 37.532, -121.554, 37.538);

// Make an NDWI image.  It will have one band named 'nd'.
var ndwi = image.normalizedDifference(['B3', 'B5']);

// Compute the weighted mean of the NDWI image clipped to the region.
var weighted = ndwi.clip(geometry)
  .reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: geometry,
    scale: 30})
  .get('nd');

// Compute the UN-weighted mean of the NDWI image clipped to the region.
var unweighted = ndwi.clip(geometry)
  .reduceRegion({
    reducer: ee.Reducer.mean().unweighted(),
    geometry: geometry,
    scale: 30})
  .get('nd');

// Observe the difference between weighted and unweighted reductions.
print('weighted:', weighted);
print('unweighted', unweighted);

পাইথন সেটআপ

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

import ee
import geemap.core as geemap

Colab (পাইথন)

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

# Create an arbitrary region.
geometry = ee.Geometry.Rectangle(-122.496, 37.532, -121.554, 37.538)

# Make an NDWI image.  It will have one band named 'nd'.
ndwi = image.normalizedDifference(['B3', 'B5'])

# Compute the weighted mean of the NDWI image clipped to the region.
weighted = (
    ndwi.clip(geometry)
    .reduceRegion(reducer=ee.Reducer.mean(), geometry=geometry, scale=30)
    .get('nd')
)

# Compute the UN-weighted mean of the NDWI image clipped to the region.
unweighted = (
    ndwi.clip(geometry)
    .reduceRegion(
        reducer=ee.Reducer.mean().unweighted(), geometry=geometry, scale=30
    )
    .get('nd')
)

# Observe the difference between weighted and unweighted reductions.
display('weighted:', weighted)
display('unweighted', unweighted)

রিডুসারে unweighted() কল করার ফলে অঞ্চলের প্রান্তে থাকা পিক্সেলগুলির একটি ওজন প্রাপ্ত হওয়ার কারণে ফলাফলের পার্থক্য।

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

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

// Load an input Landsat 8 image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_186059_20130419');

// Compute cloud score and reverse it such that the highest
// weight (100) is for the least cloudy pixels.
var cloudWeight = ee.Image(100).subtract(
  ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']));

// Compute NDVI and add the cloud weight band.
var ndvi = image.normalizedDifference(['B5', 'B4']).addBands(cloudWeight);

// Define an arbitrary region in a cloudy area.
var region = ee.Geometry.Rectangle(9.9069, 0.5981, 10.5, 0.9757);

// Use a mean reducer.
var reducer = ee.Reducer.mean();

// Compute the unweighted mean.
var unweighted = ndvi.select(['nd']).reduceRegion(reducer, region, 30);

// compute mean weighted by cloudiness.
var weighted = ndvi.reduceRegion(reducer.splitWeights(), region, 30);

// Observe the difference as a result of weighting by cloudiness.
print('unweighted:', unweighted);
print('weighted:', weighted);

পাইথন সেটআপ

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

import ee
import geemap.core as geemap

Colab (পাইথন)

# Load an input Landsat 8 image.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_186059_20130419')

# Compute cloud score and reverse it such that the highest
# weight (100) is for the least cloudy pixels.
cloud_weight = ee.Image(100).subtract(
    ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud'])
)

# Compute NDVI and add the cloud weight band.
ndvi = image.normalizedDifference(['B5', 'B4']).addBands(cloud_weight)

# Define an arbitrary region in a cloudy area.
region = ee.Geometry.Rectangle(9.9069, 0.5981, 10.5, 0.9757)

# Use a mean reducer.
reducer = ee.Reducer.mean()

# Compute the unweighted mean.
unweighted = ndvi.select(['nd']).reduceRegion(reducer, region, 30)

# compute mean weighted by cloudiness.
weighted = ndvi.reduceRegion(reducer.splitWeights(), region, 30)

# Observe the difference as a result of weighting by cloudiness.
display('unweighted:', unweighted)
display('weighted:', weighted)

লক্ষ্য করুন যে cloudWeight reduceRegion() কল করার আগে একটি ব্যান্ড হিসাবে যুক্ত করা দরকার। ফলাফলটি নির্দেশ করে যে মেঘলা পিক্সেলের ওজন হ্রাসের ফলে আনুমানিক গড় এনডিভিআই বেশি।