Ringkasan Pengurang

Pengurangan adalah cara untuk menggabungkan data dari waktu, ruang, band, array, dan struktur data lainnya di Earth Engine. Class ee.Reducer menentukan cara data digabungkan. Pengurang dalam class ini dapat menentukan statistik sederhana yang akan digunakan untuk agregasi (misalnya, minimum, maksimum, rata-rata, median, standar deviasi, dll.), atau ringkasan data input yang lebih kompleks (misalnya, histogram, regresi linear, daftar). Pengurangan dapat terjadi dari waktu ke waktu (imageCollection.reduce()), ruang (image.reduceRegion(), image.reduceNeighborhood()), band (image.reduce()), atau ruang atribut FeatureCollection (metode featureCollection.reduceColumns() atau FeatureCollection yang dimulai dengan aggregate_).

Pengurang memiliki input dan output

Pengurang mengambil set data input dan menghasilkan satu output. Saat satu pengurangan input diterapkan ke gambar multi-band, Earth Engine akan otomatis mereplikasi pengurangan dan menerapkannya secara terpisah ke setiap band. Akibatnya, gambar output memiliki jumlah band yang sama dengan gambar input; setiap band dalam output adalah pengurangan piksel dari band yang sesuai dalam data input. Beberapa reducer mengambil tuple set data input. Pengurang ini tidak akan direplikasi secara otomatis untuk setiap band. Misalnya, ee.Reducer.LinearRegression() mengambil beberapa set data prediktor (mewakili variabel independen dalam regresi) dalam urutan tertentu (lihat Pengurang regresi).

Beberapa reducer menghasilkan beberapa output, misalnya ee.Reducer.minMax(), ee.Reducer.histogram(), atau ee.Reducer.toList(). Contoh:

Editor Kode (JavaScript)

// Load and filter the Sentinel-2 image collection.
var collection = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
    .filterDate('2016-01-01', '2016-12-31')
    .filterBounds(ee.Geometry.Point([-81.31, 29.90]));

// Reduce the collection.
var extrema = collection.reduce(ee.Reducer.minMax());

Penyiapan Python

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

import ee
import geemap.core as geemap

Colab (Python)

# Load and filter the Sentinel-2 image collection.
collection = (
    ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
    .filterDate('2016-01-01', '2016-12-31')
    .filterBounds(ee.Geometry.Point([-81.31, 29.90]))
)

# Reduce the collection.
extrema = collection.reduce(ee.Reducer.minMax())

Tindakan ini akan menghasilkan output dengan jumlah band input dua kali lipat, dengan nama band dalam output memiliki '_min' atau '_max' yang ditambahkan ke nama band.

Jenis output harus cocok dengan komputasi. Misalnya, pengurangan yang diterapkan ke ImageCollection memiliki output Image. Karena output ditafsirkan sebagai nilai piksel, Anda harus menggunakan pengurangan dengan output numerik untuk mengurangi ImageCollection (pengurangan seperti toList() atau histogram() tidak akan berfungsi).

Pengurang menggunakan input berbobot

Secara default, pengurangan pada nilai piksel diberi bobot berdasarkan mask-nya, meskipun perilaku ini dapat diubah (lihat bagian Bobot). Piksel dengan mask sama dengan 0 tidak akan digunakan dalam pengurangan.

Menggabungkan reducer

Jika niat Anda adalah menerapkan beberapa reducer ke input yang sama, sebaiknya combine() reducer untuk efisiensi. Secara khusus, memanggil combine() pada reducer dengan sharedInputs ditetapkan ke true hanya akan menghasilkan satu penerusan data. Misalnya, untuk menghitung rata-rata dan standar deviasi piksel dalam gambar, Anda dapat menggunakan sesuatu seperti ini:

Editor Kode (JavaScript)

// Load a Landsat 8 image.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');

// Combine the mean and standard deviation reducers.
var reducers = ee.Reducer.mean().combine({
  reducer2: ee.Reducer.stdDev(),
  sharedInputs: true
});

// Use the combined reducer to get the mean and SD of the image.
var stats = image.reduceRegion({
  reducer: reducers,
  bestEffort: true,
});

// Display the dictionary of band means and SDs.
print(stats);

Penyiapan Python

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a Landsat 8 image.
image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')

# Combine the mean and standard deviation reducers.
reducers = ee.Reducer.mean().combine(
    reducer2=ee.Reducer.stdDev(), sharedInputs=True
)

# Use the combined reducer to get the mean and SD of the image.
stats = image.reduceRegion(reducer=reducers, bestEffort=True)

# Display the dictionary of band means and SDs.
display(stats)

Dalam output, perhatikan bahwa nama reducer telah ditambahkan ke nama input untuk membedakan output reducer. Perilaku ini juga berlaku untuk output gambar, yang akan memiliki nama pengurangan yang ditambahkan ke nama band output.

Jika Anda menggabungkan reducer menggunakan input tanpa bobot dan reducer menggunakan input berbobot, semua input berbobot harus berada sebelum semua input tanpa bobot.