اکنون که می دانید چگونه یک تصویر را بارگذاری و نمایش دهید، وقت آن است که یک محاسبات روی آن اعمال کنید. برای مثال، میتوانید شیب زمین را با ارسال تصویر ارتفاع SRTM به روش slope
بسته ee.Terrain
محاسبه کنید.
ویرایشگر کد (جاوا اسکریپت)
// Load the SRTM image. var srtm = ee.Image('CGIAR/SRTM90_V4'); // Apply an algorithm to an image. var slope = ee.Terrain.slope(srtm); // Display the result. Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon. Map.addLayer(slope, {min: 0, max :60}, 'slope');
توجه داشته باشید که در کد ee.Terrain.slope(srtm)
، تصویر srtm
به عنوان آرگومان الگوریتم شیب ارائه شده است. نتیجه باید چیزی شبیه به شکل 3 باشد.

ریاضی تصویر
همچنین متدهایی در کلاس ee.Image
وجود دارد که می توان آنها را روی یک شی تصویر فراخوانی کرد. به عنوان مثال، فرض کنید میخواهید با استفاده از نوارهای تصویر (که گاهی اوقات ریاضی باند یا جبر نقشه نامیده میشود) مقداری ریاضی انجام دهید. برای مثال، ممکن است به عملیات مثلثاتی روی یک تصویر جنبه علاقه داشته باشید. برای انجام این کار، ابتدا یک تصویر جنبه را به رادیان تبدیل کنید، سپس sin()
را روی آن فراخوانی کنید. استفاده مجدد از تصویر srtm
ما،
ویرایشگر کد (جاوا اسکریپت)
// Get the aspect (in degrees). var aspect = ee.Terrain.aspect(srtm); // Convert to radians, compute the sin of the aspect. var sinImage = aspect.divide(180).multiply(Math.PI).sin(); // Display the result. Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');
نتیجه باید چیزی شبیه به شکل 4 باشد. ارزش دارد که به کد aspect.divide(180).multiply(Math.PI).sin()
نگاهی دقیق بیندازید. با زنجیر کردن چندین روش مانند این، کد میگوید: "جهت را بر 180 تقسیم کنید، نتیجه آن را در π ضرب کنید و در نهایت گناه را بگیرید". شما می توانید با ترکیب روش ها به این روش، عملیات پیچیده ریاضی را روی تصاویر انجام دهید. برای مشاهده لیست کامل عملیات ریاضی، add()
, subtract()
, multiply()
و غیره به Image
docs مراجعه کنید.

