Nginstall NetCDF Toolbox

Buat anda yang sudah baca tips baca NetCDF dgn Matlab dan mentok di syarat kedua, jangan kuatir, selalu ada jalan keluar dari masalah yang anda hadapi, optimislah! maka hidup akan selalu indah dan menyenangkan.

Pada bagian ini saya akan mencoba membuat ringkasan bagaimana anda dapat meng-install NetCDF Toolbox di PC anda. Langkah-langkah yang saya tulis di sini hanya untuk Matlab versi 5 dan 6. Silahkan ikuti langkah demi langkah berikut ini (jangan meloncat ya, tapi melangkah!)

  1. Unduh berkas netcdf_install.zip, ekstrak dan salin ke direktori $Matlab\toolbox ($Matlab berarti direktori Matlab anda, misal program Matlab anda ada di C:\Programs\Matlab, maka itulah $Matlab anda).
  2. Jalankan MatLab dan ubah direktori kerja ke $MatLab\toolbox\
  3. Jalankan netcdf_install dari layar perintah di Matlab, dimana akan menghasilkan direktori netcdf di dalam $Matlab\toolbox.
  4. Pilih menu File-Set Path-Add Folder, pilih folder \toolbox\netcdf, lalu tekan save.
  5. Keluar dari MatLab.
  6. Unduh mexcdf.zip lalu ekstrak dan salin mexcdf53.dll serta netcdf.dll ke direktori \toolbox\netcdf\
  7. Pilih menu File-Set Path-Add Folder, pilih folder \toolbox\netcdf\nctype dan \toolbox\netcdf\ncutility, lalu tekan save.
  8. Jalankan ulang (restart) MatLab.
  9. Untuk menguji apakah toolbox NetCDF sudah berfungsi, jalankan tnetcdf.

Langkah-langkah di atas sudah saya coba di Matlab Versi 6.5 Release 13 dan berhasil dengan baik. Terimakasih untuk forum Oceanographers Net atas tips dan file-file netcdf toolbox-nya. Untuk Matlab versi terbaru, silahkan kunjungi situs mexcdf untuk netcdf toolbox yang sesuai.

Selamat mencoba!

Baca NetCDF dgn Matlab

Banyak data meteorologi dan oseanografi yang disimpan dengan format NetCDF (network Common Data Form, informasi lengkap tentang “apa itu NetCDF” bisa anda baca di sini). Pada artikel kali ini akan dibahas bagaimana caranya membaca file dengan format NetCDF (biasanya dengan extention “nc”) dengan menggunakan Matlab. Kenapa Matlab? karena saya terbiasa pakai Matlab, jadi nggak mungkin kan kalau saya nulis artikel tentang “gimana membuka file NetCDF dengan fortran”. Lagian artikel ini sebenarnya juga saya terjemahin secara bebas dari sini. Tapi bukan sekedar nerjemahin lho, sebelumnya saya juga sudah mencobanya. OK, tanpa berpanjang lebar, mari kita mulai sekarang pembahasannya.

Syarat untuk bisa mempraktekan tips ini:

  1. Anda sudah meng-install Matlab di PC anda (terserah mau yang bajakan atau yang berlisensi).
  2. Di Matlab yang anda install, toolbox untuk NetCDF juga sudah ter-install. Coba cek dengan mengetikkan: help netcdf, jika keluar uraian tentang bagaimana menggunakan netcdf, itu berarti toolbox netcdf sudah ter-install. Jika keluar netcdf.m not found, apa boleh buat anda terpaksa harus ke sini dulu untuk meng-install-nya.
  3. Anda sudah memiliki library netcdf.dll dan sebuah program kecil bernama ncdump.exe di PC anda. Jika belum anda bisa kunjungi alamat ini dan ambil file netcdf-3.5.win32bin.zip (ini untuk pengguna Windows) dan ekstrak di direktori yang anda sukai. Jangan lupa untuk mengeset path supaya program ncdump bisa dipanggil dari direktori kerja anda (jika ditaruh di direktori yang berbeda). Cara set path yang paling mudah (dari command prompt, misal ncdump ada di c:\programs\netcdf) adalah dengan mengetikkan set path=c:\programs\netcdf.
  4. Anda punya file dengan format NetCDF yang mau dibuka :)

Baiklah, jika syarat sudah terpenuhi semuanya, mari kita mulai pembahasan kita di sini. Misalkan file dengan format NetCDF yang hendak anda buka adalah slp.1994.nc, maka ketikan:

