Google Earth Engine untuk Pemodelan Kesesuaian Lokasi Budidaya Ikan Kerapu (GEE-015)

Sumberdaya perikanan di Indonesia sangat berlimpah dan dapat dimanfaatkan salah satunya untuk budidaya laut. Budidaya laut perlu didukung data lokasi yang baik agar dalam melakukan budidaya lokasinya sesuai. penentuan lokasi dapat memanfaatkan data penginderaan jauh dan analisis spasial dengan Sistem Informasi Geografis.

Salah satu tool yang mempermudah pemodelan ini yaitu dengan menggunakan Google Earth Engine, dimana dengan menggunakan Google Earth Engine dapat melakukan pemrosesan langsung pada Google Earth Engine dengan area cukup luas tanpa perlu mendownload data.


Data

Data yang digunakan merupakan data yang sudah tersedia di Google Earth Engine yaitu

  • Mosaik Landsat Landsat 8 Collection 1 Tier 1 TOA reflectance tahun 2015 – 2020 (USGS/Google)
  • ETOPO1 is a 1 arc-minute global (NOAA) Amante, C (2009)

Lokasi

Lokasi yang akan dilakukan analisis kesesuaian budidaya ikan kerapu yaitu perairan Laut Jawa

Tahapan Pemrosesan


Langkah 1: Menambahkan Citra

langkah pertama yaitu menambahakan citra Landsat 8, dan Batimetri ETOPO, maka pada masuk ke code box seperti berikut:


Langkah 2: Menambahkan file SHP

Untuk mengimport file SHP dapat dilakukan pada bagian Assets kemudian klik NEW, pilih bagian shape files seperti gambar berikut

File SHP yang telah ditambahkan akan muncul di tab Assets, Untuk menambahkan file SHP tadi dapat diklik pada icon panah ke kanan atau import

This image has an empty alt attribute; its file name is image-19.png

Langkah 3: Memfilter citra

Citra yang akan digunakan perlu untuk difilter waktu perekaman sesuai keinginan disini saya menggunakan rata-rata nilai citra perekaman tahun 1 April 2015 sampai 1 April 2020 dan citra dengan tutupan awan yang sedikit, disini saya memfilter citra dengan tutupan awan 10% dengan dengan script sebagai berikut

var L8filter = L8.filterDate("2015-04-01","2020-04-01").filterMetadata("CLOUD_COVER","less_than",10).mean()

Langkah 4: Membuat masking

Masking disini digunakan untuk menghilangkan bagian yang tidak diperlukan dan menyisakan area penelitian. Masking disini terdiri dari 2 data yaitu masking untuk area kerja, disini menggunakan Polygon batas Laut Jawa dan masking untuk citra landsat yang didak tersedia atau tidak ada data.

//Masking dengan menggunakan polygon batas perairan
var datamask = ee.Image.constant(1).clip(batas).mask()

//Masking dengan data Landsat 8 untuk menghilangkan area yang tidak memiliki nilai dengan melihat salah satu nilai band
var datamask2 = L8filter.expression('b4>=0?1:0',{'b4':L8filter.select('B4')}).eq(1)
Melakukan zoom ke area kerja

zoom dapat dilakukan dengan set center dengan parameter longitude, latitude, dan nilai zoom seperti berikut

Map.setCenter(114,-5,6);

Langkah 5: Memasking citra

Citra Landsat 8 dan Batimetri dimasking dengan menggunakan data masking yang telah dibuat sebelumnya. Masking dilakukan dengan Code “updateMask()”. Masking disini dilakukan 2 kali, maka dengan cara mengulang code “updateMask()”. Nama band dapat diubah sesuai keinginan, misal untuk band batimetri dari data ETopo bernama ‘bedrock’ akan diubah menjadi nama ‘batimetri’ dengan menggunakan code “rename()”

//masking citra Landsat 8
var L8selection = L8filter.updateMask(datamask).updateMask(datamask2)

//masking batimetri
var batimetri = ETPO.select('bedrock').updateMask(datamask).updateMask(datamask2).rename('batimetri')

Langkah 6: Menghitung Klorofil-a

