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());
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);
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.