ncdump -h slp.1994.nc

dari command prompt untuk melihat header file tersebut (pada tahap ini anda belum masuk ke Matlab). Header perlu dilihat terlebih dahulu untuk mengetahui spesifikasi dari file yang hendak anda buka. Hasil perintah tersebut akan menghasilkan keluaran sebagai berikut:

netcdf slp.1994 {
dimensions:
lon = 144 ;
lat = 73 ;
time = UNLIMITED ; // (1460 currently)
variables:
float lat(lat) ;
lat:units = “degrees_north” ;
lat:actual_range = 90.f, -90.f ;
lat:long_name = “Latitude” ;
float lon(lon) ;
lon:units = “degrees_east” ;
lon:long_name = “Longitude” ;
lon:actual_range = 0.f, 357.5f ;
double time(time) ;
time:units = “hours since 1-1-1 00:00:0.0” ;
time:long_name = “Time” ;
time:actual_range = 17470320., 17479074. ;
time:delta_t = “0000-00-00 06:00:00” ;
short slp(time, lat, lon) ;
slp:long_name = “4xDaily Sea Level Pressure” ;
slp:valid_range = 87000.f, 115000.f ;
slp:actual_range = 92960.f, 111610.f ;
slp:units = “Pascals” ;
slp:add_offset = 119765.f ;
slp:scale_factor = 1.f ;
slp:missing_value = 32766s ;
slp:precision = 0s ;
slp:least_significant_digit = -1s ;
slp:GRIB_id = 2s ;
slp:GRIB_name = “PRMSL” ;
slp:var_desc = “Sea Level Pressure\n”,
“P” ;
slp:dataset = “NMC Reanalysis\n”,
“L” ;
slp:level_desc = “Sea Level\n”,
“I” ;
slp:statistic = “Individual Obs\n”,
“I” ;
slp:parent_stat = “Other\n”,
“-” ;

// global attributes:
:Conventions = “COARDS” ;
:title = “4x daily NMC reanalysis (1994)” ;
:base_date = 1994s, 1s, 1s ;
:history = “created 95/02/06 by Hoop (netCDF2.3)” ;
:description = “Data is from NMC initialized reanalysis\n”,
“(4x/day). It consists of most variables interpolated to\n”,
“pressure surfaces from model (sigma) surfaces.” ;
:platform = “Model” ;
}

Secara garis besar saya dapat sampaikan di sini ringkasan dari keluaran di atas yaitu bahwa file slp.1994.nc adalah file yang berisi data slp (Sea Level Pressure) 6 jam-an dengan format matriks (waktu,lintang,bujur), dimana ada 1460 selang waktu, 73 sel arah lintang dan 144 sel arah bujur. Waktu dimulai dari pukul 00:00, lintang dari 90LU s.d. 90LS dan bujur dari 0 s.d. 360. Satuan SLP adalah Pascal, dimana jika ingin mendapatkan harga slp sesungguhnya harus dikalikan dulu dengan scale_factor dan ditambahkan dengan add_offset (slp_terekstrak=(slp*scale_faktor)+add_offset).

Setelah kita mengetahui header-nya, jalankan program Matlab. Dari layar Matlab ketikkan:

nc=netcdf(‘slp.1994.nc’,’nowrite’);

untuk membuka file NetCDF tersebut di atas.

Misalkan selanjutnya kita akan mengestrak data lintang, bujur dan slp pada waktu ke-1, maka kita dapat mengetikkan perintah berikut:

ygrid=nc{‘lat’}(:);
xgrid=nc{‘lon’}(:);
slp=nc{‘slp’,1}(1,:,:);

catatan:

  • argumen 1 pada bagian nc{‘slp’,1} berarti anda mengekstrak data slp dengan mengalikannya dengan scale_factor dan menambahkan pula add_offset pada hasil ekstrak anda.
  • argumen 1 pada (1,:,:) berarti anda mengekstrak data slp hanya pada waktu ke-1 di semua sel. Jika anda ingin mengekstrak data selama 1 hari, anda dapat memberikan argumen (1:4,:,:). Atau jika anda ingin mengekstrak semuanya gunakan argumen (:,:,:).

OK deh ya… selamat mencoba, semoga lancar. Kalau ada apa-apa, tinggalkan saja pesan di bagian pesan pada blog ini. Pesan di rumah makan Padang: “jika anda puas, beri tahu teman, jika anda tidak puas, beritahu kami”.