ความรุนแรงของการเปลี่ยนแปลงการเกิดน้ำท่วม

ชั้นข้อมูลความเข้มของการเปลี่ยนแปลงการเกิดน้ำแสดงการวัดการเปลี่ยนแปลงของน้ำผิวดินระหว่าง 2 ยุค ได้แก่ ปี 1984-1999 และปี 2000-2015 เลเยอร์จะหาค่าเฉลี่ยของการเปลี่ยนแปลงในคู่เดือนที่คล้ายคลึงกันซึ่งนำมาจาก 2 ยุค ดูรายละเอียดเพิ่มเติมเกี่ยวกับเลเยอร์นี้ได้ที่ คู่มือผู้ใช้ข้อมูล (เวอร์ชัน 2)

ส่วนนี้ของบทแนะนำจะอธิบายสิ่งต่อไปนี้

  1. เพิ่มเลเยอร์ของแผนที่สไตล์คุณเพื่อแสดงข้อมูลผ่านภาพความหนักของการเปลี่ยนแปลงรายการน้ำ และ
  2. สรุปความหนักของการเปลี่ยนแปลงในขอบเขตที่สนใจที่ระบุโดยใช้ฮิสโตแกรม

การแสดงข้อมูลเป็นภาพ

เช่นเดียวกับเลเยอร์การเกิดน้ำ เราจะเริ่มต้นด้วยการเพิ่มการแสดงภาพพื้นฐานของความเข้มของการเปลี่ยนแปลงการเกิดลงในแผนที่ แล้วจึงปรับปรุงให้ดีขึ้น ความรุนแรงของการเปลี่ยนแปลงการเกิดจะแสดงใน 2 รูปแบบ ได้แก่ ค่าสัมบูรณ์และค่าที่ปรับให้เป็นมาตรฐาน เราจะใช้ค่าสัมบูรณ์ในบทแนะนำนี้ เริ่มต้นด้วยการเลือกเลเยอร์ความเข้มของการเปลี่ยนแปลงการเกิดแบบสัมบูรณ์จากรูปภาพ GSW ดังนี้

ตัวแก้ไขโค้ด (JavaScript)

var change = gsw.select("change_abs");

ในส่วนค่าคงที่ของโค้ด ให้เพิ่มคำสั่งที่สร้างตัวแปรใหม่ซึ่งกำหนดวิธีจัดรูปแบบเลเยอร์ การจัดรูปแบบนี้แสดงพื้นที่ที่การเกิดน้ำบนพื้นผิวลดลง/เพิ่มขึ้นเป็นสีแดง/เขียว พื้นที่ที่การเกิดน้ำผิวดินค่อนข้างไม่เปลี่ยนแปลงจะแสดงเป็นสีดำ

ตัวแก้ไขโค้ด (JavaScript)

var VIS_CHANGE = {
    min:-50,
    max:50,
    palette: ['red', 'black', 'limegreen']
};

ที่ส่วนท้ายของโค้ดส่วนเลเยอร์ของแผนที่ ให้เพิ่มคำสั่งที่เพิ่มเลเยอร์ใหม่ลงในแผนที่

ตัวแก้ไขโค้ด (JavaScript)

Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});
เปลี่ยนความหนัก
รูปที่ 6 ภาพหน้าจอแสดงความเข้มข้นของการเปลี่ยนแปลงน้ำบนพื้นผิวของแม่น้ำอูกายาลีใกล้กับปูกัลปา ซึ่งเป็นเมืองในป่าฝนแอมะซอนทางตะวันออกของเปรู สีแดง/สีเขียวแสดงถึงการลดลง/เพิ่มขึ้นของการเกิดน้ำผิวดินระหว่างช่วงเวลา

การสรุปการเปลี่ยนแปลงภายในขอบเขตที่สนใจ

