Mari kita mulai dengan perhitungan yang diperlukan untuk membuat rentang yang menampilkan piksel tempat data Hansen et al. menunjukkan kehilangan dan perolehan.
Set data Hansen et al. memiliki band yang pikselnya bernilai 1 jika terjadi kehilangan dan
0 jika tidak (loss
) dan band yang bernilai 1 jika terjadi perolehan dan 0
jika tidak (gain
). Untuk membuat band yang pikselnya bernilai 1 di kedua band
loss
dan gain
, Anda dapat menggunakan metode logis
and()
pada gambar. Metode and()
dipanggil seperti
image1.and(image2)
dan menampilkan gambar yang pikselnya bernilai 1 jika
image1 dan image2 bernilai 1, dan 0 di tempat lain:
Code Editor (JavaScript)
// Load the data and select the bands of interest. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); var gainImage = gfc2014.select(['gain']); // Use the and() method to create the lossAndGain image. var gainAndLoss = gainImage.and(lossImage); // Show the loss and gain image. Map.addLayer(gainAndLoss.updateMask(gainAndLoss), {palette: 'FF00FF'}, 'Gain and Loss');
Hasilnya, yang diperbesar ke Arkansas dengan tampilan satelit, akan terlihat seperti Gambar 1.

Dengan menggabungkan contoh ini dengan hasil dari bagian sebelumnya, kini Anda dapat membuat ulang gambar dari awal tutorial:
Code Editor (JavaScript)
// Displaying forest, loss, gain, and pixels where both loss and gain occur. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); var gainImage = gfc2014.select(['gain']); var treeCover = gfc2014.select(['treecover2000']); // Use the and() method to create the lossAndGain image. var gainAndLoss = gainImage.and(lossImage); // Add the tree cover layer in green. Map.addLayer(treeCover.updateMask(treeCover), {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover'); // Add the loss layer in red. Map.addLayer(lossImage.updateMask(lossImage), {palette: ['FF0000']}, 'Loss'); // Add the gain layer in blue. Map.addLayer(gainImage.updateMask(gainImage), {palette: ['0000FF']}, 'Gain'); // Show the loss and gain image. Map.addLayer(gainAndLoss.updateMask(gainAndLoss), {palette: 'FF00FF'}, 'Gain and Loss');
Mengukur Perubahan Hutan di Area yang Diminati
Setelah Anda lebih memahami rentang dalam set data Hansen dkk., kita dapat
menggunakan konsep yang telah dipelajari untuk menghitung statistik tentang perolehan dan kehilangan hutan di wilayah
yang diminati. Untuk itu, kita perlu menggunakan data vektor (titik, garis, dan poligon). Kumpulan data vektor direpresentasikan sebagai FeatureCollection
di Earth Engine.
(Pelajari lebih lanjut kumpulan fitur dan cara
mengimpor data vektor.)
Di bagian ini, kita akan membandingkan total jumlah kehilangan hutan yang terjadi di Republik Kongo pada tahun 2012 dengan jumlah kehilangan hutan yang terjadi di kawasan lindung negara tersebut pada waktu yang sama.
Seperti yang Anda pelajari dalam tutorial Earth Engine API, metode utama untuk menghitung statistik di wilayah gambar adalah reduceRegion()
. (Pelajari lebih lanjut cara mengurangi
region gambar.) Misalnya, kita ingin menghitung jumlah piksel yang diperkirakan
mewakili hilangnya hutan selama periode studi. Untuk tujuan tersebut, pertimbangkan kode
berikut:
Code Editor (JavaScript)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo')); // Get the forest loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); // Sum the values of forest loss pixels in the Congo Republic. var stats = lossImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo, scale: 30 }); print(stats);
Contoh ini menggunakan peredam ee.Reducer.sum()
untuk menjumlahkan nilai
piksel dalam lossImage
dalam fitur congo
. Karena
lossImage
terdiri dari piksel yang memiliki nilai 1 atau 0 (masing-masing untuk kehilangan atau tidak
kehilangan), jumlah nilai ini setara dengan jumlah piksel kehilangan
di wilayah tersebut.
Sayangnya, menjalankan skrip seperti apa adanya akan menghasilkan error seperti:
Jumlah piksel maksimum default di
reduceRegion()
adalah 10 juta. Pesan error ini menunjukkan bahwa Republik Kongo mencakup sekitar 383 juta piksel Landsat. Untungnya, reduceRegion()
mengambil banyak parameter, salah satunya (maxPixels
) memungkinkan Anda mengontrol jumlah
piksel yang digunakan dalam komputasi. Menentukan parameter ini memungkinkan komputasi berhasil:
Code Editor (JavaScript)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo')); // Get the forest loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); // Sum the values of forest loss pixels in the Congo Republic. var stats = lossImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo, scale: 30, maxPixels: 1e9 }); print(stats);
Dengan meluaskan objek yang dicetak ke konsol, amati bahwa hasilnya adalah
4897933 piksel hutan yang hilang. Anda dapat membersihkan cetakan di konsol dengan
memberi label pada output dan mendapatkan hasil yang diinginkan dari kamus yang ditampilkan
oleh reduceRegion()
:
Code Editor (JavaScript)
print('pixels representing loss: ', stats.get('loss'));
Menghitung Area Piksel
Anda hampir siap menjawab pertanyaan tentang seberapa luas area yang hilang di Republik Kongo,
dan seberapa luas area tersebut berada di kawasan lindung. Bagian yang tersisa adalah mengonversi piksel
menjadi area sebenarnya. Konversi ini penting karena kita tidak selalu mengetahui ukuran piksel yang dimasukkan ke reduceRegion()
. Untuk membantu menghitung area, Earth Engine memiliki metode ee.Image.pixelArea()
yang menghasilkan gambar dengan nilai setiap piksel adalah area piksel dalam meter persegi. Mengalikan
gambar kerugian dengan gambar area ini, lalu menjumlahkan hasilnya akan memberi kita ukuran
area:
Code Editor (JavaScript)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo')); // Get the forest loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossImage = gfc2014.select(['loss']); var areaImage = lossImage.multiply(ee.Image.pixelArea()); // Sum the values of forest loss pixels in the Congo Republic. var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo, scale: 30, maxPixels: 1e9 }); print('pixels representing loss: ', stats.get('loss'), 'square meters');
Sekarang hasilnya adalah 4.372.575.052 meter persegi yang hilang selama periode studi.
Sekarang Anda siap menjawab pertanyaan di awal bagian ini - berapa banyak area hutan yang hilang di Republik Kongo pada tahun 2012, dan berapa banyak area tersebut yang berada di kawasan lindung?
Code Editor (JavaScript)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = ee.Feature( countries .filter(ee.Filter.eq('country_na', 'Rep of the Congo')) .first() ); // Subset protected areas to the bounds of the congo feature // and other criteria. Clip to the intersection with congo. var protectedAreas = ee.FeatureCollection('WCMC/WDPA/current/polygons') .filter(ee.Filter.and( ee.Filter.bounds(congo.geometry()), ee.Filter.neq('IUCN_CAT', 'VI'), ee.Filter.neq('STATUS', 'proposed'), ee.Filter.lt('STATUS_YR', 2010) )) .map(function(feat){ return congo.intersection(feat); }); // Get the loss image. var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); var lossIn2012 = gfc2014.select(['lossyear']).eq(12); var areaImage = lossIn2012.multiply(ee.Image.pixelArea()); // Calculate the area of loss pixels in the Congo Republic. var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: congo.geometry(), scale: 30, maxPixels: 1e9 }); print( 'Area lost in the Congo Republic:', stats.get('lossyear'), 'square meters' ); // Calculate the area of loss pixels in the protected areas. var stats = areaImage.reduceRegion({ reducer: ee.Reducer.sum(), geometry: protectedAreas.geometry(), scale: 30, maxPixels: 1e9 }); print( 'Area lost in protected areas:', stats.get('lossyear'), 'square meters' );
Output menunjukkan bahwa dari 348.036.295 meter persegi hutan yang hilang di Republik Kongo pada tahun 2012, 11.880.976 di antaranya berada di kawasan lindung, seperti yang ditampilkan dalam tabel World Database on Protected Areas.
Satu-satunya perubahan antara skrip ini dan skrip sebelumnya adalah penambahan informasi area yang dilindungi dan perubahan skrip dari melihat kerugian secara keseluruhan menjadi melihat kerugian pada tahun 2012. Hal ini memerlukan dua perubahan. Pertama, ada gambar lossIn2012
baru yang memiliki angka 1 jika kerugian tercatat pada tahun 2012, dan 0 jika tidak. Kedua, karena
nama bandnya berbeda (lossyear
, bukan loss
), nama
properti harus diubah dalam pernyataan cetak.
Di bagian berikutnya, kita akan mempelajari beberapa metode lanjutan untuk menghitung dan memetakan hilangnya hutan setiap tahun, bukan hanya satu tahun seperti yang kita lakukan di bagian ini.