You are on page 1of 21

Affina Dyan Setyawati

21/489570/PTK/14292

LAPORAN
PRAKTIKUM
Sistem Penginderaan Jauh

Magister Teknik Geomatika, Departemen Teknik Geodesi


Fakultas Teknik, Universitas Gadjah Mada
LAPORAN PRAKTIKUM MINGGU KETUJUH

A. Mata Acara Praktikum


Melakukan perhitungan NDVI, klasifikasi terbimbing, dan klasifikasi tidak
terbimbing menggunakan Google Earth Engine

B. Tujuan
Dapat melakukan analisis meliputi:

a) The Earth Engine API - NDVI, Mapping a Function over a Collection, Quality
Mosaicking
b) Machine Learning – Supervised Classification Algorithms
- SVM
- RandomForest
c) Machine Learning – Unsupervised Classification Algorithms
- K-Means

C. Waktu dan Tempat Pelaksanaan


Hari, tanggal : Kamis, 29 September 2022

Waktu : 13.00 - 15.30 WIB

Tempat : Departemen Teknik Geodesi FT UGM

D. Alat dan Bahan


Alat
Seperangkat laptop untuk mengolah data dan menyusun laporan
Microsoft Word 2016 untuk menyusun laporan
Google Earth Engine (GEE) untuk mengolah data dan melakukan analisis
Bahan
Katalog data yang ada di Google Earth Engine untuk wilayah Provinsi Padang

E. Langkah Kerja
1) The Earth Engine API - NDVI, Mapping a Function over a Collection, Quality
Mosaicking – Melakukan perhitungan dan visualisasi NDVI
1. Meng-import citra yang akan digunakan untuk perhitungan NDVI, yaitu
Landsat 8 TOA di Kota Padang
Pada tahap ini didefinisikan lokasi yang akan dijadikan area studi, bisa
menggunakan bantuan marker untuk memperoleh koordinat titik.
Titik ini akan digunakan oleh GEE untuk mencari koleksi citra yang ada
pada area tersebut. Selain pendefinisian lokasi/location bounds,
perlu diatur juga waktu perekaman datanya/time bounds. Waktu
perekaman dipakai yang terbaru, yaitu dari tahun 2021 ke atas.

// Define a point of interest. Use the UI Drawing Tools to import a point


// geometry and name it "point" or set the point coordinates with the
// ee.Geometry.Point() function as demonstrated here.
var point = ee.Geometry.Point([101.32861748336482,-1.2286995256309934]);

// Import the Landsat 8 TOA image collection.


var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA');

// Get the least cloudy image in 2021.


var image = ee.Image(
l8.filterBounds(point)
.filterDate('2021-01-01', '2021-12-31')
.sort('CLOUD_COVER').first()
);
2. Melakukan perhitungan nilai Normalized Difference Vegetation Index
(NDVI) dari citra LANDSAT 8 TOA
Vegetasi memantulkan cahaya pada band near-infrared (NIR) – band 5
dari spektrum elektromagnetik dan menyerap cahaya pada band
red/merah – band 4. Kedua band inilah yang digunakan dalam
perhitungan indeks NDVI berdasarkan fungsi di bawah ini.

Nilai minimum pada parameter pasti -1 dan maksimum +1.

// Compute the Normalized Difference Vegetation Indeks (NDVI).


Var nir = image.select(‘B5’);
var red = image.select(‘B4’);
var ndvi = nir.subtract(red).divide(nir.add(red)).rename(‘NDVI’);

// Display the result.


Map.centerObject(image, 9);
var ndviParams = {min: -1, max: 1, palette: [‘blue’, ‘white’, ‘green’]};
Map.addLayer(ndvi, ndviParams, ‘NDVI image’);
2) Machine Learning – Supervised Classification Algorithms (SVM dan
RandomForest)
1. Support Vector Machine (SVM)
a) Mendefinisikan var qaMask dan var saturationMask yang
menskalakan dan melakukan masking reflektan pada permukaan
citra

// Define a function that scales and masks Landsat 8 surface reflectance


