با Earth Engine شروع به کار کنید

این راهنمای شروع به عنوان راهی سریع برای شروع برنامه‌نویسی با Earth Engine JavaScript API است. برای نگاهی مقدماتی به جاوا اسکریپت و تمرین‌های عمیق‌تر با Earth Engine API، به آموزش‌ها مراجعه کنید. برای سبک کدنویسی پیشنهادی جاوا اسکریپت، راهنمای سبک جاوا اسکریپت Google را ببینید.

Google Earth Engine به کاربران اجازه می دهد تا الگوریتم هایی را بر روی تصاویر جغرافیایی مرجع و بردارهای ذخیره شده در زیرساخت گوگل اجرا کنند. Google Earth Engine API کتابخانه ای از توابع را ارائه می دهد که ممکن است برای نمایش و تجزیه و تحلیل روی داده ها اعمال شود. کاتالوگ داده های عمومی Earth Engine حاوی مقدار زیادی از تصاویر و مجموعه داده های برداری است که در دسترس عموم قرار دارند. دارایی های خصوصی نیز می توانند در پوشه های شخصی کاربران ایجاد شوند.

نحوه استفاده از این اسناد

مستندات Earth Engine برای افرادی که با تجزیه و تحلیل داده های مکانی آشنا هستند طراحی شده است. اسناد در درجه اول بر اساس نوع داده ساختار یافته اند. به عنوان مثال، پیمایش سمت چپ حاوی پیوندهایی به بخش‌ها یا صفحات مربوط به انواع داده‌های مهم مانند Image ، ImageCollection ، Feature ، FeatureCollection ، Geometry ، Reducer ، Chart ، Join و Array است. این راهنما فقط به اندازه کافی در مورد این انواع برای شروع شما توضیح می دهد. همچنین بخش‌هایی برای یادگیری ماشین ، الگوریتم‌های تخصصی یا حسگر خاص ( مانند الگوریتم‌های Landsatبرنامه‌های عمومی ، مدیریت داده‌ها (دارایی) و جزئیات مهم در مورد عملکرد داخلی Earth Engine وجود دارد. قبل از غواصی در هر یک از آن، از اینجا شروع کنید!

ویرایشگر کد

ویرایشگر کد یک محیط تعاملی برای توسعه برنامه های کاربردی Earth Engine است (شکل 1). پانل مرکزی یک ویرایشگر کد جاوا اسکریپت را ارائه می دهد. در بالای ویرایشگر دکمه هایی برای ذخیره اسکریپت فعلی، اجرای آن و پاک کردن نقشه وجود دارد. دکمه دریافت پیوند یک URL منحصر به فرد برای اسکریپت در نوار آدرس ایجاد می کند. نقشه در پانل پایین حاوی لایه های اضافه شده توسط اسکریپت است. در بالا یک کادر جستجو برای مجموعه داده ها و مکان ها وجود دارد. پانل سمت چپ شامل نمونه های کد، اسکریپت های ذخیره شده شما، یک مرجع API قابل جستجو و یک مدیر دارایی برای داده های خصوصی است. پنل سمت راست دارای یک بازرس برای جستجوی نقشه، یک کنسول خروجی و یک مدیر برای کارهای طولانی مدت است. دکمه راهنما در سمت راست بالا حاوی پیوندهایی به این راهنما و سایر منابع برای دریافت کمک است. از راهنمای ویرایشگر کد و راهنمای دریافت کمک بیشتر بیاموزید.

ویرایشگر کد
شکل 1. ویرایشگر کد موتور زمین در code.earthengine.google.com

باز کردن و اجرای کد در ویرایشگر کد

مراحل زیر نحوه باز کردن Earth Engine و اجرای یک اسکریپت سفارشی که یک تصویر را نمایش می دهد را نشان می دهد. برای بهترین نتایج، ممکن است بخواهید آخرین نسخه Chrome، مرورگر وب Google را که در اینجا موجود است نصب کنید.

  1. ویرایشگر کد موتور Earth را در اینجا باز کنید: code.earthengine.google.com .
  2. به تب Scripts که در سمت چپ ویرایشگر کد قرار دارد بروید. در آنجا مجموعه‌ای از اسکریپت‌های نمونه را خواهید دید که به داده‌های Earth Engine دسترسی، نمایش و تجزیه و تحلیل می‌کنند.
  3. در بخش «مجموعه تصویر»، مثال «ترکیب فیلتر شده» را انتخاب کنید. خواهید دید که یک اسکریپت در کنسول مرکزی ظاهر می شود. برای اجرای اسکریپت دکمه Run را فشار دهید. مثال ترکیبی فیلتر شده، تصاویر Landsat 7 را انتخاب می کند که در محدوده کلرادو و یوتا قرار دارند یا در آن قرار دارند. سپس یک ترکیب رنگ واقعی از تصاویر انتخاب شده را نمایش می دهد. نمونه ها شما را با متدهای رایجی مانند filter() ، clip() و Map.addLayer() آشنا می کنند.

ساختارهای داده موتور زمین

دو بنیادی ترین ساختار داده های جغرافیایی در Earth Engine عبارتند از Image و Feature که به ترتیب مربوط به انواع داده های شطرنجی و برداری هستند. تصاویر از باندها و فرهنگ لغت خواص تشکیل شده است. ویژگی ها از Geometry و فرهنگ لغت خصوصیات تشکیل شده است. مجموعه ای از تصاویر (به عنوان مثال یک سری زمانی تصویر) توسط ImageCollection مدیریت می شود. مجموعه ای از ویژگی ها توسط FeatureCollection مدیریت می شود. دیگر ساختارهای داده اساسی در Earth Engine عبارتند از Dictionary ، List ، Array ، Date ، Number و String (در مورد انواع داده های اصلی از این آموزش بیشتر بیاموزید. مهم است به خاطر داشته باشید که اینها همه اشیاء سمت سرور هستند و مانند اشیاء جاوا اسکریپت سمت سرویس گیرنده دستکاری نمی شوند ( بیشتر بدانید ).

الگوریتم های موتور زمین

چندین روش برای اجرای عملیات در API وجود دارد:

  • فراخوانی متدهایی که به اشیا متصل هستند.
  • الگوریتم های فراخوانی
  • فراخوانی توابع خاص ویرایشگر کد.
  • تعریف توابع جدید

برگه Docs در ویرایشگر کد، متدهای هر کلاس API را فهرست می کند. به عنوان مثال، کلاس Image یک متد add() دارد:

ویرایشگر کد (جاوا اسکریپت)

var image3 = image1.add(image2);

این روش باندهای image2 را به باندهای image1 اضافه می کند. دسته ee.Algorithms حاوی لیستی از الگوریتم های پشتیبانی شده فعلی برای پردازش تخصصی یا دامنه خاص است. به عنوان مثال، برای ایجاد لایه های توپوگرافی از یک مدل ورودی دیجیتال ارتفاع (DEM):

ویرایشگر کد (جاوا اسکریپت)

var terrainImage = ee.Algorithms.Terrain(dem);

توابع خاص ویرایشگر کد شامل روش‌های Map و Export است که به ترتیب نحوه اضافه شدن لایه‌ها به پانل نقشه یا صادرات به Google Drive را کنترل می‌کنند. توابع را می توان با استفاده از جاوا اسکریپت نیز ایجاد کرد

ویرایشگر کد (جاوا اسکریپت)

var myFunction = function(args) {
  // do something
  return something;
};

همانطور که در بخش Mapping نشان داده شده است، توابع تعریف شده توسط کاربر برای ایجاد عملکرد سفارشی یا اصلاح عناصر یک مجموعه با استفاده از:

ویرایشگر کد (جاوا اسکریپت)

var collection2 = collection1.map(aFunction);

بخش های زیر این مفاهیم را برای موارد استفاده ساده مختلف نشان می دهد.

"سلام دنیا!" جاوا اسکریپت

چاپ کردن اطلاعات در کنسول یک کار اساسی برای دریافت اطلاعات در مورد یک شی، نمایش نتیجه عددی یک محاسبات، نمایش ابرداده شی یا کمک به اشکال زدایی است. نماد "سلام جهان!" مثال در ویرایشگر کد این است:

ویرایشگر کد (جاوا اسکریپت)

print('Hello world!');

این خط را در ویرایشگر کد ویرایشگر کد کپی کنید و روی Run کلیک کنید. توجه داشته باشید که خروجی در تب Console در سمت راست ویرایشگر کد نمایش داده می شود. برای یک مثال مرتبط تر سنجش از دور، تصویر زیر ابرداده یک تصویر Landsat 8 را چاپ می کند:

ویرایشگر کد (جاوا اسکریپت)

print(ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'));

خروجی کنسول را به دقت بررسی کنید تا متادیتاهای موجود برای تصاویر Landsat را ببینید.

افزودن داده به نقشه

علاوه بر چاپ اطلاعات در کنسول، افزودن داده به Map راهی برای تجسم داده های جغرافیایی است. برای این کار از Map.addLayer() استفاده کنید. در مثال زیر، با استفاده از ee.Image() یک Image نمونه‌سازی می‌شود (نحوه یافتن این تصاویر بعداً پوشش داده می‌شود)، با Map.addLayer() به نقشه اضافه می‌شود و نقشه روی تصویر در مرکز قرار می‌گیرد:

ویرایشگر کد (جاوا اسکریپت)

// Load an image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Center the map on the image.
Map.centerObject(image, 9);

// Display the image.
Map.addLayer(image);

پارامتر دوم Map.centerObject() یک سطح بزرگنمایی است که در آن اعداد بالاتر مقیاس بزرگتر را نشان می دهد (بزرگنمایی بیشتر). پارامترهای توابع Map به طور عمیق در مرجع API قابل دسترسی از برگه Docs توضیح داده شده است. اگر ظاهر تصویر رضایت بخش نیست، پارامترهای نمایش را با یک آرگومان اضافی به Map.addLayer() پیکربندی کنید. به عنوان مثال:

ویرایشگر کد (جاوا اسکریپت)

// Load the image from the archive.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Define visualization parameters in an object literal.
var vizParams = {bands: ['B5', 'B4', 'B3'], min: 0.02, max: 0.4, gamma: 1.3};

// Center the map on the image and display.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'Landsat 8 false color');

توجه داشته باشید که پارامترهای تجسم توسط یک شی لفظی تعریف می‌شوند که شامل فهرستی از باندها برای نمایش، مقدار بازتاب حداقل و حداکثر و مقدار گاما است. (در مورد باندهای لندست اینجا بیشتر بیاموزید. درباره تجسم تصویر در اینجا بیشتر بدانید).

از Map.addLayer() برای افزودن ویژگی ها و مجموعه ویژگی ها به نقشه استفاده کنید. به عنوان مثال،

ویرایشگر کد (جاوا اسکریپت)

var counties = ee.FeatureCollection('TIGER/2018/Counties');
Map.addLayer(counties, {}, 'counties');

یافتن تصاویر، مجموعه های تصویری و مجموعه های ویژگی

تصاویر، مجموعه‌های تصاویر و مجموعه‌های ویژگی با جستجو در کاتالوگ داده موتور زمین قابل کشف هستند. به عنوان مثال، با وارد کردن "Landsat 8" در قسمت جستجو، لیستی از مجموعه داده های شطرنجی ایجاد می شود. (فهرست کامل مجموعه داده های موتور زمین در کاتالوگ داده موتور زمین است). روی نام مجموعه داده کلیک کنید تا توضیحات مختصری، اطلاعات مربوط به در دسترس بودن زمانی، ارائه دهنده داده و شناسه مجموعه را دریافت کنید. روی دکمه Import کلیک کنید تا به طور خودکار یک بخش Imports در بالای اسکریپت خود با یک متغیر برای این مجموعه ایجاد شود.

همچنین، شناسه مجموعه را کپی کرده و در کد خود جایگذاری کنید. به عنوان مثال، نتیجه Tier 1 TOA جستجوی "Landsat 8" را انتخاب کنید و شناسه را به صورت زیر کپی کنید:

ویرایشگر کد (جاوا اسکریپت)

var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

از آنجایی که این مجموعه ای از تصاویر بسیاری است که سطح زمین را پوشانده است، یافتن یک تصویر جداگانه در مجموعه به فیلتر کردن نیاز دارد تا جستجو را محدود کند. از طرف دیگر، مجموعه تصاویر را می توان با استفاده از تکنیک های ترکیب بندی و موزاییک به یک تصویر کاهش داد. بیشتر در مورد فیلتر کردن و ترکیب کردن (به کاهش مراجعه کنید) در بخش های بعدی.

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

فیلتر کردن و مرتب سازی

اغلب لازم است مجموعه ای را بر اساس مکان و/یا زمان فیلتر کنیم تا تعداد نتایج محدود شود. به عنوان مثال، وظیفه مرتب سازی مجموعه صحنه لندست 8 را در نظر بگیرید تا صحنه ای بدون ابر برای سانفرانسیسکو پیدا کنید. ابتدا لازم است منطقه مورد نظر را تعریف کنیم. یک نکته اغلب برای آن مفید است. برگه Inspector را در سمت راست ویرایشگر کد فعال کنید و در نزدیکی مرکز منطقه مورد علاقه خود کلیک کنید، مختصات را از زبانه Inspector کپی کنید، سپس با استفاده از یک Point بسازید:

ویرایشگر کد (جاوا اسکریپت)

var point = ee.Geometry.Point(-122.262, 37.8719);

تاریخ شروع و پایان ساخت:

ویرایشگر کد (جاوا اسکریپت)

var start = ee.Date('2014-06-01');
var finish = ee.Date('2014-10-01');

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

ویرایشگر کد (جاوا اسکریپت)

var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(point)
  .filterDate(start, finish)
  .sort('CLOUD_COVER', true);

این مجموعه را می توان با خیال راحت چاپ و بررسی کرد. (اگر مجموعه تصاویر بیش از حد داشته باشد، چاپ آن یا بسیار کند است، زمان تمام می شود یا با خطا مواجه می شود). توجه داشته باشید که تصاویر موجود در مجموعه List هستند که در ویژگی "ویژگی ها" ImageCollection ذخیره شده اند. شناسه هر تصویر موجود در مجموعه را می توان به شکل بالا در سازنده Image کپی کرد. یا، اولین تصویر را دریافت کنید (کمترین پوشش ابر):

ویرایشگر کد (جاوا اسکریپت)

var first = filteredCollection.first();

با استفاده filter() با ee.Filter به عنوان آرگومان به عملکرد کامل فیلتر Earth Engine دسترسی پیدا کنید. (روش های filterBounds() و filterDate() مورد استفاده در بالا میانبر هستند). به عنوان مثال، موارد زیر یک Filter ایجاد می کند، از آن برای فیلتر کردن FeatureCollection استفاده می کند و نتیجه را نمایش می دهد:

ویرایشگر کد (جاوا اسکریپت)

// Load a feature collection.
var featureCollection = ee.FeatureCollection('TIGER/2016/States');

// Filter the collection.
var filteredFC = featureCollection.filter(ee.Filter.eq('NAME', 'California'));

// Display the collection.
Map.setCenter(-119.604, 37.798, 6);
Map.addLayer(filteredFC, {}, 'California');

ریاضی باند

انجام عملیات ریاضی روی تصاویر با استفاده از روش های Image . این ممکن است شامل نوترکیبی باند (شاخص های طیفی)، تفاضل تصویر یا عملیات ریاضی مانند ضرب در یک ثابت باشد. به عنوان مثال، تفاوت بین تصاویر شاخص گیاهی تفاوت عادی شده (NDVI) را با فاصله 20 سال محاسبه کنید:

ویرایشگر کد (جاوا اسکریپت)

// This function gets NDVI from Landsat 5 imagery.
var getNDVI = function(image) {
  return image.normalizedDifference(['B4', 'B3']);
};

// Load two Landsat 5 images, 20 years apart.
var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604');
var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611');

// Compute NDVI from the scenes.
var ndvi1 = getNDVI(image1);
var ndvi2 = getNDVI(image2);

// Compute the difference in NDVI.
var ndviDifference = ndvi2.subtract(ndvi1);

به استفاده از یک function تعریف شده توسط کاربر در این مثال توجه کنید. اطلاعات بیشتر در مورد توابع در بخش بعدی.

نقشه برداری (به جای حلقه for چه باید کرد)

از map() برای تکرار روی آیتم های یک مجموعه استفاده کنید. (حلقه های For راه درستی برای انجام این کار در Earth Engine نیستند و باید از آنها اجتناب شود). تابع map() را می توان روی ImageCollection ، FeatureCollection یا List اعمال کرد و یک function به عنوان آرگومان خود می پذیرد. آرگومان تابع عنصری از مجموعه ای است که روی آن نگاشت می شود. این برای اصلاح هر عنصر از مجموعه به همان روش مفید است، برای مثال اضافه کردن. به عنوان مثال، کد زیر یک باند NDVI را به هر تصویر در ImageCollection اضافه می کند:

ویرایشگر کد (جاوا اسکریپت)

// This function gets NDVI from Landsat 8 imagery.
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']));
};

// Load the Landsat 8 TOA data, filter by location and date.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-06-01', '2014-10-01');

// Map the function over the collection.
var ndviCollection = collection.map(addNDVI);

یکی دیگر از کارهای رایج، افزودن یک ویژگی جدید (یا «ویژگی» یا «فیلد») به ویژگی‌های یک FeatureCollection است. در مثال زیر، ویژگی جدید یک محاسبات شامل دو ویژگی موجود است:

ویرایشگر کد (جاوا اسکریپت)

// This function creates a new property that is the sum of two existing properties.
var addField = function(feature) {
  var sum = ee.Number(feature.get('property1')).add(feature.get('property2'));
  return feature.set({'sum': sum});
};

// Create a FeatureCollection from a list of Features.
var features = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point(-122.4536, 37.7403),
    {property1: 100, property2: 100}),
    ee.Feature(ee.Geometry.Point(-118.2294, 34.039),
    {property1: 200, property2: 300}),
]);

