0% menganggap dokumen ini bermanfaat (0 suara)
0 tayangan20 halaman

GEE_Machine_Learning_tutorial

Dokumen ini membahas penggunaan Google Earth Engine dan pembelajaran mesin dalam analisis citra dan klasifikasi lahan. Terdapat berbagai contoh kode menggunakan JavaScript untuk memanipulasi citra, melakukan komputasi, dan menerapkan algoritma klasifikasi. Selain itu, dokumen ini juga mencakup teknik pemrosesan citra seperti penghitungan NDVI dan EVI, serta metode ekspor hasil analisis.
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
0 tayangan20 halaman

GEE_Machine_Learning_tutorial

Dokumen ini membahas penggunaan Google Earth Engine dan pembelajaran mesin dalam analisis citra dan klasifikasi lahan. Terdapat berbagai contoh kode menggunakan JavaScript untuk memanipulasi citra, melakukan komputasi, dan menerapkan algoritma klasifikasi. Selain itu, dokumen ini juga mencakup teknik pemrosesan citra seperti penghitungan NDVI dan EVI, serta metode ekspor hasil analisis.
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Google Earth Engine & Machine Learning

Nur M. Farda | farda@[Link] | [Link]


Laboratorium Sistem Informasi Geografis
Departemen Sains Informasi Geografi
Fakultas Geografi
Universitas Gadjah Mada

Repositori kode: [Link]

DAFTAR ISI

DAFTAR ISI​ 0

// 01 SINTAK JAVASCRIPT​ 1

// 02 HELLO IMAGES​ 2

// 03 KOMPUTASI CITRA​ 3

// 04 IMAGE COLLECTIONS​ 3

// 05 IMAGE DIFFERENCE​ 4

// 06 IMAGE EXPRESSION​ 5

// 07 IMAGE CLASSIFICATION - MACHINE LEARNING​ 6

// 08 EXPORTS​ 9

// 09 ACCURACY ASSESSMENT​ 11

// 10 LAYOUT​ 13

// 11 TIME SERIES​ 17

REFERENSI​ 19
// ====================
// 01 SINTAK JAVASCRIPT
// ====================

// Hal pertama yang dilakukan dalam bahasa pemrograman apa pun:


print('Hello, World!');

// Komentar baris dimulai dengan dua garis miring ke depan (forward slash).

/* Komentar multi-baris dimulai dengan garis miring ke depan dan bintang,


dan akhiri dengan bintang dan garis miring. */

// Variabel digunakan untuk menyimpan objek, dan didefinisikan menggunakan kata kunci var.
var the_answer = 50;

// Objek string dimulai dan diakhiri dengan satu kutipan.


var my_variable = 'Saya adalah sebuah string';

// Objek string juga dapat dimulai dan diakhiri dengan tanda kutip ganda.
// Tapi jangan dicampur.
var my_other_variable = "Saya juga string";

// Pernyataan harus diakhiri dengan titik koma, atau editor akan memberi peringatan.
var test = 'Saya merasa tidak lengkap...'

// Kurung digunakan untuk meneruskan parameter ke fungsi.


print('String ini akan dicetak di tab Konsol.');

// Kurung kotak digunakan untuk memilih item dalam daftar.


// Indeks nol mengacu pada item pertama dalam daftar.
var my_list = ['terong', 'apel', 'gandum'];
print(my_list[0]);

// Kurung keriting (atau kurung kurawal) dapat digunakan untuk mendefinisikan kamus (kunci:
pasangan nilai)
var my_dict = {'makanan': 'roti', 'warna': 'merah', 'angka': the_answer};
// Kurung kotak dapat digunakan untuk mengakses item kamus dengan kunci.
print(my_dict['warna']);
// Atau Anda dapat menggunakan notasi titik untuk mendapatkan hasil yang sama.
print(my_dict.warna);

