Giảm ImageCollection

Để kết hợp hình ảnh trong ImageCollection, hãy sử dụng imageCollection.reduce(). Thao tác này sẽ kết hợp tất cả hình ảnh trong bộ sưu tập thành một hình ảnh duy nhất đại diện cho, ví dụ: độ lệch tối thiểu, tối đa, trung bình hoặc chuẩn của hình ảnh. (Xem phần về phương thức giảm để biết thêm thông tin về phương thức giảm). Ví dụ: để tạo hình ảnh giá trị trung bình từ một bộ sưu tập:

Trình soạn thảo mã (JavaScript)

// Load a Landsat 8 collection for a single path-row.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
    .filterDate('2014-01-01', '2015-01-01');

// Compute a median image and display.
var median = collection.median();
Map.setCenter(-122.3578, 37.7726, 12);
Map.addLayer(median, {bands: ['B4', 'B3', 'B2'], max: 0.3}, 'Median');

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 a Landsat 8 collection for a single path-row.
collection = (
    ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
    .filterDate('2014-01-01', '2015-01-01')
)

# Compute a median image and display.
median = collection.median()
m = geemap.Map()
m.set_center(-122.3578, 37.7726, 12)
m.add_layer(median, {'bands': ['B4', 'B3', 'B2'], 'max': 0.3}, 'Median')
m

Tại mỗi vị trí trong hình ảnh đầu ra, trong mỗi dải tần số, giá trị pixel là giá trị trung bình của tất cả các pixel chưa bị che trong hình ảnh đầu vào (các hình ảnh trong tập hợp). Trong ví dụ trước, median() là một phương thức thuận tiện cho lệnh gọi sau:

Trình soạn thảo mã (JavaScript)

// Reduce the collection with a median reducer.
var median = collection.reduce(ee.Reducer.median());

// Display the median image.
Map.addLayer(median,
             {bands: ['B4_median', 'B3_median', 'B2_median'], max: 0.3},
             'Also median');

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)

# Reduce the collection with a median reducer.
median = collection.reduce(ee.Reducer.median())

# Display the median image.
m.add_layer(
    median,
    {'bands': ['B4_median', 'B3_median', 'B2_median'], 'max': 0.3},
    'Also median',
)
m

Xin lưu ý rằng tên ban nhạc khác nhau do sử dụng reduce() thay vì phương thức thuận tiện. Cụ thể, tên của bộ giảm đã được thêm vào tên ban nhạc.

Bạn cũng có thể giảm số lượng thành phần phức tạp hơn bằng cách sử dụng reduce(). Ví dụ: để tính toán xu hướng tuyến tính dài hạn trên một tập hợp, hãy sử dụng một trong các trình giảm hồi quy tuyến tính. Mã sau đây tính toán xu hướng tuyến tính của Chỉ số thực vật tăng cường MODIS (EVI):

Trình soạn thảo mã (JavaScript)

// This function adds a band representing the image timestamp.
var addTime = function(image) {
  return image.addBands(image.metadata('system:time_start')
    // Convert milliseconds from epoch to years to aid in
    // interpretation of the following trend calculation.
    .divide(1000 * 60 * 60 * 24 * 365));
};

// Load a MODIS collection, filter to several years of 16 day mosaics,
// and map the time band function over it.
var collection = ee.ImageCollection('MODIS/006/MYD13A1')
  .filterDate('2004-01-01', '2010-10-31')
  .map(addTime);

// Select the bands to model with the independent variable first.
var trend = collection.select(['system:time_start', 'EVI'])
  // Compute the linear trend over time.
  .reduce(ee.Reducer.linearFit());

// Display the trend with increasing slopes in green, decreasing in red.
Map.setCenter(-96.943, 39.436, 5);
Map.addLayer(
    trend,
    {min: 0, max: [-100, 100, 10000], bands: ['scale', 'scale', 'offset']},
    'EVI trend');

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)

# This function adds a band representing the image timestamp.
def add_time(image):
  return image.addBands(
      image.metadata('system:time_start')
      # Convert milliseconds from epoch to years to aid in
      # interpretation of the following trend calculation.
      .divide(1000 * 60 * 60 * 24 * 365)
  )


# Load a MODIS collection, filter to several years of 16 day mosaics,
# and map the time band function over it.
collection = (
    ee.ImageCollection('MODIS/006/MYD13A1')
    .filterDate('2004-01-01', '2010-10-31')
    .map(add_time)
)

# Select the bands to model with the independent variable first.
trend = collection.select(['system:time_start', 'EVI']).reduce(
    # Compute the linear trend over time.
    ee.Reducer.linearFit()
)

# Display the trend with increasing slopes in green, decreasing in red.
m.set_center(-96.943, 39.436, 5)
m = geemap.Map()
m.add_layer(
    trend,
    {
        'min': 0,
        'max': [-100, 100, 10000],
        'bands': ['scale', 'scale', 'offset'],
    },
    'EVI trend',
)
m

Xin lưu ý rằng kết quả của việc giảm trong ví dụ này là một hình ảnh hai dải với một dải cho độ dốc của hồi quy tuyến tính (scale) và một dải cho giá trị chặn (offset). Hãy khám phá tài liệu API để xem danh sách các phương thức rút gọn có sẵn nhằm rút gọn ImageCollection thành một Image.

Thành phần kết hợp không có phép chiếu

Hình ảnh tổng hợp được tạo bằng cách giảm một bộ sưu tập hình ảnh có thể tạo ra các pixel trong bất kỳ phép chiếu nào được yêu cầu và do đó không có phép chiếu đầu ra cố định. Thay vào đó, các thành phần kết hợp có chế độ chiếu mặc định của WGS-84 với pixel có độ phân giải 1 độ. Các thành phần kết hợp có phép chiếu mặc định sẽ được tính toán theo bất kỳ phép chiếu đầu ra nào được yêu cầu. Yêu cầu xảy ra bằng cách hiển thị thành phần kết hợp trong Trình soạn thảo mã (tìm hiểu cách Trình soạn thảo mã đặt tỷ lệmặt chiếu) hoặc bằng cách chỉ định rõ ràng một mặt chiếu/tỷ lệ như trong một tập hợp như ReduceRegion hoặc Export.