เมื่อทราบวิธีโหลดและแสดงรูปภาพแล้ว ก็ได้เวลาใช้การคำนวณกับรูปภาพนั้น
เช่น คุณสามารถคำนวณความชันของภูมิประเทศได้โดยส่งรูปภาพระดับความสูง SRTM ไปยังเมธอด slope ของแพ็กเกจ ee.Terrain
โปรแกรมแก้ไขโค้ด (JavaScript)
// Load the SRTM image. var srtm = ee.Image('CGIAR/SRTM90_V4'); // Apply an algorithm to an image. var slope = ee.Terrain.slope(srtm); // Display the result. Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon. Map.addLayer(slope, {min: 0, max :60}, 'slope');
โปรดทราบว่าในโค้ด ee.Terrain.slope(srtm) รูปภาพ srtm จะ
ระบุเป็นอาร์กิวเมนต์ของอัลกอริทึมความชัน ผลลัพธ์ควรมีลักษณะคล้ายกับ
รูปที่ 3
การคำนวณรูปภาพ
นอกจากนี้ ยังมีเมธอดในคลาส ee.Image ที่เรียกใช้ในออบเจ็กต์รูปภาพได้ด้วย
ตัวอย่างเช่น สมมติว่าคุณต้องการคำนวณโดยใช้แถบรูปภาพ (บางครั้งเรียกว่าการคำนวณแถบหรือพีชคณิตแผนที่) เช่น คุณอาจสนใจ
การดำเนินการตรีโกณมิติในรูปภาพสัดส่วน หากต้องการทำเช่นนั้น ให้แปลงรูปภาพ
สัดส่วนเป็นเรเดียนก่อน แล้วเรียกใช้ sin() ในรูปภาพนั้น การนำsrtm
รูปภาพของเราไปใช้ซ้ำ
โปรแกรมแก้ไขโค้ด (JavaScript)
// Get the aspect (in degrees). var aspect = ee.Terrain.aspect(srtm); // Convert to radians, compute the sin of the aspect. var sinImage = aspect.divide(180).multiply(Math.PI).sin(); // Display the result. Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');
ผลลัพธ์ควรมีลักษณะคล้ายกับรูปที่ 4 คุณควรพิจารณา
aspect.divide(180).multiply(Math.PI).sin() โค้ดอย่างละเอียด การเชื่อมโยงหลายๆ วิธี
เช่นนี้ โค้ดจะบอกว่า "หารสัดส่วนด้วย 180 คูณผลลัพธ์ด้วย
π และสุดท้ายให้ใช้ sin" คุณสามารถดำเนินการทางคณิตศาสตร์ที่ซับซ้อนกับรูปภาพได้โดยการรวมวิธีการในลักษณะนี้ ดูรายการการดำเนินการทางคณิตศาสตร์ทั้งหมด add(), subtract(), multiply() ฯลฯ ได้ใน
เอกสาร Image
สถิติรูปภาพ
การดำเนินการอีกประเภทหนึ่งที่มีประโยชน์กับรูปภาพคือการคำนวณสถิติของพิกเซลใน
ภูมิภาคของรูปภาพ หรือการซ้อนทับแบบราสเตอร์กับเวกเตอร์ หากต้องการคำนวณสถิติใน Earth Engine ให้ใช้
Reducer ตามที่แสดงโดยคลาสในแพ็กเกจ
ee.Reducer ตัวอย่างเช่น สมมติว่า
คุณสนใจค่าเฉลี่ยของระดับความสูงในบางภูมิภาค คุณกำหนดภูมิภาคได้โดย
วาดรูปหลายเหลี่ยมโดยใช้เครื่องมือวาดรูปทรงเรขาคณิต
หากต้องการวาดภูมิภาคแบบอินเทอร์แอกทีฟ ให้รับเครื่องมือวาดรูปหลายเหลี่ยม
(
) แล้วแปลงรูปหลายเหลี่ยมเป็นดิจิทัลเหนือ
พื้นที่ที่สนใจ แล้วคลิกออกเมื่อเสร็จสิ้น โปรดทราบว่าระบบจะตั้งชื่อออบเจ็กต์
ee.Geometryที่ได้ว่า geometry และเพิ่ม
เป็นการนำเข้าที่ด้านบนของสคริปต์โดยอัตโนมัติ เปลี่ยนชื่อตัวแปรเป็น "polygon" โดยคลิก
ที่ชื่อตัวแปรในการนำเข้า แล้วพิมพ์ชื่อใหม่
จากนั้นรับค่าพิกเซลเฉลี่ยในรูปหลายเหลี่ยมโดยใช้โค้ดต่อไปนี้
โปรแกรมแก้ไขโค้ด (JavaScript)
// Compute the mean elevation in the polygon. var meanDict = srtm.reduceRegion({ reducer: ee.Reducer.mean(), geometry: polygon, scale: 90 }); // Get the mean from the dictionary and print it. var mean = meanDict.get('elevation'); print('Mean elevation', mean);
สิ่งที่ควรทราบมีดังนี้ ก่อนอื่น โปรดสังเกตว่า reduceRegion() เป็น
เมธอดที่ใช้ได้กับออบเจ็กต์ Image (ดูข้อมูลเพิ่มเติม
เกี่ยวกับการลดภูมิภาคที่นี่) ประการที่ 2 อาร์กิวเมนต์ของเมธอดจะระบุไว้ใน
ออบเจ็กต์ JavaScript ที่ส่งเป็นอาร์กิวเมนต์เดียว (กล่าวคือ คีย์ของออบเจ็กต์คือชื่อพารามิเตอร์ของเมธอด ค่าคืออาร์กิวเมนต์ของเมธอด
) ประการที่สาม พารามิเตอร์ reducer จะระบุประเภทสถิติที่จะ
คํานวณ และพารามิเตอร์ geometry จะระบุภูมิภาคที่จะคํานวณ
สถิติ พารามิเตอร์ scale คือขนาดพิกเซลในหน่วยเมตรที่จะใช้ หากต้องการ
หลีกเลี่ยงความคลุมเครือ คุณควรกำหนดสเกลเสมอเมื่อทำการลดค่า เนื่องจาก Earth Engine
อาจไม่สามารถกำหนดสเกลที่เหมาะสมจากอินพุตได้โดยอัตโนมัติ
(ดูข้อมูลเพิ่มเติมเกี่ยวกับสเกลใน Earth Engine)
สุดท้าย ค่าที่ส่งคืนของ reduceRegion() คือพจนานุกรม
ซึ่งคีย์คือชื่อแถบความถี่ และค่าคือสถิติพิกเซลสำหรับแถบความถี่ เมธอด
get() ในพจนานุกรมจะแสดงค่าที่สอดคล้องกับคีย์
ที่ระบุเป็นอาร์กิวเมนต์ ในกรณีนี้ srtm รูปภาพมีแถบ 1 แถบ
"elevation" ดังนั้นโค้ดตัวอย่างจึงรับสถิตินั้นจากพจนานุกรมและพิมพ์ออกมา
เมื่อเรียกใช้โค้ดนี้ หากได้รับข้อผิดพลาดที่มีลักษณะดังนี้
ก็ไม่ต้องกังวลไป คุณแก้ไขข้อผิดพลาดได้ด้วยวิธีต่างๆ ดังนี้ เมธอด
reduceRegion() มีการตรวจสอบเพื่อให้แน่ใจว่าคุณได้พิจารณาแล้วว่าต้องการรวมพิกเซลจำนวนมากในการคำนวณจริงหรือไม่ ซึ่งมีจุดประสงค์เพื่อป้องกัน
ไม่ให้คุณทำสิ่งที่ไม่ควรทำโดยไม่ตั้งใจ เช่น พยายามคำนวณค่าเฉลี่ยของทุก
พิกเซลขนาด 1 เมตรในโลก (อย่าทำ) หากต้องการแก้ไขข้อผิดพลาด ให้ตั้งค่าพารามิเตอร์
bestEffort เป็น true โดยเพิ่ม bestEffort: true
ลงในพจนานุกรมของพารามิเตอร์ หรือตั้งค่าพารามิเตอร์ maxPixels เป็นค่า
ที่สูงกว่าค่าเริ่มต้น 10 ล้านพิกเซล หรือทั้ง 2 อย่าง หาก bestEffort เป็น
จริง Earth Engine จะคำนวณมาตราส่วนใหม่โดยอัตโนมัติเพื่อให้ maxPixels
ไม่เกิน
นอกเรื่อง: ขนาดใน Earth Engine
ในตัวอย่างก่อนหน้า scale จะตั้งค่าเป็นความละเอียดดั้งเดิมโดยประมาณ
ของรูปภาพ SRTM คุณดูความละเอียดดั้งเดิมของรูปภาพได้โดยทำดังนี้
โปรแกรมแก้ไขโค้ด (JavaScript)
var scale = srtm.projection().nominalScale(); print('SRTM scale in meters', scale);
หากคุณระบุสเกลที่เล็กกว่าความละเอียดดั้งเดิม Earth Engine จะทำการ สุ่มตัวอย่างรูปภาพอินพุตโดยใช้การประมาณค่าที่ใกล้ที่สุด แล้วรวมพิกเซลขนาดเล็กทั้งหมดเหล่านั้นไว้ในการ คำนวณ หากตั้งค่าสเกลให้ใหญ่ขึ้น Earth Engine จะใช้พิกเซลอินพุตจาก เวอร์ชันที่รวบรวมของอินพุต (เช่น รับพิกเซลจากระดับที่สูงกว่าของพีระมิดรูปภาพ) ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Earth Engine จัดการสเกลได้ในเอกสารนี้
ที่ผ่านมา คุณทำงานกับรูปภาพเดียวที่มีแถบเดียว ในหน้าถัดไป คุณจะ ได้เรียนรู้เกี่ยวกับรูปภาพหลายแถบความถี่และคอลเล็กชันรูปภาพ