ในส่วนนี้ เราจะสรุปปริมาณการเปลี่ยนแปลงภายในขอบเขตที่สนใจที่ระบุ หากต้องการระบุขอบเขตที่สนใจ ให้คลิกเครื่องมือวาดรูปหลายเหลี่ยม ซึ่งเป็นหนึ่งใน เครื่องมือเรขาคณิต การดำเนินการนี้จะสร้างเลเยอร์การนำเข้าเรขาคณิตใหม่ ซึ่งมีชื่อว่า "geometry" โดยค่าเริ่มต้น หากต้องการเปลี่ยนชื่อ ให้คลิกไอคอนรูปเฟืองทางด้านขวาของชื่อเลเยอร์ (โปรดทราบว่าคุณอาจต้องวางเคอร์เซอร์บนชื่อเลเยอร์เพื่อให้ไอคอนปรากฏ)

เปลี่ยนชื่อเลเยอร์เป็น roi (สำหรับขอบเขตที่สนใจหรือ ROI) จากนั้นเราจะคลิกชุดจุดบนแผนที่เพื่อกำหนดขอบเขตที่สนใจเป็นรูปหลายเหลี่ยมได้

ภูมิภาคที่สนใจ
รูปที่ 7 ภาพหน้าจอของแม่น้ำอูกายาลีใกล้เมืองปูกัลปา ประเทศเปรู พร้อมขอบเขตพื้นที่ที่สนใจซึ่งสร้างขึ้นโดยใช้เครื่องมือวาดรูปหลายเหลี่ยม

เมื่อกำหนดและจัดเก็บขอบเขตที่สนใจไว้ในตัวแปรแล้ว เราจะใช้ตัวแปรดังกล่าวเพื่อคำนวณฮิสโตแกรมของความเข้มของการเปลี่ยนแปลงสำหรับ ROI เพิ่มโค้ดต่อไปนี้ลงในส่วนการคำนวณของสคริปต์

ตัวแก้ไขโค้ด (JavaScript)

// Calculate a change intensity for the region of interest.
var histogram = change.reduceRegion({
  reducer: ee.Reducer.histogram(),
  geometry: roi,
  scale: 30,
  bestEffort: true,
});
print(histogram);

คำสั่งแรกจะคำนวณฮิสโตแกรมของค่าความเข้มของการเปลี่ยนแปลงการเกิดขึ้นภายใน ROI โดยสุ่มตัวอย่างที่สเกล 30 ม. ส่วนคำสั่งที่ 2 จะพิมพ์ออบเจ็กต์ผลลัพธ์ไปยังแท็บคอนโซลของตัวแก้ไขโค้ด คุณสามารถขยายแผนผังออบเจ็กต์เพื่อดูค่าของที่เก็บฮิสโตแกรมได้ ข้อมูลตัวเลขมีอยู่แล้ว แต่มีวิธีที่ดีกว่าในการแสดงผลลัพธ์เป็นภาพ

ค่าฮิสโตแกรม
รูปที่ 8 ผลลัพธ์ของแท็บคอนโซล ซึ่งแสดงค่าฮิสโตแกรมของความหนักในการเปลี่ยนแปลงของน้ำผิวดิน

เราสามารถสร้างแผนภูมิฮิสโตแกรมแทนเพื่อปรับปรุงข้อมูลนี้ได้ แทนที่คำสั่งที่กำหนดออบเจ็กต์ฮิสโตแกรมด้วยคำสั่งต่อไปนี้

ตัวแก้ไขโค้ด (JavaScript)

// Generate a histogram object and print it to the console tab.
var histogram = ui.Chart.image.histogram({
  image: change,
  region: roi,
  scale: 30,
  minBucketWidth: 10
});
histogram.setOptions({
  title: 'Histogram of surface water change intensity.'
});

คำสั่งเหล่านี้จะสร้างออบเจ็กต์แผนภูมิฮิสโตแกรม ซึ่งจะแทนที่โครงสร้างออบเจ็กต์ฮิสโตแกรมในแท็บคอนโซลด้วยแผนภูมิ เมธอดแผนภูมิมีอาร์กิวเมนต์หลายรายการ ซึ่งรวมถึง scale ซึ่งกำหนดมาตราส่วนเชิงพื้นที่เป็นเมตรที่สุ่มตัวอย่างภูมิภาคที่สนใจ และ minBucketWidth ซึ่งใช้เพื่อควบคุมความกว้างของที่เก็บข้อมูลฮิสโตแกรม

