Friday, August 29, 2014

Meteo #12 - Cara Menyimpan Nilai Variabel GrADS ke File Plain Binary

Pada tulisan sebelumnya, saya pernah menuliskan teknik menyimpan isi variabel GrADS ke dalam format ASCII/teks untuk keperluan analisis. Tulisan kali ini juga akan mencoba memaparkan teknik menyimpan isi variabel GrADS ke dalam format lain, kali ini ke format data plain binary.

Data binary untuk menyimpan data meteorologi sebenarnya lebih sederhana dibanding file ASCII, namun karena 'wujud' data di dalam file binary tidak bisa dilihat langsung seperti halnya ASCII, banyak orang enggan menggunakannya, kecuali ada aplikasi yang bisa membukanya, misalnya dengan GrADS atau ArcGIS. Padahal, file binary memiliki beberapa keunggulan dibanding file ASCII, terutama dalam hal ukuran dan keamanan data. Dengan informasi/data yang sama, file binary bisa hanya berukuran 1/8 dari file ASCII, sehingga memungkinkan penyimpanan data dalam bentuk spasial atau array.

Dalam contoh berikut kita akan mencoba menyimpan hasil crop dari data hujan per jam GSMaP NRT ke dalam file plain binary. Data binary ini bisa kembali digunakan pada GrADS atau dibuka dengan menggunakan aplikasi pemrograman seperti FORTRAN.

> reinit
> open ../nrt/GSMaP_NRT.hourly.rain.ctl
> set lon 90 150
> set lat -11 11
> d precip

Perintah di atas akan menampilkan data hujan GSMaP pada wilayah yang terletak antara lintang 11 LS-11 LU dan  90 BT-150 BT. Seperti pada gambar berikut :


Selanjutnya untuk menyimpan data hujan pada wilayah tersebut, tuliskan perintah berikut :

> set undef -99.0
> set fwrite -le -st -cl test.dat
> set gxout fwrite
> d precip
> disable fwrite

Penjelasannya :
  • Perintah set undef akan mendefinisikan nilai missing (tidak ada pengamatan) ke dalam nilai -99.0. Nilai ini sebenarnya bisa anda tentukan sendiri, atau diabaikan bila anda ingin menggunakan definisi default GrADS (-999000000). Tapi yang jelas, nilai ini harus anda ketahui, bila anda ingin membedakan mana data yang valid dengan data yang miss.
  • Perintah set fwrite mengatur jenis byte order (little endian/big endian), format binary (stream/sequential) dan penulisan data (append/replace). Pada contoh di atas GrADS akan mendefinisikan file keluaran dalam sistem Little Endian, format Stream dan Replace (menimpa/memperbaharui file yang sudah ada).
  • Perintah set gxout fwrite akan mengubah moda keluaran GrADS dari grafis kontur (default) ke file binary.
  • Perintah d precip akan menuliskan isi variabel/ekspresi precip ke dalam file binary test.dat.
  • Perintah disable fwrite akan menutup file test.dat. Perintah ini penting, karena file yang sudah ditulisi harus ditutup lagi, bila tidak, file tersebut tidak akan terekam.
File yang sudah dibuat tadi bisa kembali dibuka dengan menggunakan GrADS, namun anda perlu membuat file control (ctl) agar GrADS bisa 'mengerti' dimensi dari file data yang telah anda buat. Misalnya isinya seperti ini :

DSET   ^test.dat
TITLE  File hasil crop GrADS
UNDEF  -99.0
XDEF   602 LINEAR  90 0.1
YDEF   221  LINEAR -11 0.1
ZDEF     1 LEVELS 1013
TDEF   1 LINEAR 00Z29aug2014 1hr
VARS    1
precip    0  99   data crop hujan per jam (mm/hr)
ENDVARS

Simpan file, misalnya dengan nama test.ctl. Lalu coba buka kembali dengan GrADS.

> open test.ctl
> d precip

Hasilnya akan sama seperti gambar sebelumnya, hanya saja kini data yang tersimpan hanya dalam wilayah 11 LS-11 LU dan  90 BT-150 BT.



Selamat mencoba :)