#BelajarGEE8 —Multispectral Classification
Membuat Klasifikasi Tutupan Lahan (Land Cover) dengan Supervised Classification
Halo Semuanya,
Tutupan lahan (land cover) menyediakan informasi bagi kita untuk dapat mengetahui dan memahami dinamika fenomena alam yang terjadi pada permukaan bumi dalam skala waktu (temporal) juga ruang (spasial). Contoh paling umum adalah memantau pola pemanfaatan ruang terhadap kondisi lingkungan serta perubahan luasan hutan dari tahun ke tahun.
Land cover menurut UU Nomor 4 Tahun 2011 Tentang Informasi Geospasial adalah :
Garis yang menggambarkan batas penampakan area tutupan diatas permukaan bumi yang terdiri dari bentang alam dan/atau bentang buatan.
Data land cover dapat diperoleh melalui pengolahan citra dengan interpretasi objek menggunakan metode klasifikasi multispektral terbimbing (supervised classification) atau tidak terbimbing (unsupervised classification). Singkatnya proses supervised classification lebih banyak melibatkan manusia dalam prosesnya.
Kenapa saya bilang supervised classification lebih banyak melibatkan manusia? Karena metode ini mengharuskan user untuk membuat training data (titik sampel) untuk “melatih” algoritma klasifikasi agar dapat mengenali dan membedakan objek.
Oke, kali ini saya akan mengolah citra satelit Landsat 8 menjadi data land cover dengan supervised classification.
Tahap Praproses
1. Membuat Region of Interest (ROI)
Buat point (geometry) sebagai Region of Interest (ROI) agar data yang di load hanya menampilkan pada wilayah tersebut. Disini saya membuat wilayah Kabupaten Banyuwangi, Jawa Timur sebagai ROI.
2. Load Landsat 8
Gunakan script berikut untuk load data Landsat 8 di wilayah Kabupaten Banyuwangi.
//Load Landsat 8
var landsat8 = ee.Image(ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(banyuwangi)
.filterDate('2020-05-01', '2020-09-30')
.sort('CLOUD_COVER')
.first());
var vis_param = {bands: ['B4', 'B3', 'B2'],min:0, max: 3000, gamma:1.5};
Map.centerObject(banyuwangi, 11);
Map.addLayer(landsat8, vis_param, 'Landsat 8 Kab Banyuwangi');
3. Buat Training Data (Titik Sampel)
Selanjutnya buat sampel dari klasifikasi multipektral yang akan kita jalankan. Pengambilan sampel dilakukan dengan membuat titik-titik pada citra satelit Landsat 8 berdasarkan tampilan warna yang mewakili objek-objek tertentu di atas permukaan bumi.
Agar sesuai kaidah umum untuk menentukan ukuran sampel oleh Roscoe (1975), jumlah sampel memiliki batas minimal sebanyak 30 titik (semakin banyak saya pikir akan bagus karena berbanding lurus dengan tingkat akurasi). Sedangkan, jumlah kelasnya sebanyak lima dengan rincian antara lain adalah bangunan, badan air (laut), lahan pertanian (sawah), vegetasi dan awan.
Cara membuat titik sampel tidak jauh berbeda seperti menentukan ROI yakni dengan marker tool untuk membuat sebuah titik atau geometry. Pertama saya akan mengambil titik sampel dari kelas bangunan, klik new layer dan secara otomatis marker tool akan aktif, lalu mulai buat titik-titik sampel diatas citra satelit Landsat 8. Seperti yang sudah disebutkan diatas, buat sampel sebanyak 30 titik.
Perlu diperhatikan, titik sampel harus terdapat pada lokasi yang tepat sesuai dengan tiap kelas. Misalnya ketika kelas klasifikasi adalah bangunan, maka titik sampel pada citra Landsat 8 terletak di bagian yang merepresentasikan bahwa objek tersebut adalah sebuah bangunan. Faktor yang paling mudah untuk membedakan antar objek dalam citra satelit adalah melalui tampilan visual atau warna yang ditampilkan.
Sebenarnya dalam hal penentuan titik sampel seperti ini menurut saya sifatnya subjektif. Sebab kemampuan rekognisi objek setiap orang pasti tidak sama, tapi (mungkin) akan meningkat seiring berjalannya waktu dan pengalaman yang dimiliki.
Oleh karena itu, saya membuat dan mengambil titik sampel sesuai dengan identifikasi visual saya terhadap warna yang ditampilkan Landsat 8. Bangunan berwarna coklat, warna hijau muda adalah sawah sedangkan hijau agak pekat merupakan vegetasi. Kemudian objek yang menurut saya lebih mudah dikenali adalah badan air (laut), karena warna dan letaknya jelas berbeda daripada daratan.
Kembali ke pembuatan sampel, setelah selesai membuat titik sampel, buka menu edit layer properties.
Ubah nama geometry menjadi kelas klasifikasi yang diinginkan, contohnya bangunan. Pilih opsi FeatureCollection untuk Import as, disini saya beri landcover sebagai Property dari titik sampel. Opsi Value adalah nomor kelas klasifikasi, sistem penomoran ini menggunakan bilangan bulat (integer). Berarti jika kelas klasifikasi yang saya buat berjumlah 5, nomor kelas akan berurutan dari 0, 1, 2, 3 dan 4.
Ulangi langkah diatas untuk kelas lainnya, mulai dari pengambilan titik sampel sampai mengatur layer properties dan pastikan urutan nomor kelasnya tidak saling tertukar.
Tahapan Pemrosesan
1. Klasifikasi Objek
Tulis script berikut ini untuk menggabungkan (merge) semua titik sampel dari masing-masing kelas klasifikasi agar menjadi kesatuan FeatureCollection yang sama. Bukan tiap kelas yaitu bangunan, laut, sawah, awan dan vegetasi berdiri sebagai FeatureCollection yang terpisah.
//Klasifikasi Objek
var kelas = bangunan.merge(laut).merge(sawah).merge(awan).merge(vegetasi);
print(kelas); //Menggabungkan Kelas Klasifikasi
Keterangan :
var kelas
: nama variabel klasifikasibangunan.merge(laut).merge(sawah).merge(awan).merge(vegetasi)
: merupakan nama dari kelas klasifikasi,.merge
adalah perintah untuk merge titik sampel setiap kelasprint(kelas)
: menampilkan hasil merge dalam tab Console, dapat dilihat bahwa semua titik sampel berada dalam satu feature yang sama
Berikutnya adalah ekstraksi nilai piksel dari band Landsat 8 menggunakan titik sampel. Mengacu kepada Afrin (2019), saya memasukkan enam band mulai dari band 2 (blue) sampai band 7 (SWIR-2) secara berurutan. Nantinya, setiap titik sampel akan mengambil nilai piksel Landsat 8 dari band yang disebutkan sebelumnya. Hasilnya ditampilkan pada tab Console.
//Ekstraksi Nilai Piksel ke Dalam Titik Sampel
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];
var training = landsat8.select(bands).sampleRegions({
collection: kelas,
properties: ['landcover'],
scale: 30
});
print(training);
Keterangan :
var bands = [...]
: nama perintah untuk memilih band yang digunakan untuk klasifikasi[‘B2’, ‘B3’, ‘B4’, ‘B5’, ‘B6’, ‘B7’]
: daftar band yang dipilihvar training
: perintah untuk ekstraksi nilai piksel dengan titik sampel sehingga membuat training datalandsat8.select(bands).
: data citra satelit yang beserta pilihan bandsampleRegions({…})
: function untuk mengatur parameter training datacollection: kelas
: parameter untuk memilih variabel nama klasifikasi objekproperties: [‘landcover’]
: nama variabel prediktor, nama ini harus sama seperti property yang diinput ketika membuat geometry titik sampelscale: 30
: resolusi spasial Landsat 8 secara default yakni 30 meter
2. Memilih dan Memasukkan Metode Klasifikasi
GEE menyediakan berbagai macam jenis metode klasifikasi yang dapat dicari pada tab Docs, kita dapat memilih dan mencoba satu per satu metode sesuai dengan kebutuhan.
Sebagai contoh saya akan menggunakan metode Classification and Regression Trees (CART) dan Minimum Distance dengan menulis script perintah seperti berikut.
//Metode Klasifikasi
var cart = ee.Classifier.smileCart().train({
features: training,
classProperty: 'landcover',
inputProperties: bands
}); //CARTvar min_distance = ee.Classifier.minimumDistance().train({
features: training,
classProperty: 'landcover',
inputProperties: bands
}); //Minimum Distance
Keterangan :
var cart
: nama perintah yang berisi metode klasifikasiee.Classifier.smileCart
danee.Classifier.minimumDistance
: function metode klasifikasi yang berisi beberapa parameter tertentu. Nama dan parameter bisa saja berbeda tergantung jenis metode klasifikasifeatures
: parameter untuk memilih titik sampel (training data) yang digunakan untuk ekstraksi nilai pikselclassProperty
: diisi dengan nama properti yang sama ketika membuat geometry titik sampelinputProperties
: perintah untuk memilih daftar band
Kemudian lakukan klasifikasi ini kepada citra dengan menggunakan band yang di awal tadi kita pilih untuk diambil nilai pikselnya. Sehingga hasilnya akan menampilkan nilai piksel dalam panjang gelombang yang bervariasi.
//Klasifikasi Citra Menggunakan Band Terpilih
var train_cart = landsat8.select(bands).classify(cart);
var train_min_distance = landsat8.select(bands).classify(min_distance);
Keterangan :
landsat8
: data citra satelit yang dipilih.select(…)
: variabel seleksi band.classify(…)
: diisi dengan variabel metode klasifikasi
Hasil Klasifikasi
Menampilkan Layer
Langkah terakhir adalah menampilkan layer dengan memasukkan script dibawah ini. Karena saya menggunakan metode CART dan Minimum Distance, maka akan ada dua layer yang ditampilkan.
//Menampilkan Layer
Map.addLayer(train_cart,{
min: 0,
max: 4,
palette: [‘red’, ‘blue’, ‘yellow’, ‘white’, ‘green’]
}, ‘Tutupan Lahan Banyuwangi — Metode CART’);Map.addLayer(train_min_distance,{
min: 0,
max: 4,
palette: [‘red’, ‘blue’, ‘yellow’, ‘white’, ‘green’]
}, ‘Tutupan Lahan Banyuwangi — Metode Minimum Distance’);
Kesimpulan
Setelah script di eksekusi, tutupan lahan dari metode Minimum Distance dan CART segera ditampilkan pada peta. Hasil dari setiap metode langsung dapat dibandingkan secara kasat mata. Menurut saya metode CART lebih banyak mendeteksi bangunan (warna merah), sedangkan lahan pertanian atau sawah (warna kuning) banyak ditunjukkan oleh metode Minimum Distance. Bayangan yang disebabkan oleh awan malah terdeteksi sebagai laut (warna biru) di Minimum Distance, namun metode CART mengenali bayangan awan sebagai bangunan (warna merah).
Kedua metode yang saya coba diatas memang memiliki kelebihan dan kekurangan dalam melakukan klasifikasi tutupan lahan. Selain itu, bisa jadi penambahan jumlah titik sampel maupun kelas klasifikasi seperti lahan kosong, perairan darat (sungai, danau) serta permukiman akan mempengaruhi hasil yang ditampilkan pada peta. Mungkin juga ada metode beserta parameter lain yang lebih baik dan dapat diimplementasikan.
Kalian dapat menyalin script dibawah sebagai latihan, atau bisa kunjungi link ini untuk melihat langsung dalam Code Editor.
Terdapat cara lain untuk membandingkan hasil antar metode klasifikasi selain subjektif melalui tampilan visual saja yaitu dengan uji akurasi. Melalui hal tersebut kita dapat menentukan nilai akurasi dari suatu metode sudah sebaik apa dan sejauh mana hasilnya sesuai dengan keinginan kita.
Sampai Jumpa…
Referensi :
- Achsan, A.C., 2017. Pemanfaatan Citra Landsat Untuk Klasifikasi Tutupan Lahan Lanskap Perkotaan Kota Palu. J. Arsit. Lansek. 58. https://doi.org/10.24843/JAL.2017.v03.i01.p07
- Afrin, S., Gupta, A., Farjad, B., Ahmed, M., Achari, G., Hassan, Q.K., 2019. Development of Land-Use/Land-Cover Maps Using Landsat-8 and MODIS Data, and Their Integration for Hydro-Ecological Applications. Sensors 19, 4891. https://doi.org/10.3390/s19224891
- Henriques, A.P.M., Dória Neto, A.D., Amaral, R.F., 2010. Classification of multispectral images in coral environments using a hybrid of classifier ensembles. Neurocomputing 73, 1256–1264. https://doi.org/10.1016/j.neucom.2010.01.003
- Indonesia.2011. Undang-Undang Nomor 4 Tahun 2011 Tentang Informasi Geospasial. Lembaran Negara RI Tahun 2011, Nomor 4. Sekretariat Negara. Jakarta
- Killeen, P.G., Mwenifumbo, C.J., Ford, K.L., 2015. Tools and Techniques: Radiometric Methods, in: Treatise on Geophysics. Elsevier, pp. 447–524. https://doi.org/10.1016/B978-0-444-53802-4.00209-8
- Roscoe, J.T. 1975. Fundamentals Research Statistics For Behavioural Sciences. Performance Journal, 19(1), Pp 43–50 (Spring)
- SNI 7645–1:2014, Klasifikasi Penutup Lahan — Bagian 1: Skala Kecil dan Menengah
- Supervised Classification | Google Earth Engine | Google Developers