آمار یک منطقه تصویر

reduceRegion

برای بدست آوردن آماری از مقادیر پیکسل در یک ناحیه از ee.Image ، از image.reduceRegion() استفاده کنید. این همه پیکسل ها در منطقه (ها) را به یک نمایش آماری یا دیگر نمایش فشرده از داده های پیکسل در منطقه (مانند هیستوگرام) کاهش می دهد. این ناحیه به صورت Geometry نمایش داده می‌شود که ممکن است یک چند ضلعی باشد که دارای پیکسل‌های زیادی است، یا ممکن است یک نقطه واحد باشد، در این صورت فقط یک پیکسل در منطقه وجود خواهد داشت. در هر صورت، همانطور که در شکل 1 نشان داده شده است، خروجی آماری است که از پیکسل های منطقه بدست می آید.

نمودار کاهش منطقه
شکل 1. تصویری از ee.Reducer اعمال شده بر روی یک تصویر و یک منطقه.

برای مثالی از به دست آوردن آمار پیکسل در یک منطقه از یک تصویر با استفاده از reduceRegion() ، یافتن مقادیر میانگین طیفی یک ترکیب 5 ساله Landsat را در محدوده جنگل مخروطی سیرا نوادا (نشان داده شده در شکل 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. ترکیب رنگ نادرست داده های تصویر Landsat برای کالیفرنیا و نوادا. ناحیه ای که باید کاهش یابد با رنگ سفید نشان داده شده است.

توجه داشته باشید که در این مثال کاهش با ارائه reducer ( ee.Reducer.mean()geometry ( region.geometry()scale (30 متر) و maxPixels برای حداکثر تعداد پیکسل های ورودی به کاهنده مشخص می شود. همیشه باید در فراخوانی های reduceRegion() یک مقیاس مشخص شود. این به این دلیل است که در جریان‌های پردازش پیچیده، که ممکن است شامل داده‌هایی از منابع مختلف با مقیاس‌های متفاوت باشد، مقیاس خروجی به طور واضح از ورودی‌ها تعیین نمی‌شود. در این حالت، مقیاس به طور پیش فرض روی 1 درجه قرار می گیرد که به طور کلی نتایج رضایت بخشی ایجاد می کند. برای اطلاعات بیشتر در مورد نحوه کنترل ترازو توسط Earth Engine به این صفحه مراجعه کنید.

دو راه برای تنظیم مقیاس وجود دارد: با تعیین پارامتر scale ، یا با تعیین تبدیل CRS و CRS. (برای اطلاعات بیشتر در مورد تبدیل CRS و CRS به واژه نامه مراجعه کنید). به عنوان مثال، کاهش meanDictionary (در بالا) معادل زیر است:

// 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
}));

به طور کلی، مشخص کردن مقیاس کافی است و منجر به کد خواندن بیشتر می شود. Earth Engine تعیین می کند که کدام پیکسل ها را با شطرنجی کردن منطقه به کاهنده وارد کند. اگر مقیاسی بدون CRS مشخص شده باشد، ناحیه در طرح اصلی تصویر با وضوح مشخص شده، شطرنجی می شود. اگر هم یک CRS و هم مقیاس مشخص شده باشند، منطقه بر اساس آنها شطرنجی می شود.

پیکسل ها در منطقه

طبق قوانین زیر که در مقیاس و طرح ریزی مشخص اعمال می شود، پیکسل ها در منطقه (و وزن) تعیین می شوند:

  • کاهنده های بدون وزن (به عنوان مثال ee.Reducer.count() یا ee.Reducer.mean().unweighted() ): پیکسل ها در صورتی که مرکز آنها در ناحیه باشد و ماسک تصویر غیر صفر باشد، گنجانده می شوند.
  • کاهش دهنده های وزنی (به عنوان مثال ee.Reducer.mean() ): اگر حداقل (تقریباً) 0.5٪ پیکسل در منطقه باشد و ماسک تصویر غیر صفر باشد، پیکسل ها گنجانده می شوند. وزن آنها حداقل ماسک تصویر و کسری (تقریبی) پیکسل پوشیده شده توسط ناحیه است.

پارامتر maxPixels برای رسیدن به موفقیت در محاسبات مورد نیاز است. اگر این پارامتر از مثال حذف شود، یک خطا برگردانده می شود که چیزی شبیه به:

چندین گزینه برای عبور از این خطاها وجود دارد: افزایش maxPixels ، مانند مثال، افزایش scale ، یا تنظیم bestEffort روی true، که به طور خودکار یک مقیاس جدید (بزرگتر) را محاسبه می کند به طوری که از maxPixels فراتر نمی رود. اگر maxPixels مشخص نکنید، از مقدار پیش‌فرض استفاده می‌شود.