Ekstraksi Klorofil-a dengan menggunakan data Landsat 8 Band Merah, NIR, dan SWIR. Rumus ekstraksi Klorofil-a dengan algoritma yang dikembangkan oleh Nuriya et al. (2010)

Rumus dalam bentuk code dan hasilnya diberi nama ‘chlor_a’ sebagai berikut

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')

Langkah 7: Menghitung suhu permukaan laut

Ekstraksi suhu permukaan laut dengan menggunakan data Landsat 8 Band 10 dan 11. Rumus ekstrkasi suhu permukaan laut dengan algoritma Split window yang dikembangkan oleh Cahyono (2017)

Rumus dalam bentuk code dan hasilnya diberi nama ‘SPL’ sebagai berikut

var SPL1 = L8selection.expression(
          '((BT10-273)+(2.946*((BT10-273)-(BT11-273)))-0.038)',{
            'BT10':L8selection.select('B10'),
            'BT11':L8selection.select('B11'),
          }).rename('SPL')

Langkah 8: Menghitung muatan padatan tersuspensi

Ekstraksi muatan padatan tersuspensi dengan menggunakan data Landsat 8 Band 4. Rumus ekstrkasi muatan padatan tersuspensi dengan algoritma yang dikembangkan oleh Budhiman (2004)

Rumus dalam bentuk code dan hasilnya diberi nama ‘MPT’ sebagai berikut

var MPT = L8selection.expression('8.1429**(23.704*B4)',{
  'B4':L8selection.select('B4')
}).rename('MPT')

Langkah 9: Melakukan pembobotan parameter
Pengharkatan

Melakukan pembobotan parameter yang telah dihitung sebelumnya dengan mengacu pada sebagian parameter dari Kangkan dkk. (2007). Tabel harkat setiap parameter sebagai berikut

Harkat531
Batimetri (meter) 15-25 5 – 15  atau 26 – 35 <5 atau >35
Klorofil-a >10 4 – 10 <4
Suhu Permukaan laut (⁰C) 28 – 30 25 – 27 atau 31 – 32 <25 atau >32
Muatan Padatan Tersuspensi (mg/l) <25 25 – 50 >50

adapun rumus logika sebagai berikut:

|| ( atau )

&& ( dan )

A?B:C ( jika A maka B, jika tidak A maka C )

Adapun code untuk mengharkatkan nilai parameter dari hasil perhitungan sebelumnya, sebagai berikut:

//harkat batimetri
var harkatbati = batimetri.expression(
              'batimetri>-5||batimetri<-35?1'+ //kedalama <5m atau >35mbobot 1
              ': batimetri<=-5&&batimetri>=-15||batimetri<=-26&&batimetri>=-35?3'+ //kedalaman 5-15m bobot 3
              ': batimetri<=-15&&batimetri>=-25?5'+ //kedalaman 15-25m bobot 5
              ': 0',
              {'batimetri':batimetri.select('batimetri')}).rename('harkatbati')
                           
//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')
                 
//harkat suhu permukaan laut              
var harkatspl = SPL1.expression(
              'spl<25&&spl>35?1'+ //suhu <25C atau >35c bobot 1
              ': spl>=25&&spl<=27||spl>=31&&spl<=32?3' + //suhu 25-27C atau 31-32C bobot 3
              ': spl>=28&&spl<=30?5'+ //suhu 28-30C bobot 5
              ': 0',
              {'spl':SPL1.select('SPL')}
              ).rename('harkatspl')
                  
//harkat muatan padatan tersuspensi              
var harkatmpt = MPT.expression(
              'mpt>50?1'+  //padatan tersuspensi >50mg/l bobot 1
              ': mpt>=26&&mpt<=50?3'+ //padatan tersuspensi 26-50mg/l bobot 3
              ': mpt<25?5'+ //padatan tersuspensi <25mg/l bobot 5
              ': 0', {'mpt':MPT.select('MPT')}
              ).rename('harkatmpt')
Pembobotan

Bobot setiap parameter mengacu pada Kangkan dkk. (2007) pada tabel berikut

