Set data GSW berisi banyak lapisan data yang menyajikan data air permukaan dengan berbagai cara. Kita akan mulai dengan memvisualisasikan lapisan kemunculan air, yang memberikan ringkasan tentang lokasi dan frekuensi kemunculan air permukaan selama seluruh periode waktu antara Maret 1984 dan Oktober 2015.
Bagian tutorial ini akan:
- menambahkan lapisan peta untuk memvisualisasikan keberadaan air permukaan,
- menunjukkan cara membuat kueri nilai lapisan peta,
- menambahkan gaya visual kustom untuk meningkatkan kualitas visualisasi,
- membuat lapisan masker air biner menggunakan nilai batas,
- memusatkan peta pada bagian dunia yang menarik, dan
- menunjukkan cara memfaktorkan ulang skrip agar lebih mudah dibaca dan dikelola.
Membuat Visualisasi Dasar
Mulai dengan menyalin pernyataan berikut ke dalam Editor Kode:
Code Editor (JavaScript)
var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater'); var occurrence = gsw.select('occurrence'); Map.addLayer(occurrence);
Pernyataan pertama mereferensikan objek Gambar Earth Engine untuk set data GSW, dan
menyimpannya dalam variabel bernama gsw
.
Pernyataan kedua memilih satu lapisan set data GSW, dan menyimpannya dalam
variabel bernama occurrence
.
Pernyataan ketiga menambahkan gambar kejadian ke peta interaktif Editor Kode.
Klik tombol "Run" di Editor Kode, dan setelah beberapa detik, Anda akan melihat peta dengan warna abu-abu di sepanjang garis pantai, mirip dengan Gambar 1.

Di sebagian besar area, set data GSW tampak transparan, karena lokasi tempat gambar Landsat tidak dikumpulkan (yaitu area lautan) atau tempat air tidak terdeteksi oleh pengamatan apa pun dalam 32 tahun ditutupi.
Memeriksa Nilai
Untuk menjelajahi nilai lapisan kemunculan air, kita akan menggunakan tab pemeriksa Code Editor. Pertama, klik tab pemeriksa, lalu klik peta untuk memilih lokasi. Tab pemeriksa akan menampilkan informasi tentang setiap lapisan yang ada di tempat Anda mengklik.

Dalam contoh di atas, nilai lapisan bernama value
adalah 98. Satuannya adalah
persentase poin, jadi sekitar 98% waktu lokasi diklasifikasikan sebagai tertutup air.
Nilai ini adalah rata-rata dari setiap nilai kemunculan air permukaan bulanan, yang
dinormalisasi terhadap variasi musiman, seperti yang dijelaskan dalam
Panduan Pengguna Data (v2)
.
Memfaktorkan Ulang untuk Meningkatkan Kualitas Kode Anda
Skrip kita hanya berisi dua pernyataan, tetapi kita sudah memiliki peluang untuk memfaktorkan ulang
kode sehingga skrip akhir kita akan lebih mudah dibaca dan dikelola dari waktu ke waktu.
Saat ini, pernyataan Map.addLayer()
meneruskan satu argumen
occurrence
, yaitu objek gambar Earth Engine yang ingin kita tampilkan di
peta. Namun, metode Map.addLayer()
juga memungkinkan argumen tambahan
diteruskan ke metode tersebut. Untuk melihat argumen yang tersedia dengan cepat, letakkan kursor setelah
tanda kurung buka dan tekan pintasan keyboard untuk "Tampilkan saran kode" guna membuka
dokumen bantuan untuk metode addLayer
. (Pintasan keyboard dapat dilihat dengan
memilih menu Bantuan -> Pintasan.)

Pintasan keyboard menunjukkan bahwa ada lima argumen yang dapat diteruskan ke
Map.addLayer
:
eeObject
, visParams
, name
, shown
, dan
opacity
.
Dalam skrip saat ini, kita meneruskan satu variabel occurrence
yang
ditafsirkan sebagai argumen pertama, eeObject
.
Untuk meneruskan objek variabel dan argumen tambahan yang memberi nama lapisan, kita dapat
memfaktorkan ulang kode untuk menggunakan "argumen bernama" (eeObject
dan name
)
yang diteruskan ke metode dari dalam
struktur data JSON
seperti yang ditunjukkan di bawah:
Code Editor (JavaScript)
Map.addLayer({eeObject: occurrence, name: 'Water Occurrence (1984-2015)'});
Jalankan kode lagi untuk memastikan kode masih berfungsi setelah perubahan refaktorisasi. Peta yang dihasilkan tidak boleh diubah.
Menambahkan Parameter Visualisasi
Selanjutnya, kita akan berupaya meningkatkan kualitas parameter visualisasi default, yang membuat
air kita tampak berwarna abu-abu. Tambahkan pernyataan baru yang membuat variabel
VIS_OCCURRENCE
dan teruskan sebagai argumen tambahan ke metode addLayer.
Code Editor (JavaScript)
var VIS_OCCURRENCE = { min: 0, max: 100, palette: ['red', 'blue'] };
Code Editor (JavaScript)
Map.addLayer({ eeObject: occurrence.updateMask(occurrence.divide(100)), name: 'Water Occurrence (1984-2015)', visParams: VIS_OCCURRENCE });
Parameter visualisasi yang disimpan dalam struktur JSON VIS_OCCURRENCE
menunjukkan bahwa warna merah harus digunakan untuk nilai minimum 0% dan warna biru untuk nilai maksimum 100%.
Penambahan .updateMask(occurrence.divide(100))
menyebabkan
opasitas/transparansi piksel ditetapkan berdasarkan nilai kemunculan.
Jalankan skrip lagi, dan lihat hasil yang direvisi dari perubahan gaya kita.

