คอลเล็กชันรูปภาพ

คอลเล็กชันรูปภาพหมายถึงชุดรูปภาพของ Earth Engine ตัวอย่างเช่น คอลเล็กชัน ของรูปภาพ Landsat 8 ทั้งหมดคือ ee.ImageCollection เช่นเดียวกับรูปภาพ SRTM ที่คุณใช้ทำงาน คอลเล็กชันรูปภาพก็มีรหัสเช่นกัน เช่นเดียวกับรูปภาพเดี่ยว คุณสามารถค้นหารหัสของคอลเล็กชันรูปภาพได้โดยค้นหาแคตตาล็อกข้อมูลของ Earth Engine จาก โปรแกรมแก้ไขโค้ด แล้วดูหน้าข้อมูลของชุดข้อมูล เช่น ค้นหา "landsat 8 toa" แล้วคลิกผลการค้นหาแรก ซึ่งควรตรงกับชุดข้อมูล การสะท้อน TOA ของ USGS Landsat 8 Collection 1 Tier 1 นำเข้าชุดข้อมูลดังกล่าวโดยใช้ปุ่มนำเข้าและเปลี่ยนชื่อเป็น l8 หรือคัดลอกรหัสลงใน ตัวสร้างคอลเล็กชันรูปภาพ

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

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

การกรองคอลเล็กชันรูปภาพ

โปรดทราบว่าคอลเล็กชันนี้แสดงฉาก Landsat 8 ทุกฉากที่รวบรวมได้ ทั่วโลก บ่อยครั้งที่การแยกรูปภาพเดียวหรือชุดย่อยของรูปภาพ เพื่อทดสอบอัลกอริทึมจะมีประโยชน์ วิธีจำกัดการรวบรวมตามเวลาหรือพื้นที่คือการ กรอง เช่น หากต้องการกรองคอลเล็กชันให้แสดงเฉพาะรูปภาพที่ครอบคลุมสถานที่หนึ่งๆ ก่อนอื่นให้กำหนดพื้นที่ที่สนใจ ด้วยจุด (หรือเส้นหรือรูปหลายเหลี่ยม) โดยใช้เครื่องมือวาดรูปเรขาคณิต เลื่อนไปยังพื้นที่ที่คุณสนใจ วางเมาส์เหนือการนำเข้ารูปทรงเรขาคณิต (หากคุณมีรูปทรงเรขาคณิตที่กำหนดไว้แล้วอย่างน้อย 1 รายการ) แล้วคลิก +เลเยอร์ใหม่ (หากคุณไม่มีการนำเข้า ให้ ไปที่ขั้นตอนถัดไป) รับเครื่องมือวาดจุด () แล้วสร้างจุดในพื้นที่ที่คุณ สนใจ ตั้งชื่อการนำเข้า point ตอนนี้ให้กรองl8คอลเล็กชัน เพื่อรับเฉพาะรูปภาพที่ตัดกับจุด จากนั้นเพิ่มตัวกรองที่ 2 เพื่อ จำกัดคอลเล็กชันให้มีเฉพาะรูปภาพที่ได้มาในปี 2015

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

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

ในที่นี้ filterBounds() และ filterDate() เป็นวิธีการลัดสำหรับ วิธีการ filter() ที่ทั่วไปกว่าในคอลเล็กชันรูปภาพ ซึ่งรับ ee.Filter() เป็นอาร์กิวเมนต์ สำรวจแท็บ Docs ของ Code Editor เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับเมธอดเหล่านี้ อาร์กิวเมนต์ของ filterBounds() คือจุดที่คุณแปลงเป็นดิจิทัล และอาร์กิวเมนต์ของ filterDate() คือวันที่ 2 วัน ซึ่งแสดงเป็นสตริง

โปรดทราบว่าคุณprint()คอลเล็กชันที่กรองแล้วได้ คุณพิมพ์ได้ครั้งละไม่เกิน 5,000 รายการ ดังนั้นคุณจึงพิมพ์คอลเล็กชัน l8 ทั้งหมดไม่ได้ หลังจากเรียกใช้เมธอด print() แล้ว คุณจะตรวจสอบคอลเล็กชันที่พิมพ์ในคอนโซลได้ โปรดทราบว่าเมื่อขยาย ImageCollection โดยใช้ Zippy () แล้วขยาย รายการ features คุณจะเห็นรายการรูปภาพ ซึ่งแต่ละรายการสามารถ ขยายและตรวจสอบได้เช่นกัน นี่คือวิธีหนึ่งในการค้นหารหัสของรูปภาพแต่ละรูป อีกวิธีหนึ่ง ซึ่งเป็นวิธีแบบเป็นโปรแกรมมากขึ้นในการรับรูปภาพแต่ละรูปเพื่อการวิเคราะห์คือการจัดเรียงคอลเล็กชัน เพื่อให้ได้รูปภาพล่าสุด เก่าที่สุด หรือดีที่สุดที่เกี่ยวข้องกับพร็อพเพอร์ตี้ข้อมูลเมตา บางรายการ เช่น เมื่อตรวจสอบออบเจ็กต์รูปภาพในคอลเล็กชันรูปภาพที่พิมพ์ออกมา คุณอาจเห็นพร็อพเพอร์ตี้ข้อมูลเมตาที่ชื่อ CLOUD_COVER คุณใช้พร็อพเพอร์ตี้นั้นเพื่อรับภาพที่มีเมฆน้อยที่สุดในปี 2015 ในพื้นที่ที่คุณสนใจได้โดยทำดังนี้

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

