عمليات تقليل ImageCollection

لنفترض أنّك بحاجة إلى احتساب المتوسط على سلسلة زمنية من الصور التي تمثّلها ImageCollection. لتقليل ImageCollection، استخدِم imageCollection.reduce(). يؤدي ذلك إلى تقليل مجموعة الصور إلى صورة فردية كما هو موضّح في الشكل 1. على وجه التحديد، يتم احتساب النتيجة حسب البكسل، بحيث يتكون كل بكسل في النتيجة من القيمة المتوسطة لكل الصور في المجموعة في ذلك الموقع. للحصول على إحصاءات أخرى، مثل المتوسط والمبلغ والتباين والنسبة المئوية التعسّفية وما إلى ذلك، يجب اختيار المُخفِّض المناسب وتطبيقه. (اطّلِع على علامة التبويب المستندات في أداة تعديل الرموز للحصول على قائمة بكل المُخفِّضات المتاحة حاليًا). بالنسبة إلى الإحصاءات الأساسية، مثل الحد الأدنى والحد الأقصى والمتوسّط وما إلى ذلك، تتضمّن دالة ImageCollection طرق اختصار مثل min() max() وmean() وما إلى ذلك. تعمل هذه الطرق بالطريقة نفسها تمامًا التي تعمل بها دالة reduce()، باستثناء أنّ أسماء النطاقات الناتجة لن يتم إلحاق اسم المُخفِّض بها.

imageCollection.reduce diagram
الشكل 1. صورة توضيحية لتطبيق ee.Reducer على ImageCollection

للحصول على مثال على تقليل ImageCollection، ننصحك بالاطّلاع على مجموعة من صور Landsat 5 التي تمّت فلترتها حسب المسار والصف. يستخدم الرمز البرمجي التالي reduce() لتقليل المجموعة إلى Image واحد (يُستخدَم هنا مُخفِّض متوسّط ببساطة لأغراض توضيحية):

محرِّر الرموز البرمجية (JavaScript)

// Load an image collection, filtered so it's not too much data.
var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1')
  .filterDate('2008-01-01', '2008-12-31')
  .filter(ee.Filter.eq('WRS_PATH', 44))
  .filter(ee.Filter.eq('WRS_ROW', 34));

// Compute the median in each band, each pixel.
// Band names are B1_median, B2_median, etc.
var median = collection.reduce(ee.Reducer.median());

// The output is an Image.  Add it to the map.
var vis_param = {bands: ['B4_median', 'B3_median', 'B2_median'], gamma: 1.6};
Map.setCenter(-122.3355, 37.7924, 9);
Map.addLayer(median, vis_param);

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# Load an image collection, filtered so it's not too much data.
collection = (
    ee.ImageCollection('LANDSAT/LT05/C02/T1')
    .filterDate('2008-01-01', '2008-12-31')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
)

# Compute the median in each band, each pixel.
# Band names are B1_median, B2_median, etc.
median = collection.reduce(ee.Reducer.median())

# The output is an Image.  Add it to the map.
vis_param = {'bands': ['B4_median', 'B3_median', 'B2_median'], 'gamma': 1.6}
m = geemap.Map()
m.set_center(-122.3355, 37.7924, 9)
m.add_layer(median, vis_param)
m

يؤدي ذلك إلى عرض Image متعدد النطاقات، وكل بكسل فيه هو المتوسط لجميع البكسلات غير المحجوبة في ImageCollection في موضع البكسل هذا. على وجه التحديد، تم تكرار المُخفِّض لكل نطاق من صور الإدخال، ما يعني أنّه يتم احتساب المتوسط بشكل مستقل في كل نطاق. يُرجى العِلم أنّ أسماء النطاقات تحتوي على اسم المُخفِّض المُرفَق: 'B1_median' و'B2_median' وما إلى ذلك. من المفترض أن يبدو الناتج على النحو الموضّح في الشكل 2.

لمزيد من المعلومات عن تقليل مجموعات الصور، يُرجى الاطّلاع على قسم التقليل في مستندات ImageCollection. على وجه الخصوص، يُرجى العِلم أنّ الصور التي يتم إنشاؤها عن طريق تصغير ImageCollection لا تتضمّن أيّ إسقاط. وهذا يعني أنّه عليك ضبط المقياس صراحةً في أي عمليات حسابية تتضمّن مخرجات صور محوسبة من خلال تقليل ImageCollection.

ناتج ImageCollection.reduce
الشكل 2: صورة مركبة بألوان زائفة لمتوسّط صور Landsat 5 في عام 2008