images.
function prepSrL8(image) {
// Develop masks for unwanted pixels (fill, cloud, cloud shadow).
var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
var saturationMask = image.select('QA_RADSAT').eq(0);

// Apply the scaling factors to the appropriate bands.


var getFactorImg = function(factorNames) {
var factorList = image.toDictionary().select(factorNames).values();
return ee.Image.constant(factorList);
};
var scaleImg = getFactorImg(
'REFLECTANCE_MULT_BAND_.|TEMPERATURE_MULT_BAND_ST_B10']);
var offsetImg = getFactorImg([
'REFLECTANCE_ADD_BAND_.|TEMPERATURE_ADD_BAND_ST_B10']);
var scaled = image.select('SR_B.|ST_B10').multiply(scaleImg).add(offsetImg);
// Replace original bands with scaled bands and apply masks.
return image.addBands(scaled, null, true)
.updateMask(qaMask).updateMask(saturationMask);
}
b) Mendefinisikan var image dan var bands untuk memanggil citra
dengan bounds waktu tertentu dan mendefinisikan band yang
digunakan

// Make a cloud-free Landsat 8 surface reflectance composite.


var image = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2021-01-01', '2022-12-31')
.map(prepSrL8)
.median();

// Use these bands for prediction.


var bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5',
'SR_B6', 'SR_B7'];
c) Membuat poligon sebagai training area dengan var urban, var
forest, dan var water

d) Membuat feature collection dari hasil pembuatan training area


menggunakan var polygons

// Make a FeatureCollection from the hand-made geometries.


var polygons = ee.FeatureCollection([
ee.Feature(urban1, {'class': 0}),
ee.Feature(urban2, {'class': 0}),
ee.Feature(urban3, {'class': 0}),
ee.Feature(forest1, {'class': 1}),
ee.Feature(forest2, {'class': 1}),
ee.Feature(forest3, {'class': 1}),
ee.Feature(water1, {'class': 2}),
ee.Feature(water2, {'class': 2}),
ee.Feature(water3, {'class': 2}),
]);
e) Memperoleh nilai untuk setiap pixel yang dimuat oleh poligon dan
membuat classifier SVM dengan parameter yang di-custom, lalu
mencobanya, dan mulai mengklasifikasi citra

// Get the values for all pixels in each polygon in the training.
var training = image.sampleRegions({
// Get the sample from the polygons FeatureCollection.
collection: polygons,
// Keep this list of properties from the polygons.
properties: ['class'],
// Set the scale to get Landsat pixels in the polygons.
scale: 30
});

// Create an SVM classifier with custom parameters.


var classifier = ee.Classifier.libsvm({
kernelType: 'RBF',
gamma: 0.5,
cost: 10
});

// Train the classifier.


var trained = classifier.train(training, 'class', bands);

// Classify the image.


var classified = image.classify(trained);
Dalam script tersebut var training merupakan sampleRegions
berupa polygons dengan properties ‘class’, yang mana terdapat 3
kelas dalam praktikum ini sehingga ada class 0, 1, dan 2 yang
masing-masing didefinisikan menjadi urban, forest, dan water.
Adapun scale adalah ukuran dari pixel citra. Classifier
menggunakan kernel, yang mana ini akan berpengaruh pada
hyperplan yang terbentuk untuk melakukan proses klasifikasi,
digunakan RBF (radial basis function). Var trained merupakan hasil
training, sedangkan var classified merupakan hasil prediksi
berdasarkan data training.
f) Menampilkan hasil klasifikasi dan citra masukan

// Display the classification result and the input image.


Map.setCenter(101.32861748336482, -1.2286995256309934, 9);
Map.addLayer(image,
{bands: ['SR_B4', 'SR_B3', 'SR_B2'], min: 0, max: 0.25},
'image');
Map.addLayer(polygons, {color: 'yellow'}, 'training polygons');
Map.addLayer(classified,
{min: 0, max:2, palette: ['red', 'green']},
'tutupanlahan');
2. RandomForest
Script baru – tidak bisa menggunakan ata tahun 2021 karena citra
MODIS hanya tersedia hingga 1 Januari 2020
a) Mendefinisikan area studi
BBox merupakan bounding box yang didefinisikan dengan dua
bauh titik, yaitu kiri bawah dan kanan atas.
// Define a region of interest.
var roi = ee.Geometry.BBox(100.26, -1.22, 100.90, -0.73);
b) Menggunakan citra yang bebas dari awan
// Define a function that scales and masks Landsat 8 surface
reflectance images.
function prepSrL8(image) {
// Develop masks for unwanted pixels (fill, cloud, cloud shadow).
var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111',
2)).eq(0);
var saturationMask = image.select('QA_RADSAT').eq(0);

