InsightGEE1: Supervised Land Cover Classification
Mengetahui perubahan tutupan lahan di Kota Surabaya menggunakan metode Supervised Classification
Hallo semuanya,
Kali ini saya mau sharing tentang perubahan tutupan lahan di Kota Surabaya menggunakan metode supervised classification. Sebenarnya ingin sharing dari beberapa bulan yang lalu setelah jalan-jalan di Kota ini, tapi baru sempat nulis di Medium saat ini (alasan😒).
Untuk dapat memahami beberapa terminologi di artikel ini, saya akan jelaskan secara singkat apa itu tutupan lahan dan metode supervised classification.
Mari kita lihat informasi selanjutnya.
Kota Surabaya berkembang sangat pesat di sektor ekonomi, transportasi, dan penduduk. Jumlah penduduk Kota Surabaya di tahun 2020 mencapai 2.874.314 jiwa, menjadikan Kota Surabaya sebagai kota dengan jumlah penduduk terbanyak kedua di Indonesia. Meningkatnya jumlah penduduk di Kota Surabaya disebabkan oleh proses urbanisasi. Meningkatnya angka urbanisasi berdampak pada kebutuhan ruang (area) sehingga menyebabkan perubahan tutupan lahan.
Menurut Undang-Undang Republik Indonesia Nomor 4 Tahun 2011 tutupan lahan adalah:
garis yang menggambarkan batas penampakan area tutupan di atas permukaan bumi yang terdiri dari bentang alam dan/atau bentang buatan.
Menurut Peraturan Dirjen Planologi Kehutanan dan Tata Lingkungan Nomor 1 Tahun 2015 klasifikasi tutupan lahan dibagi menjadi dua yaitu:
kelas hutan dan kelas non-hutan. Kelas hutan terdiri dari hutan lahan kering primer, hutan lahan kering sekunder, hutan mangrove primer, hutan mangrove sekunder, hutan rawa primer dan hutan rawa sekunder. Kelas non hutan terdiri dari lahan perkebunan, semak belukar, semak belukar rawa, pertanian lahan kering, pertanian, lahan kering campuran, sawah, permukiman, bandara/pelabuhan, tambak, padang rumput, lahan terbuka, tambang, rawa, dan air.
Data tutupan lahan dapat diperoleh melalui pengolahan citra satelit dengan interpretasi objek menggunakan metode klasifikasi multispektral terbimbing (supervised classification) atau tidak terbimbing (unsupervised classification). Singkatnya, supervised classification melibatkan peran ‘user’ yang lebih besar dalam menentukan dan memberikan panduan untuk menentukan titik sampel (training data), sementara unsupervised classification lebih mengandalkan algoritma untuk mengelompokkan berdasarkan nilai spektral tanpa adanya peran ‘user’.
Oke, kali ini saya akan melakukan tutorial mengolah citra Sentinel-2A menjadi data tutupan lahan dengan metode supervised classification.
Tahap Pra-Pemrosesan
langkah 1: Membuat Area of Interest (AOI)
Hal pertama yang saya butuhkan adalah membuat batas pengamatan, salah satu cara yaitu import data shapefile (.dbf .prj .sbn .shp .shx) berfungsi sebagai Area of Interest (AOI) agar hanya menampilkan wilayah Kota Surabaya.
Ekstensi yang dibutuhkan untuk mengupload data shapefile adalah: shp, zip, dbf, prj, shx, cpg, fix, qix, sbn atau shp.xml.
Langkah 2: Import data citra Sentinel-2A
Hal kedua yang dibutuhkan adalah citra satelit untuk melakukan klasifikasi. Untuk tutorial ini, saya akan menggunakan citra Sentinel-2A.
// Tahap Pra-Pemrosesan
// 1 Import data citra Sentinel-2A
var dataset = ee.ImageCollection('COPERNICUS/S2_SR')
.filterDate('2019-01-30', '2019-12-30')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
.map(maskS2clouds)
.median()
.clip(AOI);
Script ini berfungsi untuk mengimpor citra Sentinel-2A dan melakukan pemotongan citra menggunakan AOI.
Langkah 3: Masking clouds Sentinel-2A
Selanjutnya, saya mendefinisikan fungsi “maskS2clouds” untuk menghilangkan objek awan pada citra Sentinel-2A.
// 2 Masking clouds Sentinel-2A
function maskS2clouds(image) {
var qa = image.select('QA60');
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);}
Di sini, saya telah meningkatkan kualitas citra berfungsi untuk analisis lebih lanjut.
Langkah 4: Menampilkan Visualisasi Citra Sentinel-2A
Kita dapat menampilkan citra yang di import pada Code Editor menggunakan metode Map.addLayer().
// Menampilkan Visualisasi Citra Sentinel-2A
var visualization = { min: 0.0, max: 0.3, bands: ['B4', 'B3', 'B2'],};
Map.centerObject(AOI, 11);
Map.addLayer(dataset.clip(AOI), visualization, 'RGB');
Saat ini, saya menggunakan komposit Red, Green, Blue (RGB) berfungsi menampilkan visualisasi untuk analisis penentuan klasifikasi kelas tutupan lahan.
Tahap Pemrosesan
Langkah 1: Membuat Titik Sampel (Training Data)
Selanjutnya, saya akan membuat titik sampel (training data) dengan 6 kelas klasifikasi tutupan lahan. klasifikasi tutupan lahan antara lain adalah air, tanah kosong, lahan pertanian, bangunan, mangrove, dan tambak. Masing-masing kelas klasifikasi tutupan lahan tedapat minimal 30 titik sampel, hal ini akan memenuhi kaidah menurut Roscoe (1975), yang menetapkan batas minimal sebanyak 30 titik sampel. Lebih banyak sampel cenderung lebih baik karena memiliki korelasi positif dengan tingkat akurasi yang lebih tinggi.
Langkah untuk membuat titik sampel (training data) adalah pilih ikon marker untuk menandai lokasi titik sampel, klik Edit Layer Properties di menu impor geometri, kemudian ganti nama geometri menjadi kelas klasifikasi yang diinginkan, misalnya air. Selanjutnya pilih opsi FeatureCollection sebagai metode impor. Pemilihan FeatureCollection digunakan untuk mengimpor data sebagai kumpulan fitur (features). Disini saya memberikan label ‘landcover’ sebagai Properti dari titik sampel dan beri nilai mulai dari “0" pada Value. Nilai ini akan menjadi identifikasi unik untuk kelas tersebut. Berarti jika kelas klasifikasi yang saya buat berjumlah 6, nomor kelas akan berurutan dari 0, 1, 2, 3, 4 dan 5.
Perlu diperhatikan, titik sampel harus sesuai dengan lokasi yang mewakili setiap kelas. Contohnya, jika kelas klasifikasi adalah air, titik sampel harus berada di area yang jelas sebagai representasi air. Oleh karena itu, saya melakukan identifikasi visual pada komposit RGB sebelum mengambil titik sampel dengan cara membedakan bentuk dan warna objek:
Air
Bentuk: Biasanya memiliki bentuk yang bebas dan mengikuti kontur tanah di sekitarnya. Berbentuk aliran, danau, atau lautan.
Warna: Biasanya memiliki warna biru gelap hingga biru terang, bergantung pada kedalaman dan kejernihan air.
Tanah Kosong
Bentuk: Biasanya datar atau sedikit bergelombang. Tidak ada vegetasi yang signifikan.
Warna: Dapat beragam dari coklat muda hingga coklat tua tergantung pada jenis tanah dan tutupan vegetasi.
Lahan Pertanian
Bentuk: Biasanya berbentuk persegi atau persegi panjang dengan pola berulang.
Warna: Tergantung pada jenis tanaman, bisa bervariasi dari hijau muda hingga hijau tua.
Bangunan
Bentuk: Biasanya berbentuk geometris dengan tepi yang jelas dan rapi.
Warna: Bervariasi tergantung pada bahan bangunan, seperti abu-abu, coklat, atau putih.
Mangrove
Bentuk: Terdapat di dekat perairan dengan akar yang menjulang tinggi.
Warna: Daunnya biasanya berwarna hijau gelap
Tambak
Bentuk: Biasanya berbentuk petak-petak dengan saluran air di antaranya.
Warna: Bervariasi, bisa dari warna coklat hingga hijau, tergantung pada kondisi air dan penggunaan tambak.
Terapkan langkah yang sama pada kelas lainnya: atur nama dan properties , kemudian pastikan urutan nomor kelas tidak tertukar.
Langkah 2: Menggabungkan titik sampel
Langkah berikutnya yaitu menggabungkan beberapa titik sampel menjadi satu titik sampel pada masing-masing kelas klasifikasi menggunakan fungsi ‘merge’.
// Fase Pemrosesan
// 2 Menggabungkan Titik Sampel Pada Masing-Masing Kelas Klasifikasi
var titikSampel = badanAir.merge(lahanKosong).merge(lahanPertanian)
.merge(permukiman).merge(mangrove).merge(tambak);
Selanjutnya melakukan ekstraksi nilai-nilai piksel dari band Sentinel-2A (B1, B2, B3, B4, B5, B6, B7) ke dalam titik sampel.
// Ekstraksi nilai piksel ke Dalam Titik Sampel
var bands = ['B1','B2','B3','B4','B5','B6','B7'];
var training = dataset.select(bands).sampleRegions({
collection: titikSampel,properties: ['landcover'],scale: 10});
Setiap titik sampel yang diambil akan mencakup nilai-nilai piksel dari band dari Sentinel-2A. Nilai-nilai ini akan menjadi input untuk penerapan metode supervised classification.
Langkah 3: Penerapan Metode Klasifikasi
Disini saya menggunakan algoritma Classification and Regression Trees (CART), salah satu dari metode supervised classification yang tersedia di Google Earth Engine (GEE).
// Penerapan Metode Klasifikasi
var classifier = ee.Classifier.smileCart().train({
features: training,
classProperty: 'landcover',
inputProperties: bands});
var classified = dataset.select(bands).classify(classifier);
Jadi, script ini menghasilkan klasifikasi tutupan lahan menggunakan titik sampel (training data) yang dipilih dari citra Sentinel-2A.
Tahap Pasca-Pemrosesan
Menampilkan Klasifikasi Tutupan Lahan
Langkah terakhir adalah menampilkan klasifikasi tutupan lahan dengan memasukkan script dibawah ini.
// Fase Pasca-Pemrosesan
//Tutupan Lahan 2023
Map.addLayer(classified,{min: 0, max: 5, palette:['#0078d6','#42bd1c','#f6ff00','#f54e2c','#038f1a','#f570ff']},'Tutupan Lahan');
Kesimpulan
Disini saya melakukan analisis singkat tentang perubahan tutupan lahan tahun 2019–2023 menghasilkan suatu informasi dalam rentang waktu 2019 hingga 2023, terdapat perubahan dalam klasifikasi tutupan lahan di Kota Surabaya. Pada tahun 2019, sebagian besar wilayah ditutupi oleh permukiman dengan luas mencapai 15,161.99 hektar, diikuti oleh lahan pertanian dengan luas 3,248.28 hektar, dan badan air dengan luas 6,491.86 hektar. Terdapat juga sejumlah lahan kosong dengan luas 3,837.95 hektar, serta mangrove dan tambak dengan luas masing-masing 862.73 hektar dan 3,240.36 hektar.
Namun, pada tahun 2023, terjadi beberapa perubahan dalam pola tutupan lahan. Luas permukiman mengalami peningkatan signifikan menjadi 18,146.49 hektar, yang mengindikasikan pertumbuhan perkotaan yang pesat. Di sisi lain, luas badan air berkurang menjadi 2,853.76 hektar, mungkin disebabkan oleh aktivitas perubahan penggunaan lahan. Lahan pertanian juga mengalami sedikit penurunan menjadi 3,181.28 hektar.
Perubahan yang menonjol adalah peningkatan luas mangrove menjadi 4,193.50 hektar, yang mungkin mengindikasikan upaya pelestarian ekosistem pesisir. Lahan kosong juga mengalami peningkatan menjadi 3,791.70 hektar.
Pengurangan luas tambak yang signifikan menjadi 772.57 hektar dapat diartikan sebagai adanya perubahan dalam sektor perikanan atau kebijakan lingkungan yang memengaruhi aktivitas tambak.
Secara keseluruhan, perubahan klasifikasi tutupan lahan dari tahun 2019 hingga 2023 di Kota Surabaya menunjukkan tren pertumbuhan perkotaan yang cepat, upaya pelestarian ekosistem mangrove yang lebih besar, serta fluktuasi dalam sektor pertanian dan perikanan.
Metode yang saya coba memang memiliki kelebihan dan kekurangan dalam melakukan klasifikasi tutupan lahan. Namun, tidak dapat dipungkiri bahwa terdapat beberapa faktor yang dapat memengaruhi hasil akhir pada klasifikasi tutupan lahan.
Salah satu aspek yang dapat ditingkatkan adalah jumlah titik sampel. Dengan memperluas sampel, hasil klasifikasi akan lebih representatif dan akurat. Tidak hanya itu, kualitas citra yang digunakan juga memainkan peran penting. Citra dengan resolusi tinggi dan kualitas yang baik akan menghasilkan interpretasi yang lebih tepat dan detail pada klasifikasi tutupan lahan.
Kalian dapat mencoba script dibawah ini atau bisa kunjungi link ini untuk mencoba langsung dalam Code Editor.
// Fase Pra-Pemrosesan
// 1. Data Citra Sentinel Level 2A
var dataset = ee.ImageCollection('COPERNICUS/S2_SR')
.filterDate('2023-01-30', '2023-06-30')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
.map(maskS2clouds)
.median()
.clip(AOI);
// 2. Masking Awan
function maskS2clouds(image) {
var qa = image.select('QA60');
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);}
// 3. Visualisasi Citra
var visualization = { min: 0.0, max: 0.3, bands: ['B4', 'B3', 'B2'],};
Map.centerObject(AOI, 11);
Map.addLayer(dataset.clip(AOI), visualization, 'RGB');
// Fase Pemrosesan
// 2 Menggabungkan Titik Sampel Pada Masing-Masing Kelas Klasifikasi
var titikSampel = badanAir.merge(lahanKosong).merge(lahanPertanian).merge(permukiman).merge(mangrove).merge(tambak);
// Ekstraksi nilai piksel ke Dalam Titik Sampel
var bands = ['B1','B2','B3','B4','B5','B6','B7'];
var training = dataset.select(bands).sampleRegions({collection: titikSampel,properties: ['landcover'],scale: 10});
// Penerapan Metode Klasifikasi
var classifier = ee.Classifier.smileCart().train({
features: training,
classProperty: 'landcover',
inputProperties: bands});
var classified = dataset.select(bands).classify(classifier);
// Fase Pasca-Pemrosesan
//Tutupan Lahan 2023
Map.addLayer(classified,{min: 0, max: 5, palette:['#0078d6','#42bd1c',
'#f6ff00','#f54e2c','#038f1a','#f570ff']},'Tutupan Lahan');
// Membuat skala legenda
var legend = ui.Panel({
style: {
position: 'bottom-right',
padding: '8px 15px'
}
});
// Membuat judul legenda
var legendTitle = ui.Label({
value: 'Legenda Tutupan Lahan 2023',
style: {
fontWeight: 'bold',
fontSize: '18px',
margin: '0 0 4px 0',
padding: '0'
}
});
// Menambahkan judul legenda ke dalam panel legenda
legend.add(legendTitle);
// Membuat ikon dan label untuk setiap kelas tutupan lahan
var palette = ['#0078d6', '#42bd1c', '#f6ff00', '#f54e2c', '#038f1a',
'#f570ff'];
var names = ['Badan Air', 'Lahan Kosong', 'Lahan Pertanian',
'Permukiman', 'Mangrove', 'Tambak'];
for (var i = 0; i < names.length; i++) {
var colorBox = ui.Label({
style: {
backgroundColor: palette[i],
padding: '8px',
margin: '0 0 4px 0'
}
});
var description = ui.Label({
value: names[i],
style: { margin: '0 0 4px 6px' }
});
legend.add(colorBox);
legend.add(description);
}
// Menambahkan panel legenda ke dalam peta
Map.add(legend);
Referensi
- Armansyah, B.T., dan Fardani, I. 2022. Prediksi Perubahan Tutupan Lahan dan Suhu Permukaan Lahan. Bandung Conference Series: Urban & Planning. Vol. 2 No. 2 (2022). https://doi.org/10.29313/bcsurp.v2i2.3597
- Indonesia.2011. Undang-Undang Nomor 4 Tahun 2011 Tentang Informasi Geospasial. Lembaran Negara RI Tahun 2011, Nomor 4. Sekretariat Negara. Jakarta
- Peraturan Dirjen Planologi Kehutanan dan Tata Lingkungan No.: 01/Juknis/IPSDH/2015
- Roscoe, J.T. 1975. Fundamentals Research Statistics For Behavioural Sciences. Performance Journal, 19(1), Pp 43–50 (Spring)
- Tosiani, A. 2020. Akurasi Data Lahan Penutupan Nasional Tahun 1990–2016. Buku. Direktorat Inventarisasi dan Pemantauan Sumber Daya Hutan, Ditjen Planologi Kehutanan dan Tata Lingkungan, Kementrian Lingkungan Hidup dan Kehutanan. 41pp.