เมื่อทราบวิธีโหลดและแสดงรูปภาพแล้ว ก็ได้เวลาใช้การคำนวณกับรูปภาพนั้น
เช่น คุณสามารถคำนวณความชันของภูมิประเทศได้โดยส่งรูปภาพระดับความสูง 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 จัดการสเกลได้ในเอกสารนี้
ที่ผ่านมา คุณทำงานกับรูปภาพเดียวที่มีแถบเดียว ในหน้าถัดไป คุณจะ ได้เรียนรู้เกี่ยวกับรูปภาพหลายแถบความถี่และคอลเล็กชันรูปภาพ