Mengurangi ImageCollection

Untuk membuat gambar komposit di ImageCollection, gunakan imageCollection.reduce(). Tindakan ini akan menggabungkan semua gambar dalam koleksi menjadi satu gambar yang mewakili, misalnya, deviasi minimum, maksimum, rata-rata, atau standar gambar. (Lihat bagian Reducer untuk mengetahui informasi selengkapnya tentang reducer). Misalnya, untuk membuat gambar nilai median dari koleksi:

// 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');

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

import ee
import geemap.core as geemap
# 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

Di setiap lokasi dalam gambar output, di setiap band, nilai piksel adalah median dari semua piksel yang tidak disamarkan dalam gambar input (gambar dalam koleksi). Pada contoh sebelumnya, median() adalah metode praktis untuk panggilan berikut:

// 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');

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

import ee
import geemap.core as geemap
# 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

Perhatikan bahwa nama band berbeda karena menggunakan reduce(), bukan metode praktis. Secara khusus, nama pengurangan telah ditambahkan ke nama band.

Pengurangan yang lebih kompleks juga dapat dilakukan menggunakan reduce(). Misalnya, untuk menghitung tren linear jangka panjang selama koleksi, gunakan salah satu pengurangan regresi linear. Kode berikut menghitung tren linear Indeks Vegetasi Enhanced (EVI) MODIS:

// 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');

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

import ee
import geemap.core as geemap
# 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

Perhatikan bahwa output pengurangan dalam contoh ini adalah gambar dua band dengan satu band untuk kemiringan regresi linear (scale) dan satu band untuk intersep (offset). Jelajahi dokumentasi API untuk melihat daftar pengurangan yang tersedia untuk mengurangi ImageCollection menjadi satu Image.

Komposit tidak memiliki proyeksi

Gambar gabungan yang dibuat dengan mengurangi koleksi gambar dapat menghasilkan piksel dalam proyeksi apa pun yang diminta, sehingga tidak memiliki proyeksi output tetap. Sebagai gantinya, komposit memiliki proyeksi default WGS-84 dengan piksel resolusi 1 derajat. Gabungan dengan proyeksi default akan dihitung dalam proyeksi output apa pun yang diminta. Permintaan terjadi dengan menampilkan komposit di Code Editor (pelajari cara Code Editor menetapkan skala dan proyeksi), atau dengan menentukan secara eksplisit proyeksi/skala seperti dalam agregasi seperti ReduceRegion atau Export.