Görüntü Bölgesinin İstatistikleri

reduceRegion

Bir ee.Image bölgesindeki piksel değerlerinin istatistiklerini almak için image.reduceRegion()'i kullanın. Bu işlem, bölgelerdeki tüm pikselleri bir istatistike veya bölgedeki piksel verilerinin başka bir kompakt temsiline (ör. histogram) indirger. Bölge, Geometry olarak temsil edilir. Bu, birçok piksel içeren bir çokgen veya tek bir nokta olabilir. Bu durumda 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 şeması
Şekil 1. Bir resme ve bölgeye uygulanmış ee.Reducer görseli.

reduceRegion() kullanarak bir görüntünün bir bölgesinde piksel istatistikleri elde etme örneği olarak, Sierra Nevada İğne Yapraklı Ormanı sınırları içindeki 5 yıllık bir Landsat kompozitinin ortalama spektral değerlerini bulabilirsiniz (Ş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ünecektir:

B1: 25.406029716816853
B2: 23.971497014238988
B3: 22.91059593763103
B4: 54.83164133293403
B5: 38.07655472573677
B6_VCID_2: 198.93216428012906
B7: 24.063261634961563
reduceRegion şeması
Şekil 2. Kaliforniya ve Nevada için Landsat görüntü verilerinin yanlış renklendirilmiş birleşimi. Azaltılacak bölge beyaz renkle gösterilir.

Bu örnekte, küçültmenin reducer (ee.Reducer.mean()), geometry (region.geometry()), scale (30 metre) ve maxPixels (azaltıcıya girilecek maksimum piksel sayısı) değerlerinin sağlanmasıyla 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şlem akışlarında çıkışın ölçeğinin girişlerden net bir şekilde belirlenmemesidir. Bu durumda, ölçek varsayılan olarak 1 dereceye ayarlanır. Bu da genellikle tatmin edici olmayan sonuçlar verir. Earth Engine'ın ölçeği nasıl yönettiği hakkında daha fazla bilgi için bu sayfaya bakın.

Ölçeği ayarlamak için iki yöntem vardır: scale parametresini belirterek veya bir CRS ve CRS dönüşümü belirterek. (CRS'ler ve CRS dönüştürme işlemleri hakkında daha fazla bilgi için terimler sözlüğüne bakın). Örneğin, yukarıdaki meanDictionary indirimi aşağıdakilere eşittir:

// 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ği belirtmek yeterlidir ve daha okunaklı kodlar elde edilir. Earth Engine, önce bölgeyi rasterleştirerek azaltıcıya hangi piksellerin girileceğini belirler. Bir ölçek, CRS olmadan belirtilirse bölge, resmin yerel projeksiyonunda rasterleştirilir ve belirtilen çözünürlüğe ölçeklendirilir. Hem bir CRS hem de ölçek belirtilirse bölge bunlara göre rasterleştirilir.

Bölgedeki pikseller

Piksellerin bölgede olup olmadığı (ve ağırlıkları) aşağıdaki kurallara göre belirlenir. Bu kurallar, belirtilen ölçek ve projeksiyonda uygulanır:

  • Ağırlıklandırılmamış azaltıcılar (ör. ee.Reducer.count() veya ee.Reducer.mean().unweighted()): Orta noktaları bölgedeyse ve resmin maskesi sıfırdan farklıysa pikseller dahil edilir.
  • Ağırlıklı azaltıcılar (ör. ee.Reducer.mean()): Pikselin en az (yaklaşık) %0,5'i bölgedeyse ve resmin maskesi sıfır değilse pikseller dahil edilir; ağırlıkları, resmin maskesinin ve bölgenin kapladığı pikselin (yaklaşık) kesrinin minimum değeridir.

Hesaplamanın başarılı olması için maxPixels parametresi gereklidir. 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: Örnekte olduğu gibi maxPixels değerini artırın, scale değerini artırın veya bestEffort değerini doğru olarak ayarlayın. Bu durumda, maxPixels değerinin aşılmaması için otomatik olarak yeni (daha büyük) bir ölçek hesaplanır. maxPixels değerini belirtmezseniz varsayılan değer kullanılır.