Parameter Bobot
Batimetri (meter) 3
Klorofil-a 1
Suhu Permukaan laut (⁰C) 2
Muatan Padatan Tersuspensi (mg/l) 3

Pembobotan dilakukan dengan cara mengkalikan dan menambahkan setiap parameter. untuk mengalikan dengan code “multiply()” dan untuk menambahkan dengan code “add()”, hasil pembobotan ini diberi nama ‘bobot’. Code untuk pembobotan sebagai berikut

//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

Langkah 10: Pengkelasan

Hasil pembobotan perlu untuk dikelaskan agar lebih mudah untuk dibedakan. Pengelasan menjadi 4 kelas yaitu sangat sesuai, sesuai, cukup sesuai, dan sesuai dengan menggunakan interval pengelasan sama. Hasil pengkelasan ini akan memiliki nilai piksel 1 sampi dengan 4, dimana 1 berarti tidak sesuai dan 4 berarti sangat sesuai

Hasil pengelasan perlu dilakukan masking lagi untuk menghilangkan pixel dengan nilai yang tidak diinginkan dari hasil pengelasan karena saat menggunakan code logika, pada bagian masking yang sebelumnya akan berisi nilai sehingga perlu dihilangkan. Data masking menggunakan data yang telah dibuat sebelumnya.

//Mengkelaskan hasil pembobotan
var kesesuaian = bobot.expression(
                'bobot<=11.25?1'+
                ': bobot<=22.5?2'+
                ': bobot<=33.75?3'+
                ': bobot<=45?4'+
                ': 0',{
                  'bobot':bobot.select('bobot')
                }
).updateMask(datamask).updateMask(datamask2)

Langkah 11: Melakukan simbolisasi

Penentuan simbol warna dengan menggunakan code HEX warna yang dapat dicari dari katalog misalanya disini, dalam simbol perlu ditentukan nilai yang akan dimunculkan, berdasarkan hasil pengelasan sebelumnya menggunakan nilai 1 sampai 4 maka nilai minimum diisi 1 dan nilai maksimum diisi 4. Untuk pewarnaan diisikan sesuai urutan dari minimum ke maksimum. Urutan warna disini yaitu 1 dengan warna ff2a1f, 2 dengan warna ffbb23, 3 dengan warna e6ff1b, dan 4 dengan warna 19ff0a.

Setelah simbol dibuat maka peta dapat ditampilkan dengan menggunakan “Map.addLayer()” dengan variabel hasil pengelasan dan simbol seperti code berikut

//menentukan simbol warna
var simbol = {"min":1,"max":4,"palette":["ff2a1f","ffbb23","e6ff1b","19ff0a"]}

//menampilkan peta dengan menggunakan simbol
Map.addLayer(kesesuaian, simbol)

Langkah 12: Membuat Informasi Peta

Informasi peta ini terdiri dari Judul Peta dan Legenda. urutan script yang ditampilkan adalah script yang paling bawah akan ditampilkan di atas sehingga code legenda ditulis terlebih dahulu kemudian code untuk membuat judul peta dengan code sebagai berikut

//Membuat Legenda
//Menentukan Posisi Legenda
var legend = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});
 
//Membuat judul legenda
var legendTitle = ui.Label({
  value: 'Kesesuaian',
  style: {
    fontWeight: 'bold',
    fontSize: '18px',
    margin: '0 0 4px 0',
    padding: '0'
    }
});
legend.add(legendTitle);
 
// Membuat baris legenda yang berisi kotak warna dan nama kelas
var makeRow = function(color, name) {
 
      // Membuat kotak simbol
      var colorBox = ui.Label({
        style: {
          backgroundColor: '#' + color,
          padding: '8px',
          margin: '0 0 4px 0'
        }
      });
 
      // Membuat nama kelas
      var description = ui.Label({
        value: name,
        style: {margin: '0 0 4px 6px'}
      });
 
      // memposisikan simbol dan nama kelas
      return ui.Panel({
        widgets: [colorBox, description],
        layout: ui.Panel.Layout.Flow('horizontal')
      });
};
 
//  Menentukan warna kelas
var palette =['19ff0a','e6ff1b','ffbb23', 'ff2a1f'];
 
