Azaltıcıya Genel Bakış

Veri azaltıcılar, Earth Engine'da zaman, alan, bant, dizi ve diğer veri yapıları genelinde verileri toplama yöntemidir. ee.Reducer sınıfı, verilerin nasıl toplandığını belirtir. Bu sınıftaki azaltıcılar, toplama için kullanılacak basit bir istatistik (ör. minimum, maksimum, ortalama, medyan, standart sapma vb.) veya giriş verilerinin daha karmaşık bir özetini (ör. histogram, doğrusal regresyon, liste) belirtebilir. Azalma, zaman (imageCollection.reduce()), alan (image.reduceRegion(), image.reduceNeighborhood()), bant (image.reduce()) veya FeatureCollection'in özellik alanında (featureCollection.reduceColumns() ya da aggregate_ ile başlayan FeatureCollection yöntemleri) gerçekleşebilir.

Azaltıcılarda girişler ve çıkışlar vardır

Azaltıcı, giriş veri kümesini alıp tek bir çıkış oluşturur. Çok bantlı bir görüntüye tek bir giriş azaltıcı uygulandığında Earth Engine, azaltıcıyı otomatik olarak çoğaltır ve her banda ayrı ayrı uygular. Sonuç olarak, çıkış görüntüsünde giriş görüntüsüyle aynı sayıda bant bulunur. Çıkıştaki her bant, giriş verilerindeki ilgili banttaki piksellerin azaltılmasıdır. Bazı azaltıcılar, giriş veri kümelerinin tuple'lerini alır. Bu azaltıcılar her bant için otomatik olarak çoğaltılmaz. Örneğin, ee.Reducer.LinearRegression() belirli bir sırada birden fazla kestirici veri kümesini (regressiyondaki bağımsız değişkenleri temsil eder) alır (Regresyon azaltıcılar bölümüne bakın).

Bazı azaltıcılar birden fazla çıkış oluşturur (ör. ee.Reducer.minMax(), ee.Reducer.histogram() veya ee.Reducer.toList()). Örneğin:

Kod Düzenleyici (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());

Python kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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

Bu işlem, girişlerin iki katı sayıda bant içeren bir çıkış oluşturur. Bu çıkıştaki bant adlarına "_min" veya "_max" eklenir.

Çıkış türü hesaplamayla eşleşmelidir. Örneğin, bir ImageCollection'e uygulanan bir azaltıcının Image çıkışı vardır. Çıkış, piksel değeri olarak yorumlandığından bir ImageCollection değerini azaltmak için sayısal çıkışa sahip azaltıcılar kullanmanız gerekir (toList() veya histogram() gibi azaltıcılar işe yaramaz).

Azaltıcı, ağırlıklı girişler kullanır.

Varsayılan olarak, piksel değerleri üzerindeki azaltmalar maskelerine göre ağırlıklandırılır ancak bu davranış değiştirilebilir (Ağırlıklandırma bölümüne bakın). Maskesi 0 olan pikseller azaltmada kullanılmaz.

Azaltıcıları birleştirme

Aynı girişlere birden fazla azaltıcı uygulamak istiyorsanız verimlilik için azaltıcıları combine() Daha açık belirtmek gerekirse, sharedInputs parametresi true olarak ayarlanmış bir azaltıcıda combine() çağrısı yapıldığında veriler yalnızca tek bir kez işlenir. Örneğin, bir resimdeki piksellerin ortalamasını ve standart sapmasını hesaplamak için şuna benzer bir ifade kullanabilirsiniz:

Kod Düzenleyici (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);

Python kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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)

Çıktıda, azaltıcı çıkışlarını ayırt etmek için azaltıcı adlarının giriş adlarına eklendiğini unutmayın. Bu davranış, çıkış bant adlarına indirgeyici adının ekleneceği resim çıkışları için de geçerlidir.

Ağırlıklandırılmamış girişler kullanan azaltıcıları ve ağırlıklandırılmış girişler kullanan azaltıcıları birleştiriyorsanız tüm ağırlıklandırılmış girişler, tüm ağırlıklandırılmamış girişlerden önce olmalıdır.