// Fungsi dapat didefinisikan sebagai cara untuk menggunakan kembali kode dan membuatnya
lebih mudah dibaca

nmfarda - 1
var my_hello_function = function(string) {
return 'Hello ' + string + '!';
};
print(my_hello_function('world'));

// ================
// 02 HELLO IMAGES
// ================

// Cari 'dsm' (model permukaan digital) dan temukan:


var image = [Link]('JAXA/ALOS/AW3D30_V1_1');
// Alamat citra dsm:
// [Link]

// Lakukan import dan beri nama 'dsm'.


// Perhatikan bahwa menempelkan ID ke konstruktor dan
// mengimpor setara.

// Print adalah teman Anda!


// Jelajahi objek yang dicetak di konsol.
// Perhatikan beberapa band. Jelajahi deskripsi dataset.
print(dsm);

// Tampilkan. (Hello_images.)
[Link](dsm, '', 'dsm pertama'); // Bad! Tiga band pertama RGB.

// Zoom ke area yang diminati.


// Jelajahi inspector.
// Jelajahi layer control dan stretches.
// Hardcode beberapa parameter.
// Tambahkan nama layer.
[Link]([Link]('AVE'), {min: 0, max: 500}, 'dsm');

// Tambahkan warna. (Saya jelas bukan seorang kartografer.)


var elevPalette = ['black', 'blue', 'green', 'red', 'white'];
var elevParams = {min: 0, max: 500, palette: elevPalette};
[Link]([Link]('AVE'), elevParams, 'dsm palettized');

nmfarda - 2
// ===================
// 03 KOMPUTASI CITRA
// ===================

// Cari 'dsm' (model permukaan digital) dan temukan:


var dsm = [Link]('JAXA/ALOS/AW3D30_V1_1');

// Dapatkan ketinggian dalam pita saluran meter.


var elev = [Link]('AVE');

// Perhitungan ini ('junk') hanyalah contoh matematika dengan citra.


var junk = [Link](3);
[Link](junk, {min: 0, max: 500}, 'junk');

// Operasi relasional pada citra. Temukan semua tempat


// ketinggian lebih dari 500 meter. Citra biner.
var elevGt500 = [Link](500);
// Ini adalah trik yang berguna. Setel semua nol piksel menjadi 'no data' (masked).
elevGt500 = [Link](elevGt500);
[Link](elevGt500, {palette: ['yellow']}, 'elevGt500');

// Gunakan metode statis untuk perhitungan yang lebih kompleks.


var terrain = [Link](elev);
// Cetak untuk mengetahui band apa yang ada di sana.
print('terrain', terrain);
[Link](terrain, {bands: ['hillshade']}, 'hillshade');

// =====================
// 04 IMAGE COLLECTIONS
// =====================

var l8sr = [Link]("LANDSAT/LC08/C01/T1_SR"),


geometry = /* color: #98ff00 */[Link]([108.85, -7.68]);

// Pusat peta
[Link](108.85,-7.68, 12); // Segara Anakan, Cilacap
//[Link](108.7752969,-6.8054676,12); // Tawangsari, Cirebon

// Cari 'landsat 8 surface reflectance' dan impor data tier 1.


// Beri nama l8sr.
// Perhatikan bahwa Anda dapat menambahkannya ke peta:
[Link](l8sr, {bands: ['B4', 'B3', 'B2'], min: 0, max: 3000}, 'l8sr');

nmfarda - 3
// Ini secara implisit memanggil mosaic () untuk komposit bernilai baru.
// Jelajahi koleksi dengan inspector.

// Gambar satu titik pada ROI Anda dengan alat geometri.

// Dapatkan citra dengan lokasi titik.


var spatialFiltered = [Link](geometry);
// Ada berapa citra?
print('Number of images at the point', [Link]());
// Jika ada kurang dari 5000, Anda dapat mencetaknya.
print('spatialFiltered', spatialFiltered);

// Dapatkan tanggal citra yang difilter pada saat itu.


