Saturday, 21 June 2014

Menampilkan Globe dan Membuat Animasi Dengan Matlab dan GMT

Selain membuat peta 2 dimensi biasa, GMT juga dapat membuat peta berbentuk globe. Ini dapat kita atur dengan memilih proyeksi yang tepat, yaitu dengan tipe proyeksi Azimuthal. Pada contoh berikut saya menggunakan proyeksi Orthographic yang merupakan salah satu jenis dari tipe proyeksi Azimuthal. Data yang dipakai pada contoh berikut adalah data topografi ETOPO5 dan data seismic hazard dari GSHAP. Data dapat didownload di link berikut:


Pertama buatlah script berikut:

set F=globe.ps

#Proyeksi orthographic menggunakan -JG, 120 adalah bujur
#0 adalah lintang, dan 6i adalah lebar peta
psbasemap -JG120/0/6i -R-180/180/-85/85 -Ba30g10WSne:: -K -Y3.5 > %F% 

#Menampilkan data bathimetri dan topografi
grdimage -JG -R -K -O -Qi  data.cdf  -Celev.cpt >> %F%

#Menampilkan data seismic hazard
grdimage -JG -R -K -O -Qi  gshap_globe.grd -Cgshap_original.cpt >> %F%

#Menampilkan batas pantai dan negara
pscoast -JG -R -K -O -Dl -Wthinner -Na/thinnest,brown  >> %F% 

#Menampilkan skala warna peta
psscale -D8/-1/20/0.4h -Cgshap_original.cpt -B:"Peak Ground Acceleration (m/s@+2@+)": -O -Y-0.3 -G0/6>> %F%

#Mencetak peta menjadi image
ps2raster %F% -A -P -TG

Simpan dengan ekstensi ".bat" dan jalankan.

Kita juga dapat membuat animasi globe tersebut dengan kombinasi Matlab dan GMT. Pertama buatlah script Matlab berikut:

clear all;clc;
n=0;
m=struct('cdata',[],'colormap',[]);
for i=180:-1:-179;
    filenames='globe.bat';
    f = fullfile(filenames);
    fid = fopen(f,'w');
    tmp=sprintf('set F=globe.ps\n');
    fwrite(fid,tmp); 
  tmp=sprintf('psbasemap -JG%f/0/6i -R-180/180/-85/85 -Ba30g10WSne:: -K -Y3.5 > %%F%% \n',i);
    fwrite(fid,tmp);
    tmp=sprintf('grdimage -JG -R -K -O -Qi  data.cdf  -Celev.cpt >> %%F%% \n');
    fwrite(fid,tmp);
   tmp=sprintf('grdimage -JG -R -K -O -Qi  gshap_globe.grd -Cgshap_original.cpt >> %%F%% \n');
    fwrite(fid,tmp);
  tmp=sprintf('pscoast -JG -R -K -O -Dl -Wthinner -Na/thinnest,brown  >> %%F%% \n');
    fwrite(fid,tmp);
  tmp=sprintf('psscale -D8/-1/20/0.4h -Cgshap_original.cpt -B:"Peak Ground Acceleration (m/s@+2@+)": -O -Y-0.3 -G0/6>> %%F%%\n');
    fwrite(fid,tmp);
    tmp=sprintf('ps2raster %%F%% -A -P -TG -E100 -F%.0f',i);
    fwrite(fid,tmp);
    fclose(fid);
    !globe.bat
    n=n+1;
    file=horzcat(num2str(i),'.png');
    a=imread(file);
    m(n)=im2frame(a);
end
movie2avi(m,'gshap.avi','compression','None','fps',20);

PERHATIAN!!!! Script diatas jika dirunning akan memakan waktu yang lama. Dengan menggunakan Processor Pentium Dual Core @1.86 GHz dan RAM 4 GB memakan waktu sekitar 2.5 jam.

Berikut adalah hasilnya:



Output dari script diatas adalah file bernama gshap.avi. File ini berukuran sangat besar, hingga 600 MB. Anda dapat mengkompresnya menggunakan Windows Movie Maker atau software yang lain.

Sekian untuk kali ini. Semoga bermanfaat.


0 komentar:

Post a Comment