cara mengekstrak data ncep+
Post on 14-Sep-2015
166 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
Cara mengekstrak data NCEP [}tx|t]
Data angin reanalysis harian yang sering dipergunakan dapat di unduh melalui link berikut.
Uwind http://www.esrl.noaa.gov/psd/cgi-bin/db_search/DBListFiles.pl?did=34&tid=26503&vid=1284
Vwind http://www.esrl.noaa.gov/psd/cgi-bin/db_search/DBListFiles.pl?did=34&tid=26503&vid=1285
Sedangkan data angin bulanan dapat di unduh dari link berikut
http://www.esrl.noaa.gov/psd/data.ncep.reanalysis.derived.surface.html
Ket : dimensi 2,5 derajat x 2,5 derajat.
(1) Ekstrak menggunakan GrADS
Install PCGrADS yang dapat di unduh dari (http://grads.iges.org/grads/head/html). Data yang
akan di ekstrak terlebih dahulu di copy ke dalam folder win32e ((C: ) > Program Files > PCGrADS > Win32e)
Dan berikut adalah contoh pengambilan data pada longitude 95; latitude -5; syntax nya :
Gambar contoh penulisan script pada GrADS
-
Tulis seperti yang ada di dalam kotak merah. Kemudian akhiri dengan menulis disable fwrite
File yang sudah di ekstrak nina.dat masih dalam bentuk biner, yang harus di rubah ke dalam
bentuk ascii.
Waktu (t) pada data bulanan dan harian dapat diperhitungkan secara manual dengan patokan 1
adalah tanggal 1 bulan 1 tahun 1948. Sehingga pada contoh diatas, arti dari set t 713 725 adalah
pemilihan waktu bulan mei tahun 2007 (713) sampai bulan Mei tahun 2008 (725).
Untuk merubah file biner ke dalam ascii, diperlukan MATLAB, dengan script file .m adalah sbb:
Gambar contoh file editor di Matlab (.m)
Ubah input file (kotak orange) sesuai dengan file yang kita akan pergunakan, kemudian ubah file
output nya (kotak hijau).
File output adalah bentuk nilai u wind secara time series, sesuai dengan yang kita inginkan.
Untuk mendapatkan nilai v wind, lakukan hal yang sama, ubah file inputnya vwnd.mon.mean.nc
Masing2 file output u dan v yang sudah dalam bentuk ascii, di buka di excel dengan format sbb:
-
Gambar contoh perhitungan u-v menjadi kecepatan-arah
Fungsi pada speed adalah : =SQRT((B2)^2+(C2)^2)
Fungsi pada arah(radian) : =ASIN(C2/D2)
Fungsi pada arah(derajat) : =DEGREES(E2)
Fungsi pada arah(derajatOK) : =IF(F2
-
Gambar contoh data inputan WRPLOT
Kemudian buka WRPLOT > Tools > Import from Excel. Upload data excel dengan mengklik .
Ubah Excel column name dengan mendefinisi kan parameter yang diminta sesuai dengan letak
kolom pada file Excel anda. Ubah First Row sesuai dengan data yang ada. Set Station
information dengan data sembarang, kemudian klik Import > save. Setelah itu klik Add File,
upload data (.sam) yang telah kita save sebelumnya. Klik Tab Windrose untuk melihat hasil
gambar.
-
Gambar Contoh pendefinisian nama kolom.
Contoh gambar windrose hasil plot di WRPLOT.
-
Jika anda memiliki software MIKE 21, anda dapat menggunakan tools plot composer untuk
membuat gambar windrose.
Terlebih dahulu buat data (.dfs0) dari MIKE ZERO > New > File > New > Time Series > OK > Blank
Time series > OK > Set waktu, time step adalah 30 hari, jika data anda bulanan, no. of time step
adalah banyaknya data, jika 1 tahun berarti 12 data; Set Item Information dengan merubah type
u-velocity, kemudian insert > tambahkan type v-velocity (Jika data anda adalah arah dan
kecepatan, ubah u-velocity menjadi speed, v-velocity menjadi direction) > OK > Save As file
(.dfs0).
MIKE ZERO > PLOT COMPOSER > Plot > Insert New Plot Object > Wind/Current Rose Plot > OK
Kemudian muncul window Plot Properties
Gambar window plot properties.
Kemudian load data (.dfs0); jangan lupa definiskan jenis data u-v atau magnitude-direction.
Load data
-
Contoh gambar windrose yang di plot dr MIKE.
-
(2) Ekstrak Menggunakan MATLAB
Dapat langsung membuat vector angin di Matlab dan membaca data NCEP
Buat file .m di matlab dengan syntax :
clear all;
close all;
nc=netcdf('vwnd.mon.mean.nc','nowrite'); % buka file data angin komponen utara-selatan
% dan bagaimana cara meresample sesuai resolusi yang diinginkan
% agus setiawan - 2007
% contoh ekstraksi data netcdf dari ncep utk wilayah indonesia
% baca lintang dan bujur xgrid=nc{'lon'}(:); ygrid=nc{'lat'}(:); % hitung jumlah sel arah lintang dan bujur ny=size(ygrid,1); nx=size(xgrid,1); % baca faktor skala dan offset
scalef=nc{'vwnd'}.scale_factor(:); addoff=nc{'vwnd'}.add_offset(:); % membaca data angin komponen utara-selatan
% hanya di ambil pada jam pertama saja
v_wind=nc{'vwnd'}(725,:); % kalikan/jumlahkan dengan faktor skala dan offset v_wind=v_wind.*scalef+addoff;
% buka file data angin komponen timur-barat
nc=netcdf('uwnd.mon.mean.nc','nowrite');
% membaca data angin komponen timur-barat
% hanya di ambil pada jam pertama saja
u_wind=nc{'uwnd'}(725,:);
% kalikan/jumlahkan dengan faktor skala dan offset u_wind=u_wind.*scalef+addoff;
% perhatikan baik-baik!
% data ncep memiliki 2 format grid
% 1. fixed (2.5 x 2.5 derajat dengan jumlah sel 73 x 144) % 2. gaussian (T62 dengan jumlah sel 94 x 192) % jalankan ncdump untuk melihat format gridnya
% set sel='fixed' atau sel='gauss'
sel='fixed';
if(sel=='fixed'),
e Waktu, untuk bulan Mei 2008
-
dx=2.5; % selang sel dalam derajat
% definisi untuk daerah indonesia
lat_north = -5.0 ; % sel baris ke-34
lat_south = -10.0; % sel baris ke-42
lon_west = 100.0; % sel kolom ke-39
lon_east = 115.0; % sel kolom ke-58
%definisikan sel dalam bentuk lintang-bujur untuk keperluan resampling [lon,lat]=meshgrid(lon_west:dx:lon_east,lat_south:dx:lat_north);
% indeks untuk ekstraksi
% nilai ini bisa dicari dengan cara:
% for i=1:144, lon(i)=(i-1)*360/144; % for i=1:73, lat(i)=(i-1)*180/73;
baris_awal = 39;
baris_akhir= 41;
kolom_awal = 41;
kolom_akhir= 47;
% ekstrak daerah indonesia
u_wind_ind=u_wind(baris_awal:baris_akhir,kolom_awal:kolom_akhir); v_wind_ind=v_wind(baris_awal:baris_akhir,kolom_awal:kolom_akhir);
elseif(sel=='gauss'),
lat_temp=[6.6666 4.7618379592896... 2.8571028709412 0.9523676037788 -0.9523676037788...
-2.8571028709412 -4.7618379592896 -6.6665730476379...
-8.5713081359863 -10.4760417938232 ];
lat_temp=lat_temp';
lon_temp=93.75:1.875:120;
lat1=zeros(size(lat_temp,1),size(lon_temp,2)); for i=1:size(lat1,2), lat(:,i)=lat_temp(:)+lat1(:,i); end
lon1=zeros(size(lat_temp,1),size(lon_temp,2)); for i=1:size(lon1,2), lon(:,i)=lon_temp(i)+lon1(:,i); end
%lat_north = 8.5713081359863; % sel baris ke-43
%lat_south = -12.3807764053345; % sel baris ke-54
%lon_west = 93.75; % sel kolom ke-51
%lon_east = 142.5; % sel kolom ke-77
% indeks untuk ekstraksi
Set daerah yang diinginkan
Baris dan kolom berdasarkan perhitungan manual, hitung manual dengan
penambahan atau pengurangan 2,5. Mis. -2.5 berarti baris ke 38
-
% nilai ini bisa dicari dengan cara:
% for i=1:192, lon(i)=(i-1)*360/192; % [xlat,dlat,sinc]=gauss2lats(nlat); % perlu fungsi eksternal gauss2lats
baris_awal = 44;
baris_akhir= 53;
kolom_awal = 51;
kolom_akhir= 65;
% ekstrak daerah indonesia
u_wind_ind=u_wind(baris_awal:baris_akhir,kolom_awal:kolom_akhir); v_wind_ind=v_wind(baris_awal:baris_akhir,kolom_awal:kolom_akhir);
end % if
% definisikan parameter untuk resample
dx_r=0.04;
lat_r_north = -5.0; % batas utara
lat_r_south = -10.0; % batas selatan
lon_r_west = 100.0; % batas barat
lon_r_east = 115.0; % batas timur
[lon_r,lat_r]=meshgrid(lon_r_west:dx_r:lon_r_east,... lat_r_south:dx_r:lat_r_north); %[lon_r_n,lat_r_n]=[lon_r_west,lat_r_south]; % interpolasi
% catatan:
% tersedia 4 metode interpolasi:
% 'nearest' - nearest neighbor interpolation
% 'linear' - bilinear interpolation
% 'cubic' - bicubic interpolation
% 'spline' - spline interpolation
u_wind_ind_r=interp2(lon,lat,u_wind_ind,lon_r,lat_r,'spline'); v_wind_ind_r=interp2(lon,lat,v_wind_ind,lon_r,lat_r,'spline');
% hitung magnitude
u_mag=sqrt(u_wind_ind_r.^2+v_wind_ind_r.^2); save mydata.out;
% baca data garis pantai yang didapat dari coastline extractor
cline=load('27050.dat'); cline(find(cline(:,:)==0))=nan; % plot vektor angin
sel=10;
lont=lon_r(1:sel:130,1:sel:376); latt=lat_r(1:sel:130,1:sel:376); uwindt=u_wind_ind_r(1:sel:130,1:sel:376); vwindt=v_wind_ind_r(1:sel:130,1:sel:376);
Sama kan dengan yang sebelumnya
File ini didapatkan dari mendownload di
http://rimmer.ngdc.noaa.gov/coast/ dengan men-set terlebih
dahulu domain yang kita butuhkan
Tentukan sendiri banyaknya vector, disesuaikan dengan
ukuran domain, besar kecilnya vector dapat juga di set di
sel=10, semakin besar sel semakin besar ukuran vector.
-
quiver(lont,latt,uwindt,vwindt,'k') %quiver(lon_r,lat_r,u_wind_ind_r,v_wind_ind_r,'k') hold on
pcolor(lon_r,lat_r,u_mag);shading('interp') plot(cline(:,1),cline(:,2),'k') hold on
save('d:\nina\angin\14NOV.dat','lon','lat','u_wind_ind','v_wind_ind','-ASCII');
% title('10 m Wind Speed, 1 January 2006 00:00 GMT')
axis equal
axis([104.9 115 -10 -5]) caxis([0 10]); h=colorbar('h','location','eastoutside');
set(get(h,'title'),'String','Wind Speed (m/s)'); title('Kecepatan Angin Permukaan Mei 2008') filename = 'tesy';
print ('-dbmp', filename);
Run menggunakan peruntah F5.
Dan langsung akan mendapatkan file 14NOV.dat dan gambar seperti ini :
Gambar contoh hasil vektor angin pada MATLAB.
Data 14NOV.dat akan berbentuk tidak beraturan dan harus kita olah terlebih dahulu untuk dijadikan
input. Bentuknya : row awal lon, berikutnya lat, berikutnya u, berikutnya v. Jumlah row adalah selisih lat
max lat min dibagi 2,5. Jumlah kolom adalah selisih lon max dan lon min di bagi 2,5. Kemudian arahnya
terbalik. Row paling akhir adalah data data di bagian atas data sebenarnya. Hal ini harus dilakukan
manual untuk mengurangi kesalahan fatal.
Ubah nilai untuk penamaan di arah x dan y, disesuaikan saja
untuk tampilan yang lebih baik
Jangan lupa ubah nama-nama settingan
Save data ke dalam bentuk ascii dengan format data lon, lat, u, v
top related