// Apply the scaling factors to the appropriate bands.


var getFactorImg = function(factorNames) {
var factorList = image.toDictionary().select(factorNames).values();
return ee.Image.constant(factorList);
};
var scaleImg = getFactorImg([

'REFLECTANCE_MULT_BAND_.|TEMPERATURE_MULT_BAND_ST_B10']);
var offsetImg = getFactorImg([
'REFLECTANCE_ADD_BAND_.|TEMPERATURE_ADD_BAND_ST_B10']);
var scaled =
image.select('SR_B.|ST_B10').multiply(scaleImg).add(offsetImg);

// Replace original bands with scaled bands and apply masks.


return image.addBands(scaled, null, true)
.updateMask(qaMask).updateMask(saturationMask);
}

// Make a cloud-free Landsat 8 surface reflectance composite.


var input = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(roi)
.filterDate('2020-03-01', '2020-07-01')
.map(prepSrL8)
.median()
.setDefaultProjection('EPSG:4326', null, 30)
.select(['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']);
c) Menggunakan tutupan lahan dari MODIS
// Use MODIS land cover, IGBP classification, for training.
var modis = ee.Image('MODIS/006/MCD12Q1/2020_01_01')
.select('LC_Type1');
// Sample the input imagery to get a FeatureCollection of training
data.
var training = input.addBands(modis).sample({
region: roi,
numPixels: 5000,
seed: 0
});
d) Membuat classifier RandomForest dan melakukan klasifikasi
// Make a Random Forest classifier and train it.
var classifier = ee.Classifier.smileRandomForest(10)
.train({
features: training,
classProperty: 'LC_Type1',
inputProperties: ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']
});

// Classify the input imagery.


var classified = input.classify(classifier);

// Get a confusion matrix representing resubstitution accuracy.


var trainAccuracy = classifier.confusionMatrix();
print('Resubstitution error matrix: ', trainAccuracy);
print('Training overall accuracy: ', trainAccuracy.accuracy());

// Sample the input with a different random seed to get validation


data.
var validation = input.addBands(modis).sample({
region: roi,
numPixels: 5000,
seed: 1
// Filter the result to get rid of any null pixels.
}).filter(ee.Filter.notNull(input.bandNames()));

// Classify the validation data.


var validated = validation.classify(classifier);
e) Memperoleh hasil pengujian akurasi dalam bentuk matriks konfusi
// Get a confusion matrix representing expected accuracy.
var testAccuracy = validated.errorMatrix('LC_Type1', 'classification');
print('Validation error matrix: ', testAccuracy);
print('Validation overall accuracy: ', testAccuracy.accuracy());
f) Mendefinisikan palet IGBP
// Define a palette for the IGBP classification.
var igbpPalette = [
'aec3d4', // water
'152106', '225129', '369b47', '30eb5b', '387242', // forest
'6a2325', 'c3aa69', 'b76031', 'd9903d', '91af40', // shrub, grass
'111149', // wetlands
'cdb33b', // croplands
'cc0013', // urban
'33280d', // crop mosaic
'd7cdcc', // snow and ice
'f7e084', // barren
'6f6f6f' // tundra
];
g) Menampilkan masukan dan hasil klasifikasi
// Display the input and the classification.
Map.centerObject(roi, 10);
Map.addLayer(input.clip(roi),
{bands: ['SR_B4', 'SR_B3', 'SR_B2'], min: 0, max: 0.25},
'landsat');
Map.addLayer(classified.clip(roi),
{palette: igbpPalette, min: 0, max: 17},
'classification');

3) Machine Learning – Unsupervised Classification Algorithms (K-Means)


Terbimbing membutuhkan training sample, mendefinisikan kelas. GEE
akan mengkelaskan sesuai dengan kelas yang diatur oleh pengguna.
Pengguna yang menentukan sendiri berapa kelas yang akan digunakan.
Tidak terbimbing hanya memasukkan citra, sistem yang akan
mengkelaskan sesuai permintaan pengguna. SVM dan RF. Hanya
disediakan K-Means. Ada perubahan script, 2021 lebih sederhana
daripada yang disediakan sekarang. Modifikasi tanggal, citra, yang
ditekankan hasil dan pembahasan:v bedanya beberapa parameter saja,
lebih ke analisis dan pembahasannya, berdasarkan visualisasi yang
dihasilkan. Kelas urban – merah & kelas forest – hijau. Tidak serta merta
copas:v menambah kelas menjadi 3, water/perairan, supaya tidak ikut
salah klasifikasinya nanti. Modifikasi script menjadi 3 kelas. Kalau
unsupervised tidak ada perubahan.
F. Hasil & Pembahasan
1) The Earth Engine API - NDVI, Mapping a Function over a Collection, Quality
Mosaicking – Melakukan perhitungan dan visualisasi NDVI