آمار تصویری
دسته مفید دیگری از عملیات روی تصاویر شامل محاسبه آمار پیکسل در مناطق تصویر یا پوشش های شطرنجی-بردار است. برای محاسبه آمار در Earth Engine، از یک کاهنده که توسط کلاسهای بسته ee.Reducer
نشان داده شده است استفاده کنید. برای مثال، فرض کنید به میانگین ارتفاع در یک منطقه علاقه مند هستید. شما می توانید یک منطقه را با رسم چند ضلعی با استفاده از ابزار ترسیم هندسه تعریف کنید. برای ترسیم یک منطقه به صورت تعاملی، ابزار ترسیم چند ضلعی ( )، سپس یک چند ضلعی را در منطقه مورد نظر خود دیجیتالی کنید و پس از اتمام کار بر روی خروج کلیک کنید. توجه داشته باشید که شی حاصل
ee.Geometry
به طور خودکار geometry
نامیده می شود و به عنوان یک import در بالای اسکریپت شما اضافه می شود. با کلیک بر روی نام متغیر در importها و تایپ نام جدید، آن متغیر را به 'polygon' تغییر نام دهید.
سپس با استفاده از کد زیر، مقدار میانگین پیکسل را در چند ضلعی بدست آورید:
ویرایشگر کد (جاوا اسکریپت)
// Compute the mean elevation in the polygon. var meanDict = srtm.reduceRegion({ reducer: ee.Reducer.mean(), geometry: polygon, scale: 90 }); // Get the mean from the dictionary and print it. var mean = meanDict.get('elevation'); print('Mean elevation', mean);
چند نکته در اینجا قابل ذکر است. ابتدا، توجه کنید که reduceRegion()
یک روش در دسترس برای اشیاء Image
است ( در مورد کاهش مناطق در اینجا بیشتر بیاموزید ). دوم، آرگومان های متد در یک شی جاوا اسکریپت ارائه می شوند که به عنوان یک آرگومان واحد ارسال می شود. (به طور خاص، کلیدهای شی نام پارامترهای متد هستند. مقادیر آرگومان های متد هستند). سوم، پارامتر reducer
نوع آماری را که باید محاسبه شود و پارامتر geometry
منطقه ای را که در آن آمار محاسبه می شود، مشخص می کند. پارامتر scale
اندازه پیکسل در متر برای استفاده است. برای جلوگیری از ابهام، همیشه باید مقیاس را هنگام انجام کاهش ها مشخص کنید زیرا ممکن است Earth Engine نتواند به طور خودکار مقیاس مناسب را از ورودی ها تعیین کند. ( در مورد مقیاس در Earth Engine بیشتر بدانید ).
در نهایت، مقدار بازگشتی reduceRegion()
یک فرهنگ لغت است که در آن کلیدها نام باندها و مقادیر آمار پیکسل برای باندها هستند. متد get()
در دیکشنری مقدار مربوط به کلید ارائه شده به عنوان آرگومان را برمی گرداند. در این مورد، تصویر srtm
دارای یک باند، 'elevation' است، بنابراین کد مثال آن آمار را از فرهنگ لغت دریافت می کند و آن را چاپ می کند.
وقتی این کد را اجرا می کنید، اگر با خطای زیر مواجه شدید:
نترس! چندین کار وجود دارد که می توانید برای رفع خطا انجام دهید. متد reduceRegion()
یک بررسی دارد تا مطمئن شود که آیا واقعاً می خواهید پیکسل های زیادی را در محاسبات خود وارد کنید یا خیر. هدف از این کار، جلوگیری از انجام تصادفی کار احمقانه است، مانند تلاش برای محاسبه میانگین هر پیکسل یک متری در جهان (این کار را نکنید). برای رفع خطا، یا با افزودن bestEffort: true
به فرهنگ لغت پارامترها، پارامتر bestEffort
را روی true
تنظیم کنید، یا پارامتر maxPixels
را روی مقداری بالاتر از پیش فرض 10 میلیون پیکسل یا هر دو تنظیم کنید. اگر bestEffort
درست باشد، Earth Engine بهطور خودکار مقیاس را دوباره محاسبه میکند تا از maxPixels
تجاوز نشود.
انحراف: مقیاس در موتور زمین
در مثال قبلی، scale
تقریباً روی وضوح اصلی تصویر SRTM تنظیم شده است. می توانید وضوح تصویر اصلی را با موارد زیر کشف کنید:
ویرایشگر کد (جاوا اسکریپت)
var scale = srtm.projection().nominalScale(); print('SRTM scale in meters', scale);
اگر مقیاسی کوچکتر از وضوح اصلی مشخص کنید، Earth Engine با خوشحالی تصویر ورودی را با استفاده از نزدیکترین همسایه نمونهبرداری میکند، سپس تمام پیکسلهای کوچکتر را در محاسبه لحاظ میکند. اگر مقیاس را بزرگتر تنظیم کنید، Earth Engine از پیکسلهای ورودی نسخهای از ورودی استفاده میکند (یعنی پیکسلها را از سطح بالاتری از هرم تصویر دریافت کنید). در این سند، درباره نحوه کنترل مقیاس Earth Engine بیشتر بدانید.
تا کنون، شما با یک تصویر واحد با یک باند کار کرده اید. در صفحه بعد، با تصاویر چند باندی و مجموعه تصاویر آشنا خواهید شد.