var dateFiltered = spatialFiltered
.filterDate('2018-01-01', '2018-12-31');
print('dateFiltered', dateFiltered);

// Urutkan berdasarkan properti yang menarik.


var sorted = [Link]('CLOUD_COVER');

// Periksa citra pertama (berawan paling sedikit).


print('least cloudy image:', [Link]());

// ====================
// 05 IMAGE DIFFERENCE
// ====================

// Pusat peta
[Link](108.85,-7.68, 12); // Segara Anakan, Cilacap
//[Link](108.7752969,-6.8054676,12); // Tawangsari, Cirebon

// Muat dua komposit Landsat 7 5-tahunan.


var landsat1999 = [Link]('LANDSAT/LE7_TOA_5YEAR/1999_2003');
var landsat2008 = [Link]('LANDSAT/LE7_TOA_5YEAR/2008_2012');

// Hitung NDVI dengan cara yang sulit.


var ndvi1999 = [Link]('B4').subtract([Link]('B3'))
.divide([Link]('B4').add([Link]('B3')));

// Hitung NDVI dengan cara mudah.


var ndvi2008 = [Link](['B4', 'B3']);

nmfarda - 4
[Link](ndvi1999, '','ndvi1999');
[Link](ndvi2008, '', 'ndvi2008');

// Hitung citra perbedaan multi-band.


var diff = [Link](landsat1999);
[Link](diff,
{bands: ['B4', 'B3', 'B2'], min: -32, max: 32},
'difference');

// Hitung perbedaan kuadrat di setiap band.


var squaredDifference = [Link](2);
[Link](squaredDifference,
{bands: ['B4', 'B3', 'B2'], max: 1000},
'squared diff.');

// ====================
// 06 IMAGE EXPRESSION
// ====================

// Muat citra Landsat 8 dari hasil '04_Image_Collection".


var image = [Link]('LANDSAT/LC08/C01/T1_TOA/LC08_121065_20180816');

// Hitung EVI menggunakan ekspresi.


var evi = [Link](
'2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {
'NIR': [Link]('B5'),
'RED': [Link]('B4'),
'BLUE': [Link]('B2')
});

// Hitung NDVI menggunakan ekspresi.


var ndvi = [Link](
'((NIR - RED) / (NIR + RED))', {
'NIR': [Link]('B5'),
'RED': [Link]('B4')
});

[Link](image, 9);
[Link](evi, {min: -1, max: 1, palette: ['FF0000', '00FF00']}, 'evi');
[Link](ndvi, {min: -1, max: 1, palette: ['FF0000', '00FF00']}, 'ndvi');

nmfarda - 5
// ==========================================
// 07 IMAGE CLASSIFICATION - MACHINE LEARNING
// ==========================================

// SUPERVISED CLASSIFICATION - Geometry Imports


// Buat sampel kelas 'urban', 'vegetation', dan 'water' dalam point
// Buat region dalam polygon sebagai batas wilayah yang akan diekspor

// Muat Landsat 8 Surface Reflectance (SR) data


var l8sr = [Link]('LANDSAT/LC08/C01/T1_SR');

// Fungsi untuk cloud mask dari band Fmask data Landsat 8 SR.
function maskL8sr(image) {
// Bit 3 dan 5 masing-masing adalah cloud shadow dan cloud.
var cloudShadowBitMask = [Link](2).pow(3).int();
var cloudsBitMask = [Link](2).pow(5).int();

// Dapatkan band pixel QA (Quality Assessment)


// Landsat 8 SR mempunyai sr_aerosol band, pixel_qa band, dan radsat_qa band
var qa = [Link]('pixel_qa');

// Kedua 'flag' harus diatur ke 'nol', yang menunjukkan kondisi yang jelas (bebas awan dan
bayangan awan).
var mask = [Link](cloudShadowBitMask).eq(0)
.and([Link](cloudsBitMask).eq(0));

