Mendeteksi Awan Cumulonimbus dengan Overlay Kanal IR (Remote Sensing)

Pada awalnya saya berpikir kalau algoritma mendeteksi awan cb (cumulonimbus) ini sangat rumit, sampai-sampai saya berpikir kalau ini hanya bisa diselesaikan dengan metode saraf tiruan (Artificial Neural Network). Ternyata tidak, kita bisa mendeteksi awan cb ini dengan memanfaatkan ciri khas dari fisis awan cb seperti suhu dan tinggi puncak awan cb. Informasi ini semua didapatkan dari brightness temperature pada kanal-kanal citra satelit.

Deskripsi singkat soal awan cb bagi yang tidak tahu, awan cb inilah satu-satunya jenis awan yang bisa menghasilkan petir karena hanya jenis awan inilah yang muatannya terbagi dengan rapi sehingga awan ini bisa diibaratkan sebagai kapasitor raksasa. Kenapa bukan baterai? Ini karena discharge dari awan jenis ini sangat dahsyat (petir dan guntur) yang mana merupakan ciri khas dari kapasitor (discharge yang cepat). Awan ini juga sumber merupakan sumber malapetaka bagi penerbangan. Akan tetapi walaupun begitu, petir dari awan cb ini ikut berperan dalam menyuburkan tanah (pembentuk nitrat).

Ok, jadi dalam algoritmanya kita akan menganalisis citra satelit ini per pixel. Kanal-kanal yang kita butuhkan adalah IR1, IR2, dan IR3. Disini kita memakai data netcdf yang didapat dari satelit himawari untuk tanggal 13 April 2017 jam 14.30 UTC.

Script lengkapnya sudah saya buatkan dan bisa di download di sini. Algoritma pemrogramannya akan dijelaskan setelah ini. Jadi pertama kita (tentu saja) membaca file input (data netcdf) terlebih dahulu.

 rawIR1 = '/home/genomexyz/awancb/IR1.nc'  
 rawIR2 = '/home/genomexyz/awancb/IR2.nc'  
 rawIR3 = '/home/genomexyz/awancb/IR3.nc'  
 #read input  
 readIR1 = Dataset(rawIR1, mode = 'r')  
 readIR2 = Dataset(rawIR2, mode = 'r')  
 readIR3 = Dataset(rawIR3, mode = 'r')  
 #lat and lon matrix  
 #all nc file here have a same spatial matrix  
 lat = readIR1.variables['latitude']     #grid 0,0 is bottom left and max,max is upper right  
 lon = readIR1.variables['longitude']  
 #exract data from dataset  
 matrixIR1 = readIR1.variables['IR'][0]  
 matrixIR2 = readIR2.variables['I2'][0]  
 matrixIR3 = readIR3.variables['WV'][0]  

Lalu kita menganalisisnya per pixel melalui serangkaian tes (tercantum di source codenya) .

 #all matrix here is list object  
 def createbinermat(rightmat, leftmat, treshold):  
      right = np.asarray(rightmat)  
      left = np.asarray(leftmat)  
      y, x = np.shape(right)  
      out = np.zeros((y,x), dtype=np.int)  
      for i in xrange(y):  
           for j in xrange(x):  
                if (rightmat[i][j]-leftmat[i][j]) <= treshold:  
                     out[i][j] = 1  
                else:  
                     out[i][j] = 0  
      return out   
 .  
 .  
 .  
 #selection based on criteria  
 matrixcrit1 = createbinermat(matrixIR1, matrixIR2, crit1)  
 matrixcrit2 = createbinermat(matrixIR1, matrixIR3, crit2)  

Jika suatu pixel memenuhi 2 kriteria yang sudah ditentukan, maka pixel itu dinyatakan sebagai awan wilayah awan cb.

 #detect cb  
 finalmatrix = matrixcrit1 + matrixcrit2  
 dimy, dimx = np.shape(finalmatrix)  
 cb = np.zeros((dimy,dimx), dtype=np.int)  
 for i in xrange(dimy):  
      for j in xrange(dimx):  
           if finalmatrix[i][j] == 2:  
                cb[i][j] = 1  
           else:  
                cb[i][j] = 0  

Kemudian terakhir kita plot

 #make our lon and lat 2D  
 lon1, lat1 = np.meshgrid(lon, lat)  
 m = Basemap(resolution='l', projection='merc', \  
 llcrnrlon=90, llcrnrlat=-20, urcrnrlon=150, urcrnrlat=20) #for mercator  
 #draw map coastline, etc  
 m.drawcoastlines(linewidth=0.25)  
 m.drawcountries(linewidth=0.25)  
 #finishing  
 plt.title('Pendeteksi Awan CB ver 1.0')  
 cs = m.pcolormesh(lon1, lat1, np.squeeze(cb), cmap='Set3', latlon=True)  
 #cbar = m.colorbar(cs, location='bottom', pad="10%") #add color bar  
 plt.show()  

Sehingga kita dapatkan hasilnya seperti ini


Kemudian kita bandingkan dengan hasil olahan BMKG (peta kelembapan) untuk verifikasi



Dan terlihat bahwa titik-titik yang kita deteksi sebagai awan cb di peta output kita ternyata jika dilihat pada peta RH dari BMKG, itu merupakan titik-titik yang dianggap basah atau kelembapannya tinggi. Ini sesuai dengan sifat fisis awan cb yang basah karena penuh dengan uap air yang merupakan 'bahan bakarnya'.

referensi:
Mata kuliah Interpretasi Citra Satelit STMKG semeter VI
https://en.wikipedia.org/wiki/Paleolightning, di akses pada 13 April 2017

Komentar

  1. boleh kah saya meminta alamat email / kontak yang bisa d hubungi? karena saya tertarik mengenai pengolahan data yang dilakukan d atas, saya memiliki beberapa pertanyaan, terimakasih sebelumnya

    BalasHapus

Posting Komentar