reduceRegion
Untuk mendapatkan statistik nilai piksel di region ee.Image, gunakan
image.reduceRegion().
Tindakan ini akan mengurangi semua piksel di region menjadi statistik atau representasi ringkas lainnya dari data piksel di region (misalnya, histogram). Region direpresentasikan sebagai Geometry, yang mungkin berupa
poligon, yang berisi banyak piksel, atau mungkin berupa satu titik, yang 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.
ee.Reducer yang diterapkan pada gambar
dan region.Untuk contoh mendapatkan statistik piksel di region 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 oleh Code Editor sebagai Dictionary di konsol. Outputnya akan terlihat seperti berikut:
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563
Perhatikan bahwa dalam contoh ini, pengurangan ditentukan dengan memberikan reducer
(ee.Reducer.mean()), geometry (region.geometry()),
scale (30 meter), dan maxPixels untuk jumlah piksel maksimum yang akan dimasukkan ke reducer. Skala harus selalu ditentukan dalam
reduceRegion() panggilan. Hal ini karena dalam alur pemrosesan yang kompleks, yang
mungkin melibatkan data dari berbagai sumber dengan skala yang berbeda, skala output
tidak akan ditentukan secara jelas dari input. Dalam hal ini, skala akan ditetapkan secara default
ke 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
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 reducer dengan terlebih dahulu melakukan rasterisasi region. Jika skala ditentukan tanpa CRS, region akan di-rasterisasi dalam proyeksi native gambar yang diskalakan ke resolusi yang ditentukan. Jika CRS dan skala ditentukan, region akan di-rasterisasi berdasarkan keduanya.
Piksel di region
Piksel ditentukan berada di region (dan diberi bobot) sesuai dengan aturan berikut, yang diterapkan dalam skala dan proyeksi yang ditentukan:
- Reducer tanpa bobot (misalnya,
ee.Reducer.count()atauee.Reducer.mean().unweighted()): piksel disertakan jika sentroidnya berada di region dan mask gambar bukan nol. - Reducer berbobot (misalnya,
ee.Reducer.mean()): piksel disertakan jika setidaknya (kira-kira) 1/256 (~0,4%) piksel berada di region dan mask gambar bukan nol; bobotnya adalah minimum mask gambar dan (perkiraan) pecahan piksel yang tercakup oleh region. Bobot persimpangan piksel direpresentasikan secara internal sebagai bilangan bulat 8-bit (0 hingga 255), yang mengkuantisasi cakupan pecahan menjadi 256 tingkat diskrit.
Parameter maxPixels diperlukan agar komputasi berhasil. Jika parameter ini
tidak disertakan dalam contoh, error akan ditampilkan, yang terlihat seperti:
Ada beberapa opsi untuk mengatasi error ini: meningkatkan maxPixels,
seperti dalam contoh, meningkatkan scale, atau menetapkan bestEffort ke
benar (true), yang secara otomatis menghitung skala baru (lebih besar) sehingga maxPixels
tidak terlampaui. Jika Anda tidak menentukan maxPixels, nilai default akan digunakan.