// Kembalikan nilai citra yang di-mask, diskalakan ke [0, 1].


return [Link](mask).divide(10000);
}

// Memetakan fungsi lebih dari satu tahun data dan mengambil median.
var image = [Link]('2016-01-01', '2016-12-31')
.map(maskL8sr)
.median();

// Tampilkan hasil image median


[Link](image, {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'Image');

// Menggabungkan kelas-kelas sampel penutup lahan menjadi satu feature class.


var newfc = [Link](vegetation).merge(water);
// Print(newfc); // new feature class
[Link](newfc,11);

nmfarda - 6
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];

// Membuat variabel untuk menyimpan training


var training = [Link](bands).sampleRegions({
collection: newfc,
properties: ['landcover'],
scale: 30
});
// Print(training)

// CLASSIFIERS:
var classifier = [Link]().train({
features: training,
classProperty: 'landcover',
inputProperties: bands
});
print([Link]());

var classified = [Link](bands).classify(classifier);


[Link](classified, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'CART');

var classifier1 = [Link](10).train({


features: training,
classProperty: 'landcover',
inputProperties: bands,
});

var classifier2 = [Link]().train({


features: training,
classProperty: 'landcover',
inputProperties: bands,
});

var classifier3 = [Link]().train({


features: training,
classProperty: 'landcover',
inputProperties: bands,
});

var classifier4 = [Link]().train({


features: training,
classProperty: 'landcover',
inputProperties: bands,

nmfarda - 7
});

var classified1 = [Link](classifier1);


var classified2 = [Link](classifier2);
var classified3 = [Link](classifier3);
var classified4 = [Link](classifier4);

[Link](classified4, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'SVM');