// This will sort from least to most cloudy.
var sorted = temporalFiltered.sort('CLOUD_COVER');

// Get the first (least cloudy) image.
var scene = sorted.first();

ตอนนี้คุณก็พร้อมที่จะแสดงรูปภาพแล้ว

นอกเรื่อง: การแสดงรูปภาพ RGB

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

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

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

โปรดทราบว่าก่อนอื่นระบบจะจัดกึ่งกลางแผนที่บนรูปภาพที่ระดับการซูม 9 จากนั้นระบบจะแสดงรูปภาพพร้อมวัตถุที่ว่างเปล่า ({}) สำหรับพารามิเตอร์ visParams (ดูรายละเอียดในเอกสาร Map.addLayer()) ด้วยเหตุนี้ รูปภาพจึง แสดงด้วยการแสดงภาพเริ่มต้น โดยแถบ 3 แถบแรกจะแมปกับ R, G, B ตามลำดับ และขยายเป็น [0, 1] เนื่องจากแถบเป็นประเภทข้อมูล float ซึ่งหมายความว่า แถบแอโรซอลชายฝั่ง ("B1") จะแสดงเป็นสีแดง แถบสีน้ำเงิน ("B2") จะแสดง เป็นสีเขียว และแถบสีเขียว ("B3") จะแสดงเป็นสีน้ำเงิน หากต้องการแสดงผลรูปภาพเป็น คอมโพสิตสีจริง คุณต้องบอก Earth Engine ให้ใช้แถบ 'B4', 'B3' และ 'B2' ของ Landsat 8 สำหรับ R, G และ B ตามลำดับ ระบุแถบความถี่ที่จะใช้ด้วยพร็อพเพอร์ตี้ bands ของออบเจ็กต์ visParams ดูข้อมูลเพิ่มเติมเกี่ยวกับ แถบ Landsat ได้ที่ ข้อมูลอ้างอิง นี้

นอกจากนี้ คุณยังต้องระบุค่า min และ max ที่เหมาะสำหรับ การแสดงค่าการสะท้อนจากเป้าหมายพื้นผิวโลกทั่วไป แม้ว่าคุณจะใช้รายการเพื่อ ระบุค่าที่แตกต่างกันสำหรับแต่ละแบนด์ได้ แต่ในกรณีนี้ การระบุ 0.3 เป็น max และใช้ค่าเริ่มต้นเป็น 0 สำหรับพารามิเตอร์ min ก็เพียงพอแล้ว การรวมพารามิเตอร์การแสดงภาพเป็นออบเจ็กต์เดียวและ การแสดงผล

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

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

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

Tutorial_api_05_true_color.png
รูปที่ 5 ภาพการสะท้อน TOA ของ Landsat 8 เป็นคอมโพสิตสีจริง ขยายเป็น [0, 0.3]

ลองเล่นกับการแสดงภาพแถบความถี่ต่างๆ อีกชุดค่าผสมที่นิยมคือ "B5", "B4" และ "B3" ซึ่งเรียกว่าคอมโพสิตสีเทียม ส่วนการผสมสีเท็จที่น่าสนใจอื่นๆ มีอธิบายไว้ที่นี่

เนื่องจาก Earth Engine ออกแบบมาเพื่อทำการวิเคราะห์ขนาดใหญ่ คุณจึงไม่จำเป็นต้องทำงานกับฉากเพียงฉากเดียว ถึงเวลาแสดงทั้งคอลเล็กชันเป็นภาพ RGB แล้ว

การแสดงคอลเล็กชันรูปภาพ

การเพิ่มคอลเล็กชันรูปภาพลงในแผนที่คล้ายกับการเพิ่มรูปภาพลงในแผนที่ ตัวอย่างเช่น การใช้รูปภาพปี 2016 ในคอลเล็กชัน l8 และออบเจ็กต์ visParams ที่กำหนดไว้ก่อนหน้านี้

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

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31');
Map.addLayer(landsat2016, visParams, 'l8 collection');

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

หากซูมออกมากพอ คุณอาจสังเกตเห็นเมฆบางส่วนในภาพโมเสก เมื่อคุณเพิ่ม ImageCollection ลงในแผนที่ ระบบจะแสดงเป็นค่าล่าสุด แบบคอมโพสิต ซึ่งหมายความว่าจะแสดงเฉพาะพิกเซลล่าสุดเท่านั้น (เช่น การเรียกใช้ mosaic() ในคอลเล็กชัน) ด้วยเหตุนี้ คุณจึงเห็นความไม่ต่อเนื่องระหว่าง เส้นทางที่ได้มาใน เวลาที่ต่างกัน และเป็นสาเหตุที่ทำให้หลายพื้นที่มีเมฆปกคลุม ในหน้าถัดไป ให้ดูวิธี เปลี่ยนวิธีซ้อนรูปภาพเพื่อกำจัดเมฆที่น่ารำคาญเหล่านั้น