// Map the function over the collection.
var featureCollection = features.map(addField);

// Print a selected property of one Feature.
print(featureCollection.first().get('sum'));

// Print the entire FeatureCollection.
print(featureCollection);

برای استفاده از متد add() به cast به ee.Number توجه کنید که برای اینکه مقدار ویژگی به عنوان یک عدد شناخته شود. نوع مجموعه را می توان با map() تغییر داد. به عنوان مثال:

ویرایشگر کد (جاوا اسکریپت)

// This function returns the image centroid as a new Feature.
var getGeom = function(image) {
  return ee.Feature(image.geometry().centroid(), {foo: 1});
};

// Load a Landsat 8 TOA collection.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-06-01', '2014-10-01');

// Map the function over the ImageCollection.
var featureCollection = ee.FeatureCollection(collection.map(getGeom));

// Print the collection.
print(featureCollection);

به ویژگی اضافه شده ( foo ) برای هر ویژگی ایجاد شده از مرکز تصویر توجه کنید. در خط پایانی، بازیگران مجموعه حاصل را به عنوان یک FeatureCollection قابل تشخیص می‌کنند.

کاهش می دهد

Reducing راهی برای تجمیع داده ها در طول زمان، فضا، باندها، آرایه ها و سایر ساختارهای داده در Earth Engine است. روش های مختلفی برای این منظور در API وجود دارد. به عنوان مثال، برای ایجاد ترکیبی از ImageCollection ، از reduce() استفاده کنید تا تصاویر موجود در مجموعه را به یک Image کاهش دهید. یک مثال ساده ایجاد ترکیب میانه از پنج صحنه کم ابری در مجموعه Landsat 8 است که قبلاً تعریف شد:

ویرایشگر کد (جاوا اسکریپت)

// Load a Landsat 8 TOA collection.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  // Filter by date and location.
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-01-01', '2014-12-31')
  // Sort by increasing cloudiness.
  .sort('CLOUD_COVER');

// Compute the median of each pixel for each band of the 5 least cloudy scenes.
var median = collection.limit(5).reduce(ee.Reducer.median());

کاهش همچنین راهی برای به دست آوردن آمار یک تصویر در مناطقی است که توسط یک Feature یا FeatureCollection تعریف شده است. فرض کنید وظیفه محاسبه میانگین مقادیر پیکسل در یک منطقه مورد علاقه است. برای این منظور reduceRegion() استفاده کنید. به عنوان مثال:

ویرایشگر کد (جاوا اسکریپت)

// Load and display a Landsat TOA image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.3});

// Create an arbitrary rectangle as a region and display it.
var region = ee.Geometry.Rectangle(-122.2806, 37.1209, -122.0554, 37.2413);
Map.addLayer(region);

// Get a dictionary of means in the region.  Keys are bandnames.
var mean = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region,
  scale: 30
});

در مورد کاهنده ها از سند Reducers بیشتر بیاموزید.

نقاب زدن

هر پیکسل در ee.Image هم مقدار و هم یک ماسک دارد که از 0 (بدون داده) تا 1 متغیر است. پیکسل های با 0 < ماسک ≤ 1 دارای یک مقدار هستند، اما برای محاسبات عددی توسط ماسک وزن می شود.