Script yang digunakan


// Define a point of interest. Use the UI Drawing Tools to import a point
// geometry and name it "point" or set the point coordinates with the
// ee.Geometry.Point() function as demonstrated here.
var point = ee.Geometry.Point([101.32861748336482,-1.2286995256309934]);

// Import the Landsat 8 TOA image collection.


var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA');

// Get the least cloudy image in 2021.


var image = ee.Image(
l8.filterBounds(point)
.filterDate('2021-01-01', '2022-12-31')
.sort('CLOUD_COVER').first()
);
// Compute the Normalized Difference Vegetation Index (NDVI).
var nir = image.select('B5');
var red = image.select('B4');
var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI');

// Display the result.


Map.centerObject(image, 9);
var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']};
Map.addLayer(ndvi, ndviParams, 'NDVI image');
Hasil running script

Pembahasan: Pemilihan lokasi diutamakan pada wilayah yang masih


memiliki banyak vegetasi hijau seperti di Pulau Sumatera atau Pulau
Kalimantan. Pada praktikum kali ini digunakan wilayah Kota Padang.
Vegetasi memantulkan cahaya pada band near-infrared (NIR) – band 5
dari spektrum elektromagnetik dan menyerap cahaya pada band
red/merah – band 4. Kedua band inilah yang digunakan dalam
perhitungan indeks NDVI berdasarkan fungsi di bawah ini.
Pada hasil di atas warna biru menunjukkan visualisasi untuk fitur non
vegetasi, seperti perairan atau objek-objek lain selain vegetasi. Jika
terdapat warna putih yang bercampur dengan hijau, maka wilayah itu
merupakan area peralihan antara vegetasi yang kurang sehat hingga
vegetasi sehat. Warna hijau yang tidak pekat mengindikasikan bahwa
vegetasi tidak terlalu sehat.

2) Machine Learning – Supervised Classification Algorithms (SVM dan


RandomForest)
1. SVM

Script yang digunakan


// Define a function that scales and masks Landsat 8 surface reflectance images.
function prepSrL8(image) {
// Develop masks for unwanted pixels (fill, cloud, cloud shadow).
var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
var saturationMask = image.select('QA_RADSAT').eq(0);

// Apply the scaling factors to the appropriate bands.


var getFactorImg = function(factorNames) {
var factorList = image.toDictionary().select(factorNames).values();
return ee.Image.constant(factorList);
};
var scaleImg = getFactorImg([
'REFLECTANCE_MULT_BAND_.|TEMPERATURE_MULT_BAND_ST_B10']);
var offsetImg = getFactorImg([
'REFLECTANCE_ADD_BAND_.|TEMPERATURE_ADD_BAND_ST_B10']);
var scaled = image.select('SR_B.|ST_B10').multiply(scaleImg).add(offsetImg);

// Replace original bands with scaled bands and apply masks.


return image.addBands(scaled, null, true)
.updateMask(qaMask).updateMask(saturationMask);
}

// Make a cloud-free Landsat 8 surface reflectance composite.


var image = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2021-01-01', '2022-12-31')
.map(prepSrL8)
.median();

// Use these bands for prediction.


var bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5',
'SR_B6', 'SR_B7'];

// Make a FeatureCollection from the hand-made geometries.


var polygons = ee.FeatureCollection([
ee.Feature(urban1, {'class': 0}),
ee.Feature(urban2, {'class': 0}),
ee.Feature(urban3, {'class': 0}),
ee.Feature(forest1, {'class': 1}),
ee.Feature(forest2, {'class': 1}),
ee.Feature(forest3, {'class': 1}),
ee.Feature(water1, {'class': 2}),
ee.Feature(water2, {'class': 2}),
ee.Feature(water3, {'class': 2}),
]);

// Get the values for all pixels in each polygon in the training.
var training = image.sampleRegions({
// Get the sample from the polygons FeatureCollection.
collection: polygons,
// Keep this list of properties from the polygons.
properties: ['class'],
// Set the scale to get Landsat pixels in the polygons.
scale: 30
});

