Görüntü Bölgesinin İstatistikleri

reduceRegion

Bir ee.Image bölgesindeki piksel değerlerinin istatistiklerini almak için image.reduceRegion() işlevini kullanın. Bu işlem, bölgedeki tüm pikselleri bölgedeki piksel verilerinin istatistiğine veya diğer kompakt gösterimine (ör. histogram) indirger. Bölge, Geometry olarak gösterilir. Bu, çok sayıda piksel içeren bir poligon veya tek bir nokta olabilir. Tek bir nokta olması durumunda bölgede yalnızca bir piksel bulunur. Her iki durumda da Şekil 1'de gösterildiği gibi, çıkış, bölgedeki piksellerden elde edilen bir istatistiktir.

reduceRegion diyagramı
Şekil 1. Bir resme ve bölgeye ee.Reducer uygulanmış halinin resmi.

reduceRegion() kullanarak bir resmin bölgesindeki piksel istatistiklerini alma örneği için Sierra Nevada İğne Yapraklı Ormanı sınırları içindeki 5 yıllık bir Landsat kompozitinin ortalama spektral değerlerini bulmayı düşünün (Şekil 2'de gösterilmiştir):

// Load input imagery: Landsat 7 5-year composite.
var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012');

// Load an input region: Sierra Nevada.
var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3')
  .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada'))
  .first());

// Reduce the region. The region parameter is the Feature geometry.
var meanDictionary = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region.geometry(),
  scale: 30,
  maxPixels: 1e9
});

// The result is a Dictionary.  Print it.
print(meanDictionary);

Hesaplamayı zorlamak için sonucu yazdırmak yeterlidir. Kod Düzenleyici, sonucu konsolda Dictionary olarak gösterir. Çıkış şu şekilde görünmelidir:

B1: 25.406029716816853
B2: 23.971497014238988
B3: 22.91059593763103
B4: 54.83164133293403
B5: 38.07655472573677
B6_VCID_2: 198.93216428012906
B7: 24.063261634961563
reduceRegion diyagramı
Şekil 2. California ve Nevada için Landsat görüntü verilerinin yanlış renkli bileşimi. Küçültülecek bölge beyaz renkte gösterilir.

Bu örnekte, azaltma işleminin reducer (ee.Reducer.mean()), geometry (region.geometry()), scale (30 metre) ve azaltıcıya girilecek maksimum piksel sayısı için maxPixels değerleri sağlanarak belirtildiğini unutmayın. reduceRegion() çağrılarında her zaman bir ölçek belirtilmelidir. Bunun nedeni, farklı ölçeklere sahip farklı kaynaklardan gelen verileri içerebilen karmaşık işleme akışlarında çıkışın ölçeğinin girişlerden net bir şekilde belirlenememesidir. Bu durumda ölçek varsayılan olarak 1 dereceye ayarlanır ve bu genellikle tatmin edici olmayan sonuçlar üretir. Earth Engine'in ölçeği nasıl işlediği hakkında daha fazla bilgi için bu sayfaya bakın.

Ölçeği ayarlamanın iki yolu vardır: scale parametresini belirterek veya bir CRS ve CRS dönüşümü belirterek. (CRS'ler ve CRS dönüşümleri hakkında daha fazla bilgi için sözlüğe bakın). Örneğin, yukarıdaki meanDictionary azaltma işlemi aşağıdakine eşdeğerdir:

// As an alternative to specifying scale, specify a CRS and a CRS transform.
// Make this array by constructing a 4326 projection at 30 meters,
// then copying the bounds of the composite, from composite.projection().
var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563];

// Perform the reduction, print the result.
print(image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region.geometry(),
  crs: 'EPSG:4326',
  crsTransform: affine,
  maxPixels: 1e9
}));

Genel olarak, ölçeğin belirtilmesi yeterlidir ve daha okunabilir bir kod elde edilir. Earth Engine, önce bölgeyi rasterleştirerek indirgeyiciye hangi piksellerin girileceğini belirler. Ölçek, CRS olmadan belirtilirse bölge, belirtilen çözünürlüğe ölçeklenmiş resmin yerel projeksiyonunda rasterleştirilir. Hem CRS hem de ölçek belirtilmişse bölge, bunlara göre rasterleştirilir.

Bölgedeki pikseller

Pikseller, belirtilen ölçek ve projeksiyonda uygulanan aşağıdaki kurallara göre bölgede olduğu belirlenir (ve ağırlıklandırılır):

  • Ağırlıksız küçültücüler (ör. ee.Reducer.count() veya ee.Reducer.mean().unweighted()): Piksellerin ağırlık merkezi bölgedeyse ve görüntünün maskesi sıfır değilse pikseller dahil edilir.
  • Ağırlıklı küçültücüler (ör. ee.Reducer.mean()): Pikselin en az (yaklaşık) 1/256'sı (~%0,4) bölgede yer alıyorsa ve resmin maskesi sıfır değilse pikseller dahil edilir. Ağırlıkları, resmin maskesinin ve bölge tarafından kapsanan pikselin (yaklaşık) kesrinin minimum değeridir. Piksel kesişim ağırlıkları, dahili olarak 8 bitlik tam sayılar (0-255) şeklinde gösterilir ve kesirli kapsam 256 ayrı düzeye nicelleştirilir.

Hesaplamanın başarılı olması için maxPixels parametresi gerekir. Bu parametre örnekten çıkarılırsa aşağıdaki gibi bir hata döndürülür:

Bu hataları aşmak için birden fazla seçenek vardır: maxPixels değerini artırın (örnekteki gibi), scale değerini artırın veya bestEffort değerini true olarak ayarlayın. Bu durumda, maxPixels değerinin aşılmaması için yeni (daha büyük) bir ölçek otomatik olarak hesaplanır. maxPixels belirtmezseniz varsayılan değer kullanılır.