Area perairan kini berwarna biru. Progres!
Membuat Lapisan Batas
Gambar kemunculan air berisi informasi tentang seberapa sering air diperkirakan muncul menggunakan rentang nilai dari 0 hingga 100%. Namun, sering kali berguna untuk menentukan lapisan air biner (yaitu "air" vs. "non-air") berdasarkan persentase kemunculan tertentu (yaitu nilai minimum). Kita akan menggunakan lapisan biner sederhana ini sebagai lapisan latar belakang yang bersih di atasnya lapisan GSW lainnya dapat ditempatkan. Pembuatan lapisan batas ini dapat dilakukan menggunakan pernyataan berikut, yang menggunakan nilai batas 90% untuk memisahkan air dan non-air.
Pertama, kita menentukan variabel visualisasi baru VIS_WATER_MASK
untuk menyimpan informasi
gaya untuk masker air:
Code Editor (JavaScript)
var VIS_WATER_MASK = { palette: ['white', 'black'] };
Kemudian, kita menghitung lapisan mask air menggunakan operator perbandingan lebih besar dari
.gt(90)
, lalu menyetel area yang sebelumnya diberi mask ke nol menggunakan metode
.unmask()
:
Code Editor (JavaScript)
// Create a water mask layer, and set the image mask so that non-water areas // are opaque. var water_mask = occurrence.gt(90).unmask(0);
Terakhir, tambahkan lapisan ke peta. Agar lapisan ini dirender di bawah semua
lapisan lainnya, tempatkan pernyataan berikut sebelum pernyataan Map.addLayer
lainnya.
Code Editor (JavaScript)
Map.addLayer({ eeObject: water_mask, visParams: VIS_WATER_MASK, name: '90% occurrence water mask' });

Pergi ke Bagian Dunia yang Menarik
Menjelajahi dunia dengan menggeser dan melakukan zoom memang menyenangkan, tetapi dunia ini sangat luas dan terkadang kita perlu langsung membuka lokasi tertentu. Berikut serangkaian pernyataan yang memberikan sampel kecil lokasi menarik, dalam hal air permukaan. Cukup hapus komentar salah satu pernyataan dalam satu waktu, dan skrip Anda akan menuju ke lokasi tersebut saat dijalankan.
Code Editor (JavaScript)
// Uncomment one of the following statements to center the map. // Map.setCenter(-90.162, 29.8597, 10); // New Orleans, USA // Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico // Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA // Map.setCenter(149.412, -35.0789, 11); // Lake George, Australia // Map.setCenter(105.26, 11.2134, 9); // Mekong River Basin, SouthEast Asia // Map.setCenter(90.6743, 22.7382, 10); // Meghna River, Bangladesh // Map.setCenter(81.2714, 16.5079, 11); // Godavari River Basin Irrigation Project, India // Map.setCenter(14.7035, 52.0985, 12); // River Oder, Germany & Poland // Map.setCenter(-59.1696, -33.8111, 9); // Buenos Aires, Argentina Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru
Ini hanyalah sampel kecil dari lokasi menarik. Jangan ragu untuk menambahkan milik Anda sendiri.
Pemfaktoran ulang, lagi...
Sebelum beralih ke lapisan berikutnya dari set data GSW, kita akan melakukan sedikit lagi refactoring kode. Secara khusus, kita akan mengelompokkan pernyataan serupa, dan menambahkan beberapa komentar yang akan membagi kode menjadi beberapa bagian untuk aset, konstanta, perhitungan, memusatkan peta, dan menambahkan lapisan peta.
Berikut adalah skrip yang telah difaktorkan ulang:
Code Editor (JavaScript)
////////////////////////////////////////////////////////////// // Asset List ////////////////////////////////////////////////////////////// var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater'); var occurrence = gsw.select('occurrence'); ////////////////////////////////////////////////////////////// // Constants ////////////////////////////////////////////////////////////// var VIS_OCCURRENCE = { min: 0, max: 100, palette: ['red', 'blue'] }; var VIS_WATER_MASK = { palette: ['white', 'black'] }; ////////////////////////////////////////////////////////////// // Calculations ////////////////////////////////////////////////////////////// // Create a water mask layer, and set the image mask so that non-water areas // are opaque. var water_mask = occurrence.gt(90).unmask(0); ////////////////////////////////////////////////////////////// // Initialize Map Location ////////////////////////////////////////////////////////////// // Uncomment one of the following statements to center the map. // Map.setCenter(-90.162, 29.8597, 10); // New Orleans, USA // Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico // Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA // Map.setCenter(149.412, -35.0789, 11); // Lake George, Australia // Map.setCenter(105.26, 11.2134, 9); // Mekong River Basin, SouthEast Asia // Map.setCenter(90.6743, 22.7382, 10); // Meghna River, Bangladesh // Map.setCenter(81.2714, 16.5079, 11); // Godavari River Basin Irrigation Project, India // Map.setCenter(14.7035, 52.0985, 12); // River Oder, Germany & Poland // Map.setCenter(-59.1696, -33.8111, 9); // Buenos Aires, Argentina Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru ////////////////////////////////////////////////////////////// // Map Layers ////////////////////////////////////////////////////////////// Map.addLayer({ eeObject: water_mask, visParams: VIS_WATER_MASK, name: '90% occurrence water mask', shown: false }); Map.addLayer({ eeObject: occurrence.updateMask(occurrence.divide(100)), name: 'Water Occurrence (1984-2015)', visParams: VIS_OCCURRENCE });
Di bagian berikutnya, Anda akan mempelajari bagaimana perubahan kemunculan air dari waktu ke waktu.