Statistik Region Gambar

reduceRegion

Untuk mendapatkan statistik nilai piksel di wilayah ee.Image, gunakan image.reduceRegion(). Tindakan ini akan mengurangi semua piksel dalam region menjadi statistik atau representasi ringkas lainnya dari data piksel dalam region (misalnya, histogram). Region direpresentasikan sebagai Geometry, yang mungkin berupa poligon, berisi banyak piksel, atau mungkin berupa satu titik, dalam hal ini hanya akan ada satu piksel di region. Dalam kedua kasus tersebut, seperti yang diilustrasikan dalam Gambar 1, output adalah statistik yang berasal dari piksel di region.

diagram reduceRegion
Gambar 1. Ilustrasi ee.Reducer yang diterapkan ke gambar dan region.

Untuk contoh mendapatkan statistik piksel di wilayah gambar menggunakan reduceRegion(), pertimbangkan untuk menemukan nilai spektral rata-rata komposit Landsat 5 tahun dalam batas Hutan Konifer Sierra Nevada (diilustrasikan oleh Gambar 2):

// 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);

Untuk memaksa komputasi, cukup cetak hasilnya, yang akan ditampilkan Editor Kode sebagai Dictionary di konsol. Outputnya akan terlihat seperti ini:

B1: 25.406029716816853
B2: 23.971497014238988
B3: 22.91059593763103
B4: 54.83164133293403
B5: 38.07655472573677
B6_VCID_2: 198.93216428012906
B7: 24.063261634961563
diagram reduceRegion
Gambar 2. Gabungan warna palsu dari data citra Landsat untuk California dan Nevada. Area yang akan dikurangi ditampilkan dalam warna putih.

Perhatikan bahwa dalam contoh ini, pengurangan ditentukan dengan memberikan reducer (ee.Reducer.mean()), geometry (region.geometry()), scale (30 meter), dan maxPixels untuk jumlah maksimum piksel yang akan dimasukkan ke pengurangan. Skala harus selalu ditentukan dalam panggilan reduceRegion(). Hal ini karena dalam alur pemrosesan yang kompleks, yang dapat melibatkan data dari berbagai sumber dengan skala yang berbeda, skala output tidak akan ditentukan secara tidak ambigu dari input. Dalam hal ini, skala defaultnya adalah 1 derajat, yang umumnya menghasilkan hasil yang tidak memuaskan. Lihat halaman ini untuk mengetahui informasi selengkapnya tentang cara Earth Engine menangani skala.

Ada dua cara untuk menetapkan skala: dengan menentukan parameter scale, atau dengan menentukan CRS dan transformasi CRS. (Lihat glosarium untuk mengetahui informasi selengkapnya tentang CRS dan transformasi CRS). Misalnya, pengurangan meanDictionary (di atas) setara dengan hal berikut:

// 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
}));

Secara umum, menentukan skala sudah cukup dan menghasilkan kode yang lebih mudah dibaca. Earth Engine menentukan piksel mana yang akan dimasukkan ke pengurangan dengan merasterisasi wilayah terlebih dahulu. Jika skala ditentukan tanpa CRS, region akan dirasterisasi dalam proyeksi native gambar yang diskalakan ke resolusi yang ditentukan. Jika CRS dan skala ditentukan, wilayah akan dirasterisasi berdasarkan keduanya.

Piksel di region

Piksel ditentukan berada dalam region (dan diberi bobot) sesuai dengan aturan berikut, yang diterapkan dalam skala dan proyeksi yang ditentukan:

  • Pengurang tanpa bobot (misalnya ee.Reducer.count() atau ee.Reducer.mean().unweighted()): piksel disertakan jika centroidnya berada dalam wilayah dan mask gambar bukan nol.
  • Pengurang berbobot (misalnya, ee.Reducer.mean()): piksel disertakan jika setidaknya (sekitar) 0,5% piksel berada dalam wilayah dan masker gambar bukan nol; bobotnya adalah minimum masker gambar dan (perkiraan) fraksi piksel yang tercakup oleh wilayah.

Parameter maxPixels diperlukan agar komputasi berhasil. Jika parameter ini dihilangkan dari contoh, error akan ditampilkan, yang terlihat seperti:

Ada beberapa opsi untuk mengatasi error ini: tingkatkan maxPixels, seperti dalam contoh, tingkatkan scale, atau tetapkan bestEffort ke true, yang secara otomatis menghitung skala baru (lebih besar) sehingga maxPixels tidak terlampaui. Jika Anda tidak menentukan maxPixels, nilai default akan digunakan.