Giảm ImageCollection

Hãy xem xét ví dụ về việc cần lấy trung bình trên một chuỗi thời gian của hình ảnh được biểu thị bằng ImageCollection. Để giảm ImageCollection, hãy sử dụng imageCollection.reduce(). Điều này làm giảm bộ sưu tập hình ảnh xuống một hình ảnh riêng lẻ như minh hoạ trong Hình 1. Cụ thể, kết quả được tính toán theo từng pixel, sao cho mỗi pixel trong kết quả được tạo thành từ giá trị trung bình của tất cả hình ảnh trong tập hợp tại vị trí đó. Để có được các số liệu thống kê khác, chẳng hạn như trung bình, tổng, độ biến thiên, một phần trăm tuỳ ý, v.v., bạn nên chọn và áp dụng bộ giảm thích hợp. (Xem thẻ Tài liệu trong Trình soạn thảo mã để biết danh sách tất cả các trình giảm hiện có). Đối với các số liệu thống kê cơ bản như tối thiểu, tối đa, trung bình, v.v., ImageCollection có các phương thức lối tắt như min(), max(), mean(), v.v. Các phương thức này hoạt động giống hệt như khi gọi reduce(), ngoại trừ tên ban nhạc thu được sẽ không có tên của phương thức giảm được thêm vào.

Biểu đồ imageCollection.reduce
Hình 1. Hình minh hoạ ee.Reducer được áp dụng cho ImageCollection.

Để biết ví dụ về cách giảm ImageCollection, hãy xem xét một tập hợp hình ảnh Landsat 5, được lọc theo đường dẫn và hàng. Mã sau đây sử dụng reduce() để giảm bộ sưu tập xuống còn một Image (ở đây, một bộ giảm trung bình được sử dụng chỉ để minh hoạ):

Trình soạn thảo mã (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);

Thiết lập Python

Hãy xem trang Môi trường Python để biết thông tin về API Python và cách sử dụng geemap để phát triển tương tác.

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

Thao tác này sẽ trả về một Image nhiều băng, trong đó mỗi pixel là trung bình của tất cả các pixel chưa bị che trong ImageCollection tại vị trí pixel đó. Cụ thể, hàm rút gọn được lặp lại cho từng dải của hình ảnh đầu vào, nghĩa là giá trị trung bình được tính toán độc lập trong từng dải. Lưu ý rằng tên ban nhạc có tên của hàm giảm được thêm vào: 'B1_median', 'B2_median', v.v. Đầu ra sẽ có dạng như Hình 2.

Để biết thêm thông tin về cách giảm bộ sưu tập hình ảnh, hãy xem phần giảm trong tài liệu về ImageCollection. Cụ thể, hãy lưu ý rằng hình ảnh được tạo bằng cách giảm ImageCollection không có hình chiếu. Điều này có nghĩa là bạn nên đặt rõ ràng tỷ lệ trên mọi phép tính liên quan đến đầu ra hình ảnh được tính toán bằng cách giảm ImageCollection.

Đầu ra ImageCollection.reduce
Hình 2. Hình ảnh tổng hợp giả màu của trung bình các cảnh trên vệ tinh Landsat 5 trong năm 2008.