می‌توانید پیکسل‌ها را شفاف کنید یا با استفاده از ماسک‌ها آن‌ها را از تجزیه و تحلیل حذف کنید. هنگامی که مقدار ماسک صفر باشد، پیکسل ها ماسک می شوند. در ادامه مثال تفاوت تصویر، از یک ماسک برای نمایش مناطق افزایش و کاهش NDVI در بازه اختلاف استفاده کنید:

// This function gets NDVI from Landsat 5 imagery.
var getNDVI = function(image) {
  return image.normalizedDifference(['B4', 'B3']);
};

// Load two Landsat 5 images, 20 years apart.
var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604');
var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611');

// Compute NDVI from the scenes.
var ndvi1 = getNDVI(image1);
var ndvi2 = getNDVI(image2);

// Compute the difference in NDVI.
var ndviDifference = ndvi2.subtract(ndvi1);
// Load the land mask from the SRTM DEM.
var landMask = ee.Image('CGIAR/SRTM90_V4').mask();

// Update the NDVI difference mask with the land mask.
var maskedDifference = ndviDifference.updateMask(landMask);

// Display the masked result.
var vizParams = {min: -0.5, max: 0.5, palette: ['FF0000', 'FFFFFF', '0000FF']};
Map.setCenter(-122.2531, 37.6295, 9);
Map.addLayer(maskedDifference, vizParams, 'NDVI difference');