// Menentukan nama kelas
var names = ['Sangat Sesuai','Sesuai','Cukup Sesuai','Tidak Sesuai'];
 
// Menambahkan warna dan nama kelas sesuai dengan urutan
for (var i = 0; i < 4; i++) {
  legend.add(makeRow(palette[i], names[i]));
  }  
Map.add(legend);


//Membuat Judul Peta
//Menentukan posisi Judul Peta
var title = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});

//Membuat isi Judul Peta
var textTitle = ui.Label({
  value: 'Kesesuaian Budidaya Ikan Kerapu',
  style: {
    fontWeight: 'bold',
    fontSize: '20px',
    margin: '0 0 4px 0',
    padding: '0'
    }
});
title.add(textTitle);
Map.add(title)

Peta Hasil Analisi Parametrik Kesesuaian Budidaya Ikan Kerapu dengan Google Earth Engine


Daftar Pustaka
  • Amante, C. and B. W. Eakins, 2009. ETOPO1 1 Arc-Minute Global Relief Model: Procedures, Data Sources and Analysis. NOAA Technical Memorandum NESDIS NGDC-24, 19 pp
  • Budhiman, S. 2014. Mapping TSM concentration form multisensory satellite images in turbid tropical coastal waters of Mahakam Delta-Indonesia. [tesis]. Netherlands (ND): International Institute for Geo-Information Sciebce and Earth Observasion
  • Cahyono AB, Armono HD, Saptarini D. 2017. Estimation of sea surface temperature (SST) using split window methods for monitoring industrial activity in coastal area. Applied Mechanics and Materials.
  • Kangkan AL, Hartoko A, Sumito. 2007. Studi penentuan lokasi untuk pengembangan budidaya laut berdasarkan parameter fisika, kimia, dan biologi di Teluk Kupang, Nusa Tenggara Timur. Jurnal Pasir  Laut.
  • Nuriya H, Hidayah Z, Nugraha WA. 2010. Pengukuran konsentrasi klorofil-a dengan pengolahan citra landsat ETM-7 daan uji laboratorium di Perairan Selat Madura bagian Barat. Jurnal Kelautan.