[Link](classified3, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'GMO Maximum
Entropy');
[Link](classified2, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'Naive Bayes');
[Link](classified1, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'Random Forest');

var mode = [Link](classified2).addBands(classified3)


.reduce([Link]());
[Link](mode, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'Mode');

// Hasil CHART:
var options = {
lineWidth: 1,
pointSize: 2,
hAxis: {title: 'Classes'},
vAxis: {title: 'Area m^2'},
title: 'Area by class',
series: {
0: { color: 'red'},
1: { color: 'green'},
2: { color: 'blue'}
}
};

var areaChart = [Link]({


image: [Link]().addBands(classified),
classBand: 'classification',
region: region,
scale: 30,
reducer: [Link]()
}).setOptions(options)
.setSeriesNames(['urban', 'vegetation', 'water']);
print(areaChart);

=============

nmfarda - 8
// 08 EXPORTS
=============

// SUPERVISED CLASSIFICATION - Geometry Imports


// Buat sampel kelas 'urban', 'vegetation', dan 'water' dalam point
// Buat region dalam polygon

// Muat Landsat 8 surface reflectance data


var l8sr = [Link]('LANDSAT/LC08/C01/T1_SR');

// Fungsi untuk cloud mask dari band Fmask data Landsat 8 SR.
function maskL8sr(image) {
// Bit 3 dan 5 masing-masing adalah cloud shadow dan cloud.
var cloudShadowBitMask = [Link](2).pow(3).int();
var cloudsBitMask = [Link](2).pow(5).int();

// Dapatkan band pixel QA.


var qa = [Link]('pixel_qa');

// Kedua 'flag' harus diatur ke 'nol', yang menunjukkan kondisi yang jelas.
var mask = [Link](cloudShadowBitMask).eq(0)
.and([Link](cloudsBitMask).eq(0));

// Kembalikan nilai citra yang di-mask, diskalakan ke [0, 1].


return [Link](mask).divide(10000);
}

// Memetakan fungsi lebih dari satu tahun data dan mengambil median.
var image = [Link]('2016-01-01', '2016-12-31')
.map(maskL8sr)
.median();

// Tampilkan hasilnya.
[Link](image, {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'image');

var newfc = [Link](vegetation).merge(water);


//print(newfc);
//[Link](newfc,11);
[Link](region, 11);

var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];

var training = [Link](bands).sampleRegions({

nmfarda - 9
collection: newfc,
properties: ['landcover'],
scale: 30
});
// Print(training)

var classifier = [Link]().train({


features: training,
classProperty: 'landcover',
inputProperties: bands
});
print([Link]());

var classified = [Link](bands).classify(classifier);


//[Link](classified, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'CART');

// Clip dengan region


var clipimage = [Link](region);
print(clipimage);

[Link](clipimage, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'clipcart');

// RASTER TO VECTOR
// Convert clipimage to vectors.
var vectors = [Link](classified).reduceToVectors({
geometry: region,
crs: [Link](),
scale: 30,
geometryType: 'polygon',
eightConnected: true,
labelProperty: 'zone',
reducer: [Link]()
});

// EXPORT to SHP
// Make a display image for the vectors, add it to the map.
var display = [Link](0).updateMask(0).paint(vectors, 'black', 1);
[Link](display, {palette: 'black'}, 'vectors');

// Export the FeatureCollection to a SHP file.


[Link]({
collection: vectors,

nmfarda - 10
description:'L8_landcover',
fileFormat: 'SHP'
});

==========================
// 09 ACCURACY ASSESSMENT
==========================

// SUPERVISED CLASSIFICATION - Geometry Imports


// Buat sampel kelas 'urban', 'vegetation', dan 'water' dalam point
// Buat region dalam polygon

// Muat Landsat 8 surface reflectance data


var l8sr = [Link]('LANDSAT/LC08/C01/T1_SR');

// Fungsi untuk cloud mask dari band Fmask data Landsat 8 SR.
function maskL8sr(image) {
// Bit 3 dan 5 masing-masing adalah cloud shadow dan cloud.
var cloudShadowBitMask = [Link](2).pow(3).int();
var cloudsBitMask = [Link](2).pow(5).int();

// Dapatkan band pixel QA.


var qa = [Link]('pixel_qa');

// Kedua 'flag' harus diatur ke 'nol', yang menunjukkan kondisi yang jelas.
var mask = [Link](cloudShadowBitMask).eq(0)
.and([Link](cloudsBitMask).eq(0));

// Kembalikan nilai citra yang di-mask, diskalakan ke [0, 1].


return [Link](mask).divide(10000);
}

// Memetakan fungsi lebih dari satu tahun data dan mengambil median.
var image = [Link]('2016-01-01', '2016-12-31')
.map(maskL8sr)
.median();

// Tampilkan hasil image median.


[Link](image, {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'image');

// Membuat feature class untuk training


var newfc = [Link](vegetation).merge(water);

nmfarda - 11
//print(newfc); // new feature class
//[Link](newfc,11);
[Link](region, 11);

// Membuat feature class untuk test/validasi


var newfc_validation = urban_validation.merge(vegetation_validation).merge(water_validation);

var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];

var sample = [Link](bands).sampleRegions({


collection: newfc,
properties: ['landcover'],
scale: 30
});
// Print(sample)

var sample_validation = [Link](bands).sampleRegions({


collection: newfc_validation,
properties: ['landcover'],
scale: 30
});
// Print(sample_validation)

// Membagi sampel untuk training 80% dan validation 20%


sample = [Link]({ seed: 1 });
var training = [Link]([Link]('random', 0.8)); // 80%
var validation = [Link]([Link]('random', 0.8)); // 20%

var classifier = [Link]().train({ // coba ganti dengan libsvm, gmoMaxEnt


features: training,
classProperty: 'landcover',
inputProperties: bands
});
print([Link]());

var classified = [Link](bands).classify(classifier);


[Link](classified, {min: 0, max: 2, palette: ['red', 'green', 'blue']}, 'CART');

var trainAccuracy = [Link]().accuracy();


print('trainAccuracy', trainAccuracy); // 1.0

var testAccuracy = validation


.classify(classifier)

nmfarda - 12
.errorMatrix('landcover', 'classification')
.accuracy();
print('testAccuracy', testAccuracy); // 1.0

var testAccuracy2 = sample_validation // Menggunakan sample baru di luar sample training


.classify(classifier)
.errorMatrix('landcover', 'classification')
.accuracy();
print('testAccuracy2', testAccuracy2); // 1.0

// Hasil CHART:
var options = {
lineWidth: 1,
pointSize: 2,
hAxis: {title: 'Classes'},
vAxis: {title: 'Area m^2'},
title: 'Area by class',
series: {
0: { color: 'red'},
1: { color: 'green'},
2: { color: 'blue'}
}
};

var areaChart = [Link]({


image: [Link]().addBands(classified),
classBand: 'classification',
region: region,
scale: 30,
reducer: [Link]()
}).setOptions(options)
.setSeriesNames(['urban', 'vegetation', 'water']);
print(areaChart);

=============
// 10 LAYOUT
=============

// SUPERVISED CLASSIFICATION - Geometry Imports


// Buat sampel kelas 'urban', 'vegetation', dan 'water' dalam point
// Buat region dalam polygon

nmfarda - 13
// Muat Landsat 8 surface reflectance data
var l8sr = [Link]('LANDSAT/LC08/C01/T1_SR');

// Fungsi untuk cloud mask dari band Fmask data Landsat 8 SR.
function maskL8sr(image) {
// Bit 3 dan 5 masing-masing adalah cloud shadow dan cloud.
var cloudShadowBitMask = [Link](2).pow(3).int();
var cloudsBitMask = [Link](2).pow(5).int();

// Dapatkan band pixel QA.


var qa = [Link]('pixel_qa');

// Kedua 'flag' harus diatur ke 'nol', yang menunjukkan kondisi yang jelas.
var mask = [Link](cloudShadowBitMask).eq(0)
.and([Link](cloudsBitMask).eq(0));

// Kembalikan nilai citra yang di-mask, diskalakan ke [0, 1].


return [Link](mask).divide(10000);
}

// Memetakan fungsi lebih dari satu tahun data dan mengambil median.
var image = [Link]('2016-01-01', '2016-12-31')
.map(maskL8sr)
.median();

// Tampilkan hasilnya.
[Link](image, {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'image');

var newfc = [Link](vegetation).merge(water);


//print(newfc); // new feature class
//[Link](newfc,11);
[Link](region, 11);

var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];

var sample = [Link](bands).sampleRegions({


collection: newfc,
properties: ['landcover'],
scale: 30
});
// Print(sample)

// Membagi sampel untuk training 80% dan validation 20%

nmfarda - 14
sample = [Link]({ seed: 1 });
var training = [Link]([Link]('random', 0.8)); // 80%
var validation = [Link]([Link]('random', 0.8)); // 20%

var classifier = [Link]().train({ // coba ganti dengan libsvm, gmoMaxEnt


features: training,
classProperty: 'landcover',
inputProperties: bands
});
print([Link]());

var classified = [Link](bands).classify(classifier);

var landcoverVis = {
min: 0.0,
max: 2.0,
palette: ['FF0000', '00FF00', '0000FF'],
};

[Link](classified, landcoverVis, 'CART');

// Hasil CHART:
var options = {
lineWidth: 1,
pointSize: 2,
hAxis: {title: 'Classes'},
vAxis: {title: 'Area m^2'},
title: 'Area by class',
series: {
0: { color: 'FF0000'},
1: { color: '00FF00'},
2: { color: '0000FF'}
}
};

var areaChart = [Link]({


image: [Link]().addBands(classified),
classBand: 'classification',
region: region,
scale: 30,
reducer: [Link]()
}).setOptions(options)
.setSeriesNames(['urban', 'vegetation', 'water']);

nmfarda - 15
print(areaChart);

// Tetapkan ukuran dan letak legenda


var legend = [Link]({
style: {
position: 'bottom-left',
padding: '8px 15px'
}
});

// Membuat judul
var legendTitle = [Link]({
value: 'Legend:',
style: {
fontWeight: 'bold',
fontSize: '18px',
margin: '0 0 4px 0',
padding: '0'
}
});

// Menampilkan judul ke panel


[Link](legendTitle);

// Membuat style
var makeRow = function(color, name) {

// Mewarnai kotak simbol


var colorBox = [Link]({
style: {
backgroundColor: '#' + color,
// Gunakan padding untuk memberi ukuran panjang dan lebar kotak simbol.
padding: '8px',
margin: '0 0 4px 0'
}
});

// Membuat label
var description = [Link]({
value: name,
style: {margin: '0 0 4px 6px'}
});

nmfarda - 16
// Mengembalikan panel
return [Link]({
widgets: [colorBox, description],
layout: [Link]('horizontal')
});
};

// Memberi warna
var palette =['FF0000', '00FF00', '0000FF'];

// Menamai legenda
var names = ['Urban','Vegetation','Water'];

// Menambahkan warna dan nama


for (var i = 0; i < 3; i++) {
[Link](makeRow(palette[i], names[i]));
}

// Menambahkan legenda ke peta atau dapat juga di-print pada console


[Link](legend);

================
// 11 TIME SERIES
================

// Buat polygon (geometry) sebagai batas untuk analisis time series.


// Buat koleksi citra S-2 (Sentinel 2) untuk periode 2016-2019.
var S2 = [Link]('COPERNICUS/S2')

// filter tanggal mulai dan berakhir


.filterDate('2016-01-01', '2019-01-01')

// filter sesuai batas yang ditentukan


.filterBounds(geometry);

// Function untuk mask cloud dari built-in informasi kualitas saluran


// dari tutupan awan
var maskcloud1 = function(image) {
var QA60 = [Link](['QA60']);
return [Link]([Link](1));
};

nmfarda - 17
// Fungsi untuk menghitung dan menambahkan saluran NDVI
var addNDVI = function(image) {
return [Link]([Link](['B8', 'B4']));
};

// Menambahkan saluran NDVI ke koleksi citra


var S2 = [Link](addNDVI);
// Ekstrak saluarn NDVI dan membuat citra komposit median NDVI
var NDVI = [Link](['nd']);
var NDVImed = [Link](); //Hanya mengubah nama variabel ini ;)

// Membuat palettes untuk menampilkan NDVI


var ndvi_pal = ['#d73027', '#f46d43', '#fdae61', '#fee08b', '#d9ef8b',
'#a6d96a'];

// Membuat time series chart.


var plotNDVI = [Link](S2, geometry,[Link](),
'nd',500,'system:time_start', 'system:index')
.setChartType('LineChart').setOptions({
title: 'NDVI short-term time series',
hAxis: {title: 'Date'},
vAxis: {title: 'NDVI'}
});

// Display.
print(plotNDVI);

// Display hasil NDVI ke peta


[Link](geometry, 12);
[Link]([Link](geometry), {min:-0.5, max:0.9, palette: ndvi_pal}, 'NDVI');

// Parameter visualisasi.
var args = {
crs: 'EPSG:3857', // Maps Mercator
dimensions: '300',
region: geometry,
min: -1,
max: 1,
palette: ndvi_pal,
framesPerSecond: 4,
};

// Buat thumbnail video dan tambahkan ke peta.

nmfarda - 18
var thumb = [Link]({
// Menentukan koleksi "image", membuat animasi urutan "images".
image: NDVI,
params: args,
style: {
position: 'bottom-right',
width: '320px'
}});
[Link](thumb);

REFERENSI

[Link]
[Link]
[Link]
[Link]

nmfarda - 19

Anda mungkin juga menyukai