در این مثال، توجه داشته باشید که ماسک تفاوت NDVI توسط land mask با updateMask() به روز می شود. هر جا که ماسک تفاوت NDVI غیر صفر باشد، ماسک پیکسل‌های اختلاف NDVI را روی ماسک زمین تنظیم می‌کند.

پوشش همچنین برای حذف داده ها از تجزیه و تحلیل مفید است. مثال reduceRegion() از بخش Reducing را در نظر بگیرید. فرض کنید وظیفه محاسبه میانگین فصلی NDVI برای شهرستان سانتا کلارا، کالیفرنیا، بدون احتساب پیکسل های ابری است. مثال زیر چندین مفهوم را نشان می دهد: فیلتر کردن، نقشه برداری، کاهش و استفاده از یک ماسک ابری:

ویرایشگر کد (جاوا اسکریپت)

// This function gets NDVI from a Landsat 8 image.
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']));
};

// This function masks cloudy pixels.
var cloudMask = function(image) {
  var clouds = ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']);
  return image.updateMask(clouds.lt(10));
};

// Load a Landsat collection, map the NDVI and cloud masking functions over it.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point([-122.262, 37.8719]))
  .filterDate('2014-03-01', '2014-05-31')
  .map(addNDVI)
  .map(cloudMask);

// Reduce the collection to the mean of each pixel and display.
var meanImage = collection.reduce(ee.Reducer.mean());
var vizParams = {bands: ['B5_mean', 'B4_mean', 'B3_mean'], min: 0.02, max: 0.4};
Map.addLayer(meanImage, vizParams, 'mean');

// Load a region in which to compute the mean and display it.
var counties = ee.FeatureCollection('TIGER/2018/Counties');
var santaClara = ee.Feature(counties.filter(ee.Filter.eq('NAME', 'Santa Clara')).first());
Map.addLayer(santaClara);

// Get the mean of NDVI in the region.
var mean = meanImage.select(['nd_mean']).reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: santaClara.geometry(),
  scale: 30
});

// Print mean NDVI for the region.
mean.get('nd_mean').evaluate(function(val){
  print('Santa Clara spring mean NDVI:', val);
});