نمودار اتلاف سالانه جنگل

محاسبه اتلاف سالانه جنگل

در بخش قبلی یاد گرفتید که چگونه مجموع مساحت جنگل ازدست‌رفته را در منطقه موردنظر بااستفاده از روش reduceRegion محاسبه کنید. به‌جای محاسبه کل ضرر، محاسبه ضرر هر سال مفید خواهد بود. راه دستیابی به این هدف در Earth Engine استفاده از کاهنده گروه‌بندی‌شده است.

برای گروه‌بندی خروجی reduceRegion()، می‌توانید باند گروه‌بندی‌ای را مشخص کنید که گروه‌ها را براساس مقادیر پیکسل عدد صحیح تعریف می‌کند. در مثال زیر، کد قبلی را کمی تغییر می‌دهیم و باند lossYear را به تصویر اصلی اضافه می‌کنیم. هر پیکسل در نوار lossYear حاوی مقادیری از ۰ تا ۱۴ است که نشان‌دهنده سالی است که ازدست رفتن در آن رخ داده است. همچنین کاهنده را به کاهنده گروه‌بندی‌شده تغییر می‌دهیم و نمایه باند باند گروه‌بندی (۱) را مشخص می‌کنیم تا نواحی پیکسل جمع شوند و براساس مقدار در باند lossYear گروه‌بندی شوند.

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

// Load country boundaries from LSIB.
var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
// Get a feature collection with just the Congo feature.
var congo = countries.filter(ee.Filter.eq('country_co', 'CF'));

// Get the loss image.
// This dataset is updated yearly, so we get the latest version.
var gfc2017 = ee.Image('UMD/hansen/global_forest_change_2017_v1_5');
var lossImage = gfc2017.select(['loss']);
var lossAreaImage = lossImage.multiply(ee.Image.pixelArea());

var lossYear = gfc2017.select(['lossyear']);
var lossByYear = lossAreaImage.addBands(lossYear).reduceRegion({
  reducer: ee.Reducer.sum().group({
    groupField: 1
    }),
  geometry: congo,
  scale: 30,
  maxPixels: 1e9
});
print(lossByYear);

پس‌از اجرای کد بالا، مساحت جنگل ازدست‌رفته سالانه را خواهید دید که در فهرست تودرتویی به‌نام groups چاپ شده است. می‌توانیم برونداد را کمی قالب‌بندی کنیم تا نتیجه به‌صورت واژه‌نامه باشد، به‌طوری‌که سال به‌عنوان کلید و منطقه ازدست‌رفته به‌عنوان مقدار باشد. توجه داشته باشید که ما از روش format() برای تبدیل مقادیر سال از ۰-۱۴ به ۲۰۰۰-۲۰۱۴ استفاده می‌کنیم.

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

var statsFormatted = ee.List(lossByYear.get('groups'))
  .map(function(el) {
    var d = ee.Dictionary(el);
    return [ee.Number(d.get('group')).format("20%02d"), d.get('sum')];
  });
var statsDictionary = ee.Dictionary(statsFormatted.flatten());
print(statsDictionary);

درحال ساختن نمودار

اکنون که اعداد زیان سالانه را داریم، آماده‌ایم تا نمودار را آماده کنیم. از روش ui.Chart.array.values() استفاده خواهیم کرد. این روش آرایه (یا فهرست) مقادیر ورودی و آرایه (یا فهرست) برچسب‌های محور X را می‌گیرد.

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

var chart = ui.Chart.array.values({
  array: statsDictionary.values(),
  axis: 0,
  xLabels: statsDictionary.keys()
}).setChartType('ColumnChart')
  .setOptions({
    title: 'Yearly Forest Loss',
    hAxis: {title: 'Year', format: '####'},
    vAxis: {title: 'Area (square meters)'},
    legend: { position: "none" },
    lineWidth: 1,
    pointSize: 3
  });
print(chart);

نتیجه باید شبیه نمودار زیر باشد.

Tutorial_Hansen_17_chart.png
شکل ۱. نمودار ازبین رفتن جنگل براساس سال

در بخش بعدی، با مجموعه داده دیگری برای پایش جنگل‌زدایی، FORMA، آشنا خواهید شد و آن را با داده‌های Hansen و همکاران مقایسه خواهید کرد.