การทำแผนภูมิการสูญเสียป่าไม้รายปี

การคำนวณการสูญเสียป่าไม้รายปี

ในส่วนก่อนหน้า คุณได้เรียนรู้วิธี คำนวณพื้นที่ป่าทั้งหมดที่สูญเสียไปใน ภูมิภาคที่สนใจที่กำหนดโดยใช้เมธอด reduceRegion แทนที่จะ คำนวณผลขาดทุนทั้งหมด การคำนวณผลขาดทุนในแต่ละปีจะเป็นประโยชน์มากกว่า วิธี ในการดำเนินการนี้ใน Earth Engine คือการใช้ Grouped Reducer

หากต้องการจัดกลุ่มเอาต์พุตของ reduceRegion() คุณสามารถระบุแถบการจัดกลุ่มที่ กำหนดกลุ่มตามค่าพิกเซลจำนวนเต็มได้ ในตัวอย่างต่อไปนี้ เราจะแก้ไขโค้ดก่อนหน้าเล็กน้อยและเพิ่มlossYearแถบลงในรูปภาพต้นฉบับ พิกเซลแต่ละพิกเซลในlossYearแถบมีค่าตั้งแต่ 0 ถึง 14 ซึ่งระบุปีที่เกิดการสูญเสีย นอกจากนี้ เรายังเปลี่ยนตัวลดให้เป็นตัวลดแบบจัดกลุ่ม โดยระบุดัชนีแถบของ แถบการจัดกลุ่ม (1) เพื่อให้ระบบรวมและจัดกลุ่มพื้นที่พิกเซลตามค่า ในแถบ lossYear

โปรแกรมแก้ไขโค้ด (JavaScript)

// 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

โปรแกรมแก้ไขโค้ด (JavaScript)

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

โปรแกรมแก้ไขโค้ด (JavaScript)

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 และคณะ