แผนภูมิฮิสโตแกรม
รูปที่ 9 ผลลัพธ์ของแท็บคอนโซล ซึ่งแสดงแผนภูมิฮิสโตแกรมของความเข้มข้นของการเปลี่ยนแปลงน้ำผิวดิน

คุณสามารถสำรวจค่าในแผนภูมิแบบอินเทอร์แอกทีฟได้โดยวางเคอร์เซอร์ไว้เหนือแท่งฮิสโตแกรม

สคริปต์สุดท้าย

สคริปต์ทั้งหมดสำหรับส่วนนี้แสดงอยู่ด้านล่าง โปรดทราบว่าสคริปต์มีคำสั่งสำหรับกำหนดเรขาคณิตรูปหลายเหลี่ยม (roi) ซึ่งเทียบได้กับเรขาคณิตที่คุณสร้างโดยใช้เครื่องมือเรขาคณิตของตัวแก้ไขโค้ด

ตัวแก้ไขโค้ด (JavaScript)

//////////////////////////////////////////////////////////////
// Asset List
//////////////////////////////////////////////////////////////

var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater');
var occurrence = gsw.select('occurrence');
var change = gsw.select("change_abs");
var roi = /* color: 0B4A8B */ee.Geometry.Polygon(
        [[[-74.17213, -8.65569],
          [-74.17419, -8.39222],
          [-74.38362, -8.36980],
          [-74.43031, -8.61293]]]);

//////////////////////////////////////////////////////////////
// Constants
//////////////////////////////////////////////////////////////

var VIS_OCCURRENCE = {
    min:0,
    max:100,
    palette: ['red', 'blue']
};
var VIS_CHANGE = {
    min:-50,
    max:50,
    palette: ['red', 'black', 'limegreen']
};
var VIS_WATER_MASK = {
  palette: ['white', 'black']
};

//////////////////////////////////////////////////////////////
// Calculations
//////////////////////////////////////////////////////////////

// Create a water mask layer, and set the image mask so that non-water areas are transparent.
var water_mask = occurrence.gt(90).mask(1);

// Generate a histogram object and print it to the console tab.
var histogram = ui.Chart.image.histogram({
  image: change,
  region: roi,
  scale: 30,
  minBucketWidth: 10
});
histogram.setOptions({
  title: 'Histogram of surface water change intensity.'
});
print(histogram);

//////////////////////////////////////////////////////////////
// Initialize Map Location
//////////////////////////////////////////////////////////////

// Uncomment one of the following statements to center the map on
// a particular location.
// Map.setCenter(-90.162, 29.8597, 10);   // New Orleans, USA
// Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico
// Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA
// Map.setCenter(149.412, -35.0789, 11);  // Lake George, Australia
// Map.setCenter(105.26, 11.2134, 9);     // Mekong River Basin, SouthEast Asia
// Map.setCenter(90.6743, 22.7382, 10);   // Meghna River, Bangladesh
// Map.setCenter(81.2714, 16.5079, 11);   // Godavari River Basin Irrigation Project, India
// Map.setCenter(14.7035, 52.0985, 12);   // River Oder, Germany & Poland
// Map.setCenter(-59.1696, -33.8111, 9);  // Buenos Aires, Argentina\
Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru

//////////////////////////////////////////////////////////////
// Map Layers
//////////////////////////////////////////////////////////////

Map.addLayer({
  eeObject: water_mask,
  visParams: VIS_WATER_MASK,
  name: '90% occurrence water mask',
  shown: false
});
Map.addLayer({
  eeObject: occurrence.updateMask(occurrence.divide(100)),
  name: "Water Occurrence (1984-2015)",
  visParams: VIS_OCCURRENCE,
  shown: false
});
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});

ในส่วนถัดไป คุณจะได้สำรวจเพิ่มเติมว่าน้ำเปลี่ยนแปลงไปอย่างไรเมื่อเวลาผ่านไป โดยทำงานกับเลเยอร์การเปลี่ยนผ่านของคลาสน้ำ