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

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

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

برای گروه‌بندی خروجی reduceRegion() ، می‌توانید باند گروه‌بندی را مشخص کنید که گروه‌ها را با مقادیر پیکسل صحیح تعریف می‌کند. در مثال زیر کد قبلی را کمی تغییر داده و باند lossYear را به تصویر اصلی اضافه می کنیم. هر پیکسل در باند lossYear دارای مقادیری از 0 تا 14 است - که نشان دهنده سالی است که ضرر در آن رخ داده است. ما همچنین کاهنده را به یک کاهنده گروه‌بندی تغییر می‌دهیم، و شاخص باند باند گروه‌بندی (1) را مشخص می‌کنیم، بنابراین مناطق پیکسل بر اساس مقدار در باند 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() برای تبدیل مقادیر سال از 0-14 به 2000-2014 استفاده می کنیم.

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

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
شکل 1. نمودار تلفات جنگل به تفکیک سال

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