MODUL PEMBELAJARAN
GOOGLE EARTH ENGINE UNTUK ILMU KELAUTAN
Seftiawan Samsu Rijal (NDH 20)
Peserta Latsar CPNS golongan III tahun 2020
Puslatbang KMP LAN - Makassar
Unit kerja:
Program studi Ilmu Kelautan
Jurusan Pemanfaatan Sumberdaya Perikanan dan Kelautan
Fakultas Perikanan dan Ilmu Kelautan
Universitas Brawijaya
seftiawan.sr@ub.ac.id
Kata Pengantar
Kemajuan teknologi telah membawa peradaban menuju era 4.0
dimana hampir seluruh sendi kehidupan kini telah diliputi oleh internet
(internet of things). Tidak terkecuali dengan perkembangan keilmuan
terkait eksplorasi laut dan pengolahan citra penginderaan jauh yang
menjadi sangat maju berkat adanya hal tersebut. Basis pengolahan citra
kini dapat tidak lagi dilakukan secara konvensional pada komputer
(desktop) melainkan dilakukan pada komputasi awan (cloud) yang aksesibel
dan bersifat kolaboratif antar pembuat/pengguna peta.
Modul Google Earth Engine (GEE) ini berisi penjelasan mengenai cara
memulai dan menggunakan GEE untuk berbagai kajian ilmu kelautan. GEE
adalah salah satu platform pengolah data spasial berbasis cloud yang kini
kegunaannya mulai dilirik oleh berbagai kalangan untuk melakukan kerja
profesional. Pemahaman mengenai GEE diperlukan sebagai amunisi
tambahan bagi mahasiswa program studi Ilmu Kelautan FPIK Universitas
Brawijaya khususnya agar mampu ikut bersaing di dunia kerja.
Penulis berharap modul ini dapat berguna bagi perkembangan
kompetensi mahasiswa dan program studi Ilmu Kelautan. Terlebih, pada
masa pandemi ini kita terbatas dalam melakukan aktivitas namun dituntut
agar tetap produktif menjalankan tridharma perguruan tinggi. Semoga
dengan dukungan platform semacam ini dapat membuat kita selalu
semangat untuk berkontribusi pada ilmu pengetahuan. Masukan dan saran
terhadap pengembangan modul akan penulis terima dengan lapang dada.
2
seftiawan.sr@ub.ac.id
==================================================================
Daftar Isi
Kata Pengantar 2
3
seftiawan.sr@ub.ac.id
3. Isi form yang bertanda bintang. Pada bagian yang diberi tanda panah,
isi dengan minimal 50 karakter. Berikut contoh isian yang dapat anda
tulis di dalamnya: I want to use Google Earth Engine to do a remote
sensing satellite imagery processing
4
seftiawan.sr@ub.ac.id
4. Pada bagian ini, anda hanya perlu mencentang pilihan ‘I agree that
my use of the Earth Engine …’ dan TIDAK perlu mencentang pilihan ‘I
am interested in …’ Kemudian klik pilihan I’m not a robot’, kemudian
Submit,
5
seftiawan.sr@ub.ac.id
6. Pada jendela code editor, anda akan melihat tampilan berikut beserta
penjelasannya,
6
seftiawan.sr@ub.ac.id
7
seftiawan.sr@ub.ac.id
3. Petik satu atau petik dua yang terletak sebelum dan setelah perintah
(‘ … ‘ atau “ … “), hal ini menandakan tipe data berupa string atau teks,
4. print ( … ), perintah ini digunakan saat kita akan memerintahkan
sistem untuk menampilkan properti data atau hasil yang kita peroleh
pada tab console,
5. Kurung siku ( [ … ] ), digunakan untuk menampilkan properti
data/hasil pada tab console dalam bentuk list atau daftar menurun,
6. Kurung kurawal ( { … } ), digunakan untuk menampilkan list dalam list
pada tab console,
7. Function, digunakan untuk menampilkan perintah yang disertai
dengan parameter. Parameter ditandai dengan kurung buka dan
kurung tutup ( … ) sementara perintah ditandai dengan kurung
kurawal { … } yang diletakkan di dalam parameter kurung buka dan
kurung tutup. Contohnya adalah sebagai berikut:
Code diatas dapat dibaca seperti ini: masukkan layer pada peta, yaitu
layer elevasi dan atur rentang ketinggiannya mulai 0 hingga 1000
mdpl, kemudian hasilnya beri nama dengan Elevation. Code ini biasa
digunakan untuk menampilkan data/hasil pada layar.
8
seftiawan.sr@ub.ac.id
//Angka
var nomor = 99;
print(nomor);
//List
var myList = ['GEE', salam, nomor];
print(myList);
//Dictionary
var myDict = {'a': nomor, 'b': myList, 'c': 1, 'd': 'abc'};
print(myDict);
9
seftiawan.sr@ub.ac.id
// Zoom ke Sulawesi
Map.setCenter(120.0928, -4.2466, 8);
10
seftiawan.sr@ub.ac.id
UJI COBA
1. Ubah parameter/nilai pada source code 2 sesuai keinginan anda
masing - masing,
2. Evaluasi perubahan yang terjadi pada tampilan peta milik anda,
3. Deskripsikan perubahan yang terjadi pada form berikut:
https://s.id/ujicoba_GEE
11
seftiawan.sr@ub.ac.id
1.4. Cara memilih data DEM dan menentukan Region of Interest (ROI)
Terdapat beberapa data Digital Elevation Model (DEM) pada GEE
contohnya Shuttle Radar Topographic Mission (SRTM), ALOS DSM,
GTOPO30, GMTED2010, ETOPO1 dan lainnya. Namun, tidak semua data DEM
tersebut meliputi wilayah laut dan ada pula yang hanya terbatas pada
area/negara tertentu. Oleh karena itu, kita hanya akan mempraktekkan
penggunaan DEM ETOPO1 yang cakupannya global dan memiliki data DEM
wilayah laut serta daratan. Berikut ini script 3 untuk menampilkan DEM
ETOPO1.
Setelah anda menyalin script diatas dan melakukan klik run pada
code editor, kemungkinan masih terdapat kegagalan proses yang ditandai
dengan notifikasi merah pada console. Hal ini terjadi karena anda belum
menentukan Region of Interest (ROI) pada area kajian anda. Agar dapat
menentukan ROI ikuti langkah dibawah ini.
12
seftiawan.sr@ub.ac.id
UJI COBA
1. Ubahlah angka pada perintah pengaturan minimum dan maximum
yang terdapat pada script 3 bagian //atur warna elevasi,
2. Ubahlah letak roi, letakkan dimanapun sesuai keinginan anda,
3. Ubah angka 5 dengan angka berapapun dalam rentang antara 1 - 24
pada perintah Map.centerObject (roi, 5);
4. Evaluasi dan deskripsikan hasil nomor 1 - 3 pada form berikut:
https://s.id/ujicoba_GEE
13
seftiawan.sr@ub.ac.id
Ekspor Hasil
Ekspor hasil GEE dapat dilakukan menjadi beberapa macam seperti
TIFF, shp, kml, dan juga video. Selain itu, kita dapat mengatur
penyimpanannya baik pada Google Drive, Asset atau Cloud Storage.
Dibawah ini adalah contoh script untuk menyimpan hasil GEE.
14
seftiawan.sr@ub.ac.id
Import data
GEE dapat menerima data yang dimiliki oleh user, atau hal ini
dinamakan impor data. Proses impor data dilakukan melalui tab Assets.
Pada tab tersebut, kita dapat mengunggah file dengan ekstensi *.shp,
*.GeoTIFF dan *.csv. Berikut ini tampilan dari tab Assets.
15
seftiawan.sr@ub.ac.id
Selain membagikan script yang telah kita buat pada Code Editor, kita
juga dapat membagikan data yang telah kita unggah pada Asset. Caranya
adalah klik tab Asset, pilih Share, centang pilihan Anyone can read
kemudian pilih Done. Maka script dari data pada Asset kita dapat dibagikan
kepada orang lain. Berikut ini adalah gambarnya.
16
seftiawan.sr@ub.ac.id
17
seftiawan.sr@ub.ac.id
3. Pada Earth Engine Data Catalog, lakukan browsing atau search data
citra sesuai kebutuhan anda. Selain itu, pada tampilan Earth Engine
Data Catalog, kita juga dapat mengecek API Doc yang berisi informasi
dan petunjuk dalam pemrosesan citra pada GEE. Berikut ini adalah
contoh tampilan apabila kita memilih View All Dataset.
18
seftiawan.sr@ub.ac.id
var kelas =
Bangunan.merge(Air).merge(Sawah).merge(Vegetasi);
print(kelas);
19
seftiawan.sr@ub.ac.id
//Display classification
Map.centerObject(roi,12);
Map.addLayer(classified,
{min: 0, max: 3, palette: ['red', 'blue',
'yellow','green']},
'klasifikasi');
2. Tentukan letak ROI. Pada modul ini, ROI berada di Kota Semarang
3. Buatlah sampel untuk penentuan kelas klasifikasi
20
seftiawan.sr@ub.ac.id
21
seftiawan.sr@ub.ac.id
1. Sub bab ini merupakan kelanjutan dari sub bab 2.1., jangan lakukan
clear script,
2. Pengujian akurasi dapat dilakukan dengan membagi dua sampel
yang telah kita buat sebelumnya dengan komposisi 80 dan 20. 80%
untuk membangun klasifikasi dan 20% untuk melakukan uji akurasi
3. Salin script berikut
//Membagi ROI menjadi 2 (80% untuk membuat model, 20%
untuk menguji model)
training = training.randomColumn({ seed: 1 });
var training = training.filter(ee.Filter.lt('random',
0.8)); // 80%
var validation = training.filter(ee.Filter.lt('random',
0.2)); // 20%
var trainAccuracy =
klasifikasi.confusionMatrix().accuracy();
print('trainAccuracy', trainAccuracy); // 1.0
22
seftiawan.sr@ub.ac.id
2.3. Layout
1. Sub bab ini merupakan kelanjutan dari sub bab 2.2., jangan lakukan
clear script,
2. Apabila telah selesai memproses citra, maka kita dapat melakukan
layout
3. Salin script dibawah ini untuk dapat melakukan layout
// Tetapkan ukuran dan letak legenda
var legend = ui.Panel({
style: {
position: 'bottom-left',
padding: '8px 15px'
}
});
// Membuat judul
var legendTitle = ui.Label({
value: 'Legenda',
style: {
fontWeight: 'bold',
fontSize: '18px',
margin: '0 0 4px 0',
padding: '0'
}
});
// Membuat style
var makeRow = function(color, name) {
23
seftiawan.sr@ub.ac.id
// Mewarnai box
var colorBox = ui.Label({
style: {
backgroundColor: '#' + color,
// Membuat label
var description = ui.Label({
value: name,
style: {margin: '0 0 4px 6px'}
});
// Mengambalikan panel
return ui.Panel({
widgets: [colorBox, description],
layout: ui.Panel.Layout.Flow('horizontal')
});
};
// Memberi warna
var palette =['ff0000', '0000ff', 'ffff00', '008000'];
// Menamai legenda
var names = ['Bangunan','Air','Sawah','Vegetasi'];
24
seftiawan.sr@ub.ac.id
legend.add(makeRow(palette[i], names[i]));
}
5. Apabila anda telah selesai melakukan semua proses diatas, Save script
anda dan lakukan Clear Script untuk melanjutkan sub bab
selanjutnya.
25
seftiawan.sr@ub.ac.id
26
seftiawan.sr@ub.ac.id
// Pilih tanggal
.filterDate("2015-07-01", "2017-09-30")
// Print citra
print("A Sentinel-2 scene:", image);
27
seftiawan.sr@ub.ac.id
min: 0,
max: 3000
};
//Hitung NDVI
var nir = image.select('B8'); //definisikan bandnya
var red = image.select('B4'); //definisikan bandnya
var NDVI =
nir.subtract(red).divide(nir.add(red)).rename('NDVI');
28
seftiawan.sr@ub.ac.id
7. Lakukan evaluasi hasil nilai NDVI pada beberapa titik. Nilai NDVI akan
berkisar antara -1 hingga +1 dimana mendekati nilai -1 (rona gelap)
menunjukkan daerah lahan terbuka sedangkan mendekati nilai +1
(rona putih / cerah) menandakan area bervegetasi lebat. Dibawah ini
adalah contoh citra hasil pengolahan NDVI (atas) dan citra false colour
komposit 843 (bawah).
29
seftiawan.sr@ub.ac.id
1. Unggah shp lewat Asset seperti yang telah dijelaskan pada sub bab
1.5. Fungsi ekspor dan impor pada GEE, pada modul ini, shp yang
diunggah adalah batas administrasi Provinsi Kalimantan Selatan.
Anda dapat menggunakan batas administrasi wilayah lain.
2. Setelah shp selesai diunggah, pilih Import into script
30
seftiawan.sr@ub.ac.id
return
image.addBands(image.metadata('system:time_start'));
})
.mosaic()
.clip(kalsel);
// Menghitung NDWI
var ndwi_wet = image_wet.normalizedDifference(['B3',
'B8']);
var ndwi_dry = image_dry.normalizedDifference(['B3',
'B8']);
31
seftiawan.sr@ub.ac.id
32
seftiawan.sr@ub.ac.id
1. Cari Indonesia pada Search Places and Datasets …, kemudian buat ROI
berupa kotak (draw a rectangle) di atas Negara Indonesia, ubah
‘geometry’ menjadi ‘batas’,
2. Salin script dibawah ini untuk identifikasi SST
var dataset =
ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI')
.filterDate('2019-01-01', '2019-12-31')
.map(function(dataset){return
dataset.clip(batas)});
var remoteSensingReflectance =
dataset.select(['sst']);
var remoteSensingReflectanceVis = {
min: -2,
max: 40,
palette:['040274', '040281', '0502a3', '0502b8',
'0502ce', '0502e6',
'0602ff', '235cb1', '307ef3', '269db1', '30c8e2',
'32d3ef',
'3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e',
'd6e21f',
'fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08',
'ff500d',
'ff0000', 'de0101', 'c21301', 'a71001', '911003']
};
Map.centerObject(roi, 4);
Map.addLayer(
remoteSensingReflectance, remoteSensingReflectanceVis,
'MODIS SST 2019');
33
seftiawan.sr@ub.ac.id
Map.centerObject(roi, 4);
Map.addLayer(
remoteSensingReflectance, remoteSensingReflectanceVis,
'MODIS Chlor-a 2019');
34
seftiawan.sr@ub.ac.id
35
seftiawan.sr@ub.ac.id
2.7. Salinitas
1. Unggah shp yang mencakup wilayah laut melalui Asset. Pada modul
ini, shp yang diunggah adalah Batas WPP NKRI.
2. Setelah shp selesai diunggah, pilih Import into script
3. Ubah nama ‘table’ menjadi ‘WPP’
4. Salin script dibawah ini untuk identifikasi Salinitas
var dataset =
ee.ImageCollection('HYCOM/sea_temp_salinity')
.filter(ee.Filter.date('2018-08-01',
'2018-08-15'))
.map(function(dataset){return
dataset.clip(WPP)});
var seaWaterSalinity = dataset.select('salinity_4');
var visParams = {
min: -20000.0,
max: 15000.0,
palette: ['000000', '005aff', '43c8c8', 'fff700',
'ff0000'],
};
Map.centerObject(WPP,4);
Map.addLayer(seaWaterSalinity, visParams, 'Sea Water
Salinity');
5. klik Run
6. Script diatas menggunakan citra HYCOM. Citra HYCOM dapat
merekam data temperatur perairan dan salinitas mulai dari
kedalaman 0 m - 5000 m. Anda dapat mengecek dataset HYCOM
seperti langkah pada sub bab 1.6.
7. Ubah salinity_4 pada var seaWaterSalinity =
dataset.select('salinity_4'); sesuai band yang dimiliki oleh
Hycom dan lihat hasilnya.
36
seftiawan.sr@ub.ac.id
37
seftiawan.sr@ub.ac.id
1. Buka tab Assets, unggah shp WPP 713, kemudian Impor dan beri
nama WPP_713. Anda juga dapat mengganti shp tersebut dengan
batas lainnya yang mencakup wilayah laut,
2. Dari “Search Places and Dataset …” cari ETOPO1, kemudian Impor,
ubah nama “Image” menjadi ETOPO1, kemudian tekan Enter,
3. Dari “Search Places and Dataset …” cari Landsat Collection 1 Tier 1 TOA
Reflectance, kemudian Impor, ubah nama “Image” menjadi L8,
kemudian tekan Enter
4. Salin script dibawah ini,
var L8filter = L8.filterDate("2015-04-01","2020-04-01")
.filterMetadata("CLOUD_COVER","less_than",10)
.mean();
Map.centerObject(WPP_713);
//masking batimetri
38
seftiawan.sr@ub.ac.id
//Chla
var Chla = L8selection.expression(
'(0.2818*((Merah/(NIR+SWIR))**3.497))',{
//'((2.41*(NIR/Merah))+0.187)',{
'NIR':L8selection.select('B5'),
'SWIR':L8selection.select('B6'),
'Merah':L8selection.select('B4'),
'Hijau':L8selection.select('B3'),
}
).rename('chlor_a');
//SPL1
var SPL1 = L8selection.expression(
'((BT10-273)+(2.946*((BT10-273)-(BT11-273)))-0.038)',{
'BT10':L8selection.select('B10'),
'BT11':L8selection.select('B11'),
}).rename('SPL');
//MPT
var MPT = L8selection.expression('8.1429**(23.704*B4)',{
'B4':L8selection.select('B4')
}).rename('MPT');
//harkat batimetri
var harkatbati = batimetri.expression(
39
seftiawan.sr@ub.ac.id
{'batimetri':batimetri.select('batimetri')}).rename('harka
tbati')
//harkat klorofil-a
var harkatklorofil = Chla.expression(
'chla<4?1'+ //klorofil <4 bobot 1
': chla>=4&&chla<=10?3'+ //klorofil 4-10 bobot 3
': chla>10?5'+ //klorofil >10 bobot 5
': 0',
{'chla':Chla.select('chlor_a')}
).rename('harkatklorofil')
40
seftiawan.sr@ub.ac.id
//pembobotan
var bobot =
harkatbati.multiply(3).add(harkatklorofil.multiply(1)).add
(harkatspl.multiply(2)).add(harkatmpt.multiply(3)).rename(
'bobot')
//bobot batimetri x3, klorofil x1, suhu x2, padatan
tersuspensi x3
41
seftiawan.sr@ub.ac.id
var simbol =
{"min":1,"max":4,"palette":["ff2a1f","ffbb23","e6ff1b","19
ff0a"]}
42
seftiawan.sr@ub.ac.id
43
seftiawan.sr@ub.ac.id
44
seftiawan.sr@ub.ac.id
45
seftiawan.sr@ub.ac.id
.filter(ee.Filter.listContains('transmitterReceiverPolaris
ation', 'VV'))
.filter(ee.Filter.eq('orbitProperties_pass',
'DESCENDING'))
.filterBounds(roi)
.select(['VV']);
print(collectionVV);
.filter(ee.Filter.listContains('transmitterReceiverPolaris
ation', 'VH'))
.filter(ee.Filter.eq('orbitProperties_pass',
'DESCENDING'))
.filterBounds(roi)
.select(['VH']);
print(collectionVH);
// Menuju ROI
Map.centerObject(roi, 13);
var VV = collectionVV.median();
46
seftiawan.sr@ub.ac.id
// Tampilkan citra VV
Map.addLayer(VV, {min: -20, max: -5}, 'VV');
// Tampilkan ke peta
Map.addLayer(VV1.addBands(VV2).addBands(VV3), {min: -12,
max: -7}, 'Season composite');
3. Klik Run
4. Contoh tampilan yang akan dihasilkan
47
seftiawan.sr@ub.ac.id
5. Terdapat titik - titik berwarna biru, hijau, merah diatas perairan, itu
adalah kapal yang terekam oleh Sentinel - 1A
6. Ubah tanggal perekaman sesuai keinginan kalian pada perintah
berikut var VV1 =
ee.Image(collectionVV.filterDate('2018-01-01',
'2018-04-30').median());
var VV2 = ee.Image(collectionVV.filterDate('2018-05-01',
'2018-08-31').median());
var VV3 = ee.Image(collectionVV.filterDate('2018-09-01',
'2018-12-31').median());
7. Amati kembali kapal yang terekam, apakah sama dengan tanggal
perekaman sebelumnya? Mengapa demikian?
8. Simpan script dan clear script untuk melanjutkan ke sub bab
berikutnya
48
seftiawan.sr@ub.ac.id
1. Unggah WPP 713 ke dalam Import dan beri nama dengan ‘batas’
2. Salin script dibawah ini:
var dataset =
ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI')
.filterDate('2020-01-01', '2020-05-30')
.map(function(dataset){return
dataset.clip(batas)});
var remoteSensingReflectance =
dataset.select(['Rrs_645', 'Rrs_555', 'Rrs_443']);
var remoteSensingReflectanceVis = {
min: 0.0,
max: 0.011,
};
Map.centerObject(batas, 4);
Map.addLayer(
remoteSensingReflectance,
remoteSensingReflectanceVis,
'Remote Sensing Reflectance');
3. Klik Run
4. Contoh hasil yang akan ditampilkan
49
seftiawan.sr@ub.ac.id
var visualization = {
bands: ['classification'],
min: 0.0,
max: 1.0,
palette: ['0000FF']
};
Map.centerObject(roi,4);
4. Klik Run,
5. Contoh hasil yang akan ditampilkan
50
seftiawan.sr@ub.ac.id
51
seftiawan.sr@ub.ac.id
2.12. Mangrove
4. Klik Run
5. Hasil yang akan ditampilkan seperti ini,
52
seftiawan.sr@ub.ac.id
53
seftiawan.sr@ub.ac.id
3. Klik Run
4. Akan muncul hasil seperti ini
54
seftiawan.sr@ub.ac.id
55
seftiawan.sr@ub.ac.id
https://github.com/CoralMapping/gee-mapping-source
https://sites.google.com/ugm.ac.id/gee-machine-learning/home
https://spatialmate.com/earth-engine-pemodelan-kesesuaian-lokasi-budida
ya-kerapu/
https://www.geospatialecology.com/
https://www.intertidal.app/home
56
seftiawan.sr@ub.ac.id
57