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

ee.Reducer که روی یک تصویر و یک ناحیه اعمال شده است. برای مثالی از بدست آوردن آمار پیکسلها در ناحیهای از تصویر با استفاده از reduceRegion() ، یافتن میانگین مقادیر طیفی یک ترکیب لندست ۵ ساله در محدوده جنگل مخروطی سیرا نوادا (نشان داده شده در شکل ۲) را در نظر بگیرید:
// 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

توجه داشته باشید که در این مثال، کاهش با ارائه 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 }));
به طور کلی، مشخص کردن مقیاس کافی است و منجر به کد خواناتر میشود. موتور زمین با ابتدا رستر کردن منطقه، تعیین میکند که کدام پیکسلها را باید به کاهنده وارد کند. اگر مقیاسی بدون CRS مشخص شود، منطقه در تصویر اصلی تصویر که با وضوح مشخص شده مقیاسبندی شده است، رستر میشود. اگر هم CRS و هم مقیاس مشخص شوند، منطقه بر اساس آنها رستر میشود.
پیکسلهای موجود در منطقه
پیکسلها طبق قوانین زیر که در مقیاس و تصویر مشخصشده اعمال میشوند، در ناحیه (و وزندهی) قرار میگیرند:
- کاهندههای بدون وزن (مثلاً
ee.Reducer.count()یاee.Reducer.mean().unweighted()): پیکسلها در صورتی لحاظ میشوند که مرکز ثقل آنها در ناحیه مورد نظر باشد و ماسک تصویر غیر صفر باشد. - کاهندههای وزندار (مثلاً
ee.Reducer.mean()): پیکسلها در صورتی گنجانده میشوند که حداقل (تقریباً) ۱/۲۵۶ (~۰.۴٪) از پیکسل در ناحیه باشد و ماسک تصویر غیر صفر باشد؛ وزن آنها حداقل ماسک تصویر و کسر (تقریبی) پیکسلی است که توسط ناحیه پوشش داده شده است. وزنهای تقاطع پیکسلها به صورت داخلی به صورت اعداد صحیح ۸ بیتی (۰ تا ۲۵۵) نمایش داده میشوند و پوشش کسری را به ۲۵۶ سطح گسسته کوانتیزه میکنند.
پارامتر maxPixels برای موفقیتآمیز بودن محاسبات مورد نیاز است. اگر این پارامتر در مثال حذف شود، خطایی مانند زیر برگردانده میشود:
گزینههای متعددی برای عبور از این خطاها وجود دارد: افزایش maxPixels ، مانند مثال، افزایش scale ، یا تنظیم bestEffort روی true، که به طور خودکار یک مقیاس جدید (بزرگتر) را محاسبه میکند به طوری که maxPixels از آن تجاوز نکند. اگر maxPixels را مشخص نکنید، از مقدار پیشفرض استفاده میشود.