การลด ImageCollection

พิจารณาตัวอย่างที่ต้องใช้ค่ามัธยฐานของรูปภาพตามลำดับเวลาซึ่งแสดงด้วย ImageCollection หากต้องการลด ImageCollection ให้ใช้ imageCollection.reduce() ซึ่งจะลดคอลเล็กชันรูปภาพให้เหลือเพียงรูปภาพเดียวดังที่แสดงในรูปที่ 1 กล่าวโดยละเอียดคือ ระบบจะคํานวณเอาต์พุตทีละพิกเซล โดยแต่ละพิกเซลในเอาต์พุตจะประกอบด้วยค่ามัธยฐานของรูปภาพทั้งหมดในคอลเล็กชัน ณ ตําแหน่งนั้น หากต้องการดูสถิติอื่นๆ เช่น ค่าเฉลี่ย ผลรวม ความแปรปรวน เปอร์เซ็นต์แบบกำหนดเอง ฯลฯ คุณควรเลือกและนําตัวลดที่เหมาะสมไปใช้ (ดูรายการตัวลดทั้งหมดที่ใช้ได้ในปัจจุบันได้ที่แท็บเอกสารในเครื่องมือแก้ไขโค้ด) สําหรับสถิติพื้นฐาน เช่น ขั้นต่ำ สูงสุด ค่าเฉลี่ย ฯลฯ ImageCollection มีเมธอดทางลัด เช่น min(), max(), mean() ฯลฯ ซึ่งทำงานในลักษณะเดียวกับการเรียก reduce() ยกเว้นชื่อของกลุ่มที่เป็นผลลัพธ์จะไม่มีชื่อตัวลดอยู่ต่อท้าย

แผนภาพ imageCollection.reduce
รูปที่ 1 ภาพ ee.Reducer ที่นําไปใช้กับ ImageCollection

ตัวอย่างการลด ImageCollection คือคอลเล็กชันรูปภาพ Landsat 5 ที่กรองตามเส้นทางและแถว โค้ดต่อไปนี้ใช้ reduce() เพื่อลดคอลเล็กชันให้มีเพียง Image รายการเดียว (ที่นี่ใช้ตัวลดค่ามัธยฐานเพื่อวัตถุประสงค์ในการอธิบายเท่านั้น)

เครื่องมือแก้ไขโค้ด (JavaScript)

// Load an image collection, filtered so it's not too much data.
var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1')
  .filterDate('2008-01-01', '2008-12-31')
  .filter(ee.Filter.eq('WRS_PATH', 44))
  .filter(ee.Filter.eq('WRS_ROW', 34));

// Compute the median in each band, each pixel.
// Band names are B1_median, B2_median, etc.
var median = collection.reduce(ee.Reducer.median());

// The output is an Image.  Add it to the map.
var vis_param = {bands: ['B4_median', 'B3_median', 'B2_median'], gamma: 1.6};
Map.setCenter(-122.3355, 37.7924, 9);
Map.addLayer(median, vis_param);

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load an image collection, filtered so it's not too much data.
collection = (
    ee.ImageCollection('LANDSAT/LT05/C02/T1')
    .filterDate('2008-01-01', '2008-12-31')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
)

# Compute the median in each band, each pixel.
# Band names are B1_median, B2_median, etc.
median = collection.reduce(ee.Reducer.median())

# The output is an Image.  Add it to the map.
vis_param = {'bands': ['B4_median', 'B3_median', 'B2_median'], 'gamma': 1.6}
m = geemap.Map()
m.set_center(-122.3355, 37.7924, 9)
m.add_layer(median, vis_param)
m

ซึ่งจะแสดงผล Image แบบหลายย่านความถี่ โดยแต่ละพิกเซลจะเป็นค่ามัธยฐานของพิกเซลทั้งหมดที่ไม่มีการมาสก์ใน ImageCollection ณ ตําแหน่งพิกเซลนั้น กล่าวโดยละเอียดคือ ระบบจะใช้ตัวลดขนาดซ้ำสำหรับแต่ละย่านของภาพอินพุต ซึ่งหมายความว่าระบบจะคํานวณค่ามัธยฐานแยกกันในแต่ละย่าน โปรดทราบว่าชื่อของกลุ่มจะมีชื่อของ Reducer ต่อท้าย เช่น 'B1_median', 'B2_median' ฯลฯ ผลลัพธ์ควรมีลักษณะดังรูปที่ 2

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

เอาต์พุต ImageCollection.reduce
รูปที่ 2 ภาพสีเสมือนจริงที่ประกอบจากค่ามัธยฐานของภาพ Landsat 5 ในปี 2008