ชั้นข้อมูลความเข้มของการเปลี่ยนแปลงการเกิดน้ำแสดงการวัดการเปลี่ยนแปลงของน้ำผิวดินระหว่าง 2 ยุค ได้แก่ ปี 1984-1999 และปี 2000-2015 เลเยอร์จะหาค่าเฉลี่ยของการเปลี่ยนแปลงในคู่เดือนที่คล้ายคลึงกันซึ่งนำมาจาก 2 ยุค ดูรายละเอียดเพิ่มเติมเกี่ยวกับเลเยอร์นี้ได้ที่ คู่มือผู้ใช้ข้อมูล (เวอร์ชัน 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' });
การสรุปการเปลี่ยนแปลงภายในขอบเขตที่สนใจ
ในส่วนนี้ เราจะสรุปปริมาณการเปลี่ยนแปลงภายในขอบเขตที่สนใจที่ระบุ หากต้องการระบุขอบเขตที่สนใจ ให้คลิกเครื่องมือวาดรูปหลายเหลี่ยม ซึ่งเป็นหนึ่งใน เครื่องมือเรขาคณิต การดำเนินการนี้จะสร้างเลเยอร์การนำเข้าเรขาคณิตใหม่ ซึ่งมีชื่อว่า "geometry" โดยค่าเริ่มต้น หากต้องการเปลี่ยนชื่อ ให้คลิกไอคอนรูปเฟืองทางด้านขวาของชื่อเลเยอร์ (โปรดทราบว่าคุณอาจต้องวางเคอร์เซอร์บนชื่อเลเยอร์เพื่อให้ไอคอนปรากฏ)
เปลี่ยนชื่อเลเยอร์เป็น roi (สำหรับขอบเขตที่สนใจหรือ ROI) จากนั้นเราจะคลิกชุดจุดบนแผนที่เพื่อกำหนดขอบเขตที่สนใจเป็นรูปหลายเหลี่ยมได้
เมื่อกำหนดและจัดเก็บขอบเขตที่สนใจไว้ในตัวแปรแล้ว เราจะใช้ตัวแปรดังกล่าวเพื่อคำนวณฮิสโตแกรมของความเข้มของการเปลี่ยนแปลงสำหรับ 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 จะพิมพ์ออบเจ็กต์ผลลัพธ์ไปยังแท็บคอนโซลของตัวแก้ไขโค้ด คุณสามารถขยายแผนผังออบเจ็กต์เพื่อดูค่าของที่เก็บฮิสโตแกรมได้ ข้อมูลตัวเลขมีอยู่แล้ว แต่มีวิธีที่ดีกว่าในการแสดงผลลัพธ์เป็นภาพ
เราสามารถสร้างแผนภูมิฮิสโตแกรมแทนเพื่อปรับปรุงข้อมูลนี้ได้ แทนที่คำสั่งที่กำหนดออบเจ็กต์ฮิสโตแกรมด้วยคำสั่งต่อไปนี้
ตัวแก้ไขโค้ด (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 ซึ่งใช้เพื่อควบคุมความกว้างของที่เก็บข้อมูลฮิสโตแกรม
คุณสามารถสำรวจค่าในแผนภูมิแบบอินเทอร์แอกทีฟได้โดยวางเคอร์เซอร์ไว้เหนือแท่งฮิสโตแกรม
สคริปต์สุดท้าย
สคริปต์ทั้งหมดสำหรับส่วนนี้แสดงอยู่ด้านล่าง โปรดทราบว่าสคริปต์มีคำสั่งสำหรับกำหนดเรขาคณิตรูปหลายเหลี่ยม (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' });
ในส่วนถัดไป คุณจะได้สำรวจเพิ่มเติมว่าน้ำเปลี่ยนแปลงไปอย่างไรเมื่อเวลาผ่านไป โดยทำงานกับเลเยอร์การเปลี่ยนผ่านของคลาสน้ำ