مقدمه‌ای بر داده‌های «پایش جنگل برای اقدام» (FORMA)

FORMA یک سیستم هشدار جنگل‌زدایی دوماهه ۵۰۰ × ۵۰۰ متری مبتنی بر MODIS برای جنگل‌های گرمسیری مرطوب است. مجموعه داده FORMA 500 در Earth Engine تصویری با هشدارهایی است که از ژانویه ۲۰۰۶ شروع شده و ماهانه به‌روز می‌شود. هر هشدار دارای زمان منسوب به آن در یک باند واحد به‌نام alert_date در واحدهای ثانیه مبدأ است. فیلتر کردن FORMA براساس تاریخ و محاسبه هشدارها در مناطق موردنظر دو مورد از مهم‌ترین کارهایی است که می‌توانید با مجموعه داده FORMA انجام دهید.

فیلتر کردن FORMA براساس تاریخ

برای نمایش فقط هشدارهایی که در سال ۲۰۱۲ رخ داده‌اند، پیکسل‌هایی را پیدا کنید که زمان آن‌ها بین اولین روز سال ۲۰۱۲ و اولین روز سال ۲۰۱۳ است، که برحسب ثانیه از نیمه‌شب ۱ ژانویه ۱۹۷۰ بیان شده است:

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

// Convert dates from milliseconds to seconds.
var start = ee.Date('2012-01-01').millis().divide(1000);
var end = ee.Date('2013-01-01').millis().divide(1000);

// Load the FORMA 500 dataset.
var forma = ee.Image('FORMA/FORMA_500m');

// Create a binary layer from the dates of interest.
var forma2012 = forma.gte(start).and(forma.lte(end));

Map.setCenter(15.87, -0.391, 7);
Map.addLayer(
  forma2012.mask(forma2012),
  {palette: ['FF0000']},
  'FORMA alerts in 2012'
);

در این مثال، forma2012 تصویری دودویی است که فقط حاوی پیکسل‌هایی است که زمان آن‌ها در سال ۲۰۱۲ است (یعنی همه پیکسل‌های دیگر ماسک شده‌اند).

شمارش هشدارهای FORMA در منطقه موردنظر

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

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

// Load country features from Large Scale International Boundary (LSIB) dataset.
var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');

// Subset the Congo Republic feature from countries.
var congo = ee.Feature(
  countries
    .filter(ee.Filter.eq('country_na', 'Rep of the Congo'))
    .first()
);

// Subset protected areas to the bounds of the congo feature
// and other criteria. Clip to the intersection with congo.
var protectedAreas = ee.FeatureCollection('WCMC/WDPA/current/polygons')
  .filter(ee.Filter.and(
    ee.Filter.bounds(congo.geometry()),
    ee.Filter.neq('IUCN_CAT', 'VI'),
    ee.Filter.neq('STATUS', 'proposed'),
    ee.Filter.lt('STATUS_YR', 2010)
  ))
  .map(function(feat){
    return congo.intersection(feat);
  });

// Display protected areas on the map.
Map.addLayer(
  protectedAreas,
  {color: '000000'},
  'Congo Republic protected areas'
);

// Calculate the number of FORMA pixels in protected
// areas of the Congo Republic, 2012.
var stats = forma2012.reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: protectedAreas.geometry(),
  scale: 500
});
print('Number of FORMA pixels, 2012: ', stats.get('constant'));

شمارش هشدارهای FORMA در چند منطقه موردنظر

تاکنون، آمار را در هر بار برای یک منطقه محاسبه می‌کردیم. برای محاسبه آمار در چند منطقه به‌طور هم‌زمان، می‌توانید از reduceRegions() استفاده کنید. دوباره بااستفاده از مثال قبلی:

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

var regionsStats = forma2012.reduceRegions({
  collection: protectedAreas,
  reducer: ee.Reducer.sum(),
  scale: forma2012.projection().nominalScale()
});
print(regionsStats);

شیء چاپ‌شده در کنسول را بررسی کنید و ببینید که خروجی reduceRegions() یک FeatureCollection دیگر است. توجه داشته باشید که هر منطقه در مجموعه مناطق حفاظت‌شده جمهوری کنگو اکنون دارای یک ویژگی اضافی، sum، است که نام آن از کاهنده گرفته شده است. مقدار این ویژگی برونداد کاهنده یا تعداد هشدارهای ۲۰۱۲ در مناطق حفاظت‌شده است.

مقایسه مجموعه داده‌های FORMA و Hansen et al.

برای مقایسه مجموعه داده‌های FORMA و Hansen et al.، می‌توانید از عملگرهای منطقی استفاده کنید. (درباره عملیات منطقی بیشتر بدانید). به‌طور خاص، می‌خواهیم تصویری بسازیم که در آن پیکسل‌های علامت‌گذاری‌شده توسط FORMA و داده‌های Hansen et al. به‌عنوان جنگل‌زدایی ۱ و بقیه صفر باشند. این کد چنین تصویری را برای سال ۲۰۱۲ ایجاد می‌کند و آن را همراه با دیگر لایه‌های جنگل‌زدایی پیش‌بینی‌شده نمایش می‌دهد:

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

// Convert dates from milliseconds to seconds.
var start = ee.Date('2012-01-01').millis().divide(1000);
var end = ee.Date('2013-01-01').millis().divide(1000);
var region = ee.Geometry.Rectangle([-59.81163, -9.43348, -59.27561, -9.22818]);

// Load the FORMA 500 dataset.
var forma = ee.Image('FORMA/FORMA_500m');

// Create a binary layer from the dates of interest.
var forma2012 = forma.gte(start).and(forma.lte(end));

// Load Hansen et al. data and get change in 2012.
var gfc = ee.Image('UMD/hansen/global_forest_change_2015');
var gfc12 = gfc.select(['lossyear']).eq(12);

// Create an image which is one where the datasets
// both show deforestation and zero elsewhere.
var gfc_forma = gfc12.eq(1).and(forma2012.eq(1));

// Display data on the map.
Map.setCenter(-59.58813, -9.36439, 11);
Map.addLayer(forma.updateMask(forma), {palette: '00FF00'}, 'Forma (green)');
Map.addLayer(gfc12.updateMask(gfc12), {palette: 'FF0000'}, 'Hansen (red)');
Map.addLayer(
  gfc_forma.updateMask(gfc_forma),
  {palette: 'FFFF00'},
  'Hansen & FORMA (yellow)'
);

این بخش مروری بر مجموعه داده‌های تغییر جنگل در Earth Engine را به پایان می‌رساند. بی‌صبرانه منتظریم ببینیم با آن‌ها چه کارهایی می‌توانید انجام دهید!