This Post Has 55 Comments

  1. Slot gacor 100 yang menyediakan Depo 25 Bonus 25 & Slot Bonus New Member 100% Depo 25 Bonus 25 To Rendah 3X 5X 7X 8X 10X 14X 18X, Situs Depo 25 Bonus 25 merupakan situs slot online terpercaya dan aman no 1 di indonesia yang bisa kamu mainkan sekarang dengan hanya melakukan Depo 25 Bonus 25 to kecil.

    1. Thanks for ones marvelous posting! I really enjoyed reading
      it, you can be a great author.I will remember to bookmark your blog and
      may come back in the foreseeable future. I want to encourage you continue
      your great writing, have a nice day!

    2. Pretty great post. I simply stumbled upon your weblog and wished to mention that I have truly enjoyed browsing your blog posts.

      In any case I’ll be subscribing on your rss feed and I’m
      hoping you write once more very soon!

    3. My partner and I stumbled over here from a different page and thought I may as
      well check things out. I like what I see so now i’m following
      you. Look forward to looking over your web page for a second time.

  2. Best Private Proxies – 50 Price reduction + Absolutely free Proxies! Top-notch high quality, Limitless data transfer useage, 1000 mb/s superspeed, 99,9 uptime, Un sequent IP’s, Absolutely no utilising limitations, A variety of subnets, USA or perhaps Eu proxies – Shop for At this time – DreamProxies.com

  3. Awsome article and straight to the point. I don’t
    know if this is actually the best place to ask but do you guys have any thoughts on where to hire some professional
    writers? Thanks in advance 🙂

  4. I really love your website.. Great colors & theme. Did you build this web site yourself? Please reply back as I’m planning to create my own blog and want to learn where you got this from or exactly what the theme is called. Thanks.

  5. Excellent site you have got here.. It’s hard to find good quality writing like yours nowadays. I seriously appreciate individuals like you! Take care!!

  6. I’m amazed, I have to admit. Rarely do I come across a blog that’s equally educative and entertaining, and let me tell you, you have hit the nail on the head. The problem is something not enough men and women are speaking intelligently about. Now i’m very happy I came across this in my hunt for something regarding this.

  7. Having read this I thought it was really enlightening. I appreciate you spending some time and energy to put this short article together. I once again find myself spending a lot of time both reading and commenting. But so what, it was still worthwhile!

  8. A motivating discussion is worth comment. I think that you ought to write more about this subject, it may not be a taboo matter but generally people don’t speak about these subjects. To the next! Best wishes.

  9. I quite like reading through an article that will make people think. Also, thank you for permitting me to comment.

  10. Hello! I could have sworn I’ve visited this web site before but after browsing through some of the articles I realized it’s new to me. Anyways, I’m certainly happy I discovered it and I’ll be book-marking it and checking back often!

  11. Hello! I could have sworn I’ve visited this website before but after looking at some of the articles I realized it’s new to me. Nonetheless, I’m certainly pleased I discovered it and I’ll be book-marking it and checking back frequently.

  12. I really love your blog.. Very nice colors & theme. Did you build this site yourself? Please reply back as I’m wanting to create my own personal site and want to learn where you got this from or exactly what the theme is called. Many thanks!

  13. I would like to thank you for the efforts you have put in penning this site. I am hoping to check out the same high-grade blog posts by you in the future as well. In fact, your creative writing abilities has motivated me to get my own site now 😉

  14. I must thank you for the efforts you’ve put in writing this website. I really hope to view the same high-grade content from you later on as well. In fact, your creative writing abilities has inspired me to get my own site now 😉

  15. Oh my goodness! Amazing article dude! Thank you, However I am having troubles with your RSS. I don’t know the reason why I can’t subscribe to it. Is there anyone else having similar RSS problems? Anybody who knows the solution will you kindly respond? Thanx.

  16. This website truly has all the information I wanted concerning this subject and didn’t know who to ask.

  17. Can I simply say what a comfort to discover somebody who truly understands what they are discussing on the web. You definitely understand how to bring a problem to light and make it important. A lot more people need to read this and understand this side of the story. I can’t believe you are not more popular given that you certainly possess the gift.

  18. I was very pleased to discover this web site. I want to to thank you for your time due to this fantastic read!! I definitely really liked every little bit of it and I have you book-marked to look at new information on your website.

  19. An intriguing discussion is worth comment. There’s no doubt that that you should publish more on this subject, it may not be a taboo subject but typically people do not talk about these issues. To the next! Best wishes.

  20. Your style is unique in comparison to other folks I have read stuff from. I appreciate you for posting when you’ve got the opportunity, Guess I will just book mark this web site.

  21. The next time I read a blog, Hopefully it won’t disappoint me just as much as this one. I mean, I know it was my choice to read, but I actually believed you’d have something interesting to say. All I hear is a bunch of whining about something that you can fix if you were not too busy looking for attention.

  22. Greetings! Very helpful advice in this particular article! It is the little changes that produce the most significant changes. Thanks for sharing!

  23. Having read this I thought it was very informative. I appreciate you spending some time and effort to put this content together. I once again find myself personally spending way too much time both reading and leaving comments. But so what, it was still worth it.

  24. After I initially commented I seem to have clicked the -Notify me when new comments are added- checkbox and from now on each time a comment is added I receive 4 emails with the exact same comment. Is there a way you can remove me from that service? Many thanks.

  25. After I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and from now on whenever a comment is added I recieve four emails with the exact same comment. Is there a way you can remove me from that service? Kudos.

  26. I’m impressed, I have to admit. Seldom do I come across a blog that’s equally educative and interesting, and let me tell you, you have hit the nail on the head. The issue is something which not enough people are speaking intelligently about. Now i’m very happy I stumbled across this in my search for something relating to this.

  27. I want to to thank you for this great read!! I absolutely loved every little bit of it. I have you book-marked to check out new things you post…

  28. That is a great tip particularly to those fresh to the blogosphere. Simple but very accurate information… Thanks for sharing this one. A must read article.

Leave a Reply