// Create an SVM classifier with custom parameters.


var classifier = ee.Classifier.libsvm({
kernelType: 'RBF',
gamma: 0.5,
cost: 10
});

// Train the classifier.


var trained = classifier.train(training, 'class', bands);

// Classify the image.


var classified = image.classify(trained);

// Display the classification result and the input image.


Map.setCenter(101.32861748336482, -1.2286995256309934, 9);
Map.addLayer(image,
{bands: ['SR_B4', 'SR_B3', 'SR_B2'], min: 0, max: 0.25},
'image');
Map.addLayer(polygons, {color: 'yellow'}, 'training polygons');
Map.addLayer(classified,
{min: 0, max:2, palette: ['red', 'green']},
'tutupanlahan');
Hasil running script
Merah: urban; Cokelat: forest; Hijau: water
Pembahasan: Pada awalnya saya mengalami error yang mana hanya
diperoleh satu kelas saja, semua berwarna hijau. Setelah itu, saya lakukan
pemilihan training area kembali dan klasifikasi kembali sehingga
menghasilkan hasil di atas. Sebelumnya juga nilai max belum diubah
menjadi 2 karena default dari GEE hanya untuk klasifikasi 2 kelas saja.
Maka dari itu, nilai max diubah dari yang awalnya 1 menjadi 2 untuk
memuat kelas 0 (urban), 1 (forest), dan 2 (water). Tantangan pada metode
SVM memang pada penambahan kelas klasifikasi agar fitur dapat
terklasifikasi dengan benar. Hal ini karena sebelum tahun 2000, SVM
hanya digunakan untuk mengklasifikasikan 2 kelas, tetapi setelah itu
dapat digunakan untuk multiclass classification. Hasil tersebut mencukup
seluruh image collection yang ada, tidak hanya pada area studi. Untuk
memperoleh hasil hanya pada scene tertentu, dapat menggunakan
fungsi:
var l8 =
ee.ImageCollection('LANDSAT/LC08/C02/T1_L2').filterBounds(point);
dengan point merupakan titik yang ditambahkan sebagai variabel untuk
mendefinisikan suatu koordinat sehingga koordinat inilah yang akan
digunakan oleh GEE untuk mencari scene yang sesuai dengan lokasi
tersebut.
2. RandomForest

Script yang digunakan


// Define a region of interest.
var roi = ee.Geometry.BBox(100.26, -1.22, 100.90, -0.73);

// Define a function that scales and masks Landsat 8 surface reflectance images.
function prepSrL8(image) {
// Develop masks for unwanted pixels (fill, cloud, cloud shadow).
var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
var saturationMask = image.select('QA_RADSAT').eq(0);

// Apply the scaling factors to the appropriate bands.


var getFactorImg = function(factorNames) {
var factorList = image.toDictionary().select(factorNames).values();
return ee.Image.constant(factorList);
};
var scaleImg = getFactorImg([
'REFLECTANCE_MULT_BAND_.|TEMPERATURE_MULT_BAND_ST_B10']);
var offsetImg = getFactorImg([
'REFLECTANCE_ADD_BAND_.|TEMPERATURE_ADD_BAND_ST_B10']);
var scaled = image.select('SR_B.|ST_B10').multiply(scaleImg).add(offsetImg);

// Replace original bands with scaled bands and apply masks.


return image.addBands(scaled, null, true)
.updateMask(qaMask).updateMask(saturationMask);
}

// Make a cloud-free Landsat 8 surface reflectance composite.


var input = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(roi)
.filterDate('2020-03-01', '2020-07-01')
.map(prepSrL8)
.median()
.setDefaultProjection('EPSG:4326', null, 30)
.select(['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']);

// Use MODIS land cover, IGBP classification, for training.


var modis = ee.Image('MODIS/006/MCD12Q1/2020_01_01')
.select('LC_Type1');

// Sample the input imagery to get a FeatureCollection of training data.


var training = input.addBands(modis).sample({
region: roi,
numPixels: 5000,
seed: 0
});

// Make a Random Forest classifier and train it.


var classifier = ee.Classifier.smileRandomForest(10)
.train({
features: training,
classProperty: 'LC_Type1',
inputProperties: ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']
});
// Classify the input imagery.
var classified = input.classify(classifier);

// Get a confusion matrix representing resubstitution accuracy.


var trainAccuracy = classifier.confusionMatrix();
print('Resubstitution error matrix: ', trainAccuracy);
print('Training overall accuracy: ', trainAccuracy.accuracy());

// Sample the input with a different random seed to get validation data.
var validation = input.addBands(modis).sample({
region: roi,
numPixels: 5000,
seed: 1
// Filter the result to get rid of any null pixels.
}).filter(ee.Filter.notNull(input.bandNames()));

// Classify the validation data.


var validated = validation.classify(classifier);

// Get a confusion matrix representing expected accuracy.


var testAccuracy = validated.errorMatrix('LC_Type1', 'classification');
print('Validation error matrix: ', testAccuracy);
print('Validation overall accuracy: ', testAccuracy.accuracy());

// Define a palette for the IGBP classification.


var igbpPalette = [
'aec3d4', // water
'152106', '225129', '369b47', '30eb5b', '387242', // forest
'6a2325', 'c3aa69', 'b76031', 'd9903d', '91af40', // shrub, grass
'111149', // wetlands
'cdb33b', // croplands
'cc0013', // urban
'33280d', // crop mosaic
'd7cdcc', // snow and ice
'f7e084', // barren
'6f6f6f' // tundra
];

// Display the input and the classification.


Map.centerObject(roi, 10);
Map.addLayer(input.clip(roi),
{bands: ['SR_B4', 'SR_B3', 'SR_B2'], min: 0, max: 0.25},
'landsat');
Map.addLayer(classified.clip(roi),
{palette: igbpPalette, min: 0, max: 17},
'classification');
Hasil running script
Water, forest, forest, forest, forest, forest, shrub/grass, shrub/grass, shrub/grass,
shrub/grass, shrub/grass, wetlands, croplands, urban, crop mosaic, snow and ice,
barren, tundra
Pembahasan: Idealnya tidak lagi digunakan citra MODIS dan Landsat 5 TM
(Thematic Mapping) karena ketersediaan datanya yang sudah lama
sehingga kurang cocok untuk klasifikasi dengan citra LANDSAT 8 dengan
data terbaru. Citra yang digunakan ternyata masih memuat awan,
meskipun sudah didefinisikan tutupan awan yang paling minimum. Hal
ini karena GEE memilih secara acak sesuai ketersediaan data, tidak selalu
tepat memilih yang paling sedikit awannya. Masking: definisikan l8,
ternyata masih ada tutupan awan yang mengganggu perhitungan
klasifikasi mask tutupan awan, jadi bolong:v tidak ada nilai.
updateMask. Ada 10 kelas. Lebih banyak warnanya. K-Means
(unsupervised) lebih singkat karena tidak butuh TArea atau pendefinisian
kelas objek, langsung meng-compute data yang tersedia berdasarkan
prinsip algoritma. Bisa singgung algoritma dan hubungannya dengan
hasil visualisasi. Antara ke3 itu mana yang terbaik untuk melakukan
klasifikasi sesuai objek sebenarnya. NDVI 1 dan kelas 3. Nilai lte bisa
dimodifikasi bisa 75 dkk, hasilnya bagaimana, makin kecil akan makin
banyak yang kena masking, awan tipis dibuang.

3) Machine Learning – Unsupervised Classification Algorithms (K-Means)

Script yang digunakan


// Load a pre-computed Landsat composite for input.
var input = ee.Image('LANDSAT/LE7_TOA_1YEAR/2001');

// Define a region in which to generate a sample of the input.


var region = ee.Geometry.Rectangle(100.26, -1.22, 100.90, -0.73);

// Display the sample region.


Map.setCenter(100.26, -1.22, 8);
Map.addLayer(ee.Image().paint(region, 0, 2), {}, 'region');
// Make the training dataset.
var training = input.sample({
region: region,
scale: 30,
numPixels: 5000
});

// Instantiate the clusterer and train it.


var clusterer = ee.Clusterer.wekaKMeans(15).train(training);

// Cluster the input using the trained clusterer.


var result = input.cluster(clusterer);

// Display the clusters with random colors.


Map.addLayer(result.randomVisualizer(), {}, 'clusters');
Hasil running script

Pembahasan:
G. Kesimpulan
Proses klasifikasi dapat dibedakan menjadi 2, yaitu terbimbing (supervised)
dan tidak terbimbing (unsupervised). Klasifikasi terbimbing mensyaratkan
Daftar Pustaka

You might also like