Monday 24 April 2017

Membuat Animasi Peta Seismisitas

Kali ini saya akan berbagi cara membuat animasi dari peta seismisitas. Pada animasi ini, gempa akan muncul sesuai waktu kejadian dan gempa-gempa yang terdahulu lama kelamaan akan berubah transparansinya. Disini saya menggunakan GMT 5.3.1 di Windows 7. Animasi ini bisa juga dijalankan di Linux namun ada beberapa bagian yang harus dirubah. Sebelumnya pastikan di komputer anda telah terpasang program ImageMagick. Program ini akan saya gunakan untuk mengonversi kumpulan file image menjadi satu file GIF.


Pertama-tama buatlah file .bat berikut dan download file-file pendukung yang sudah ada di link-link dibawah ini kemudian jalankan :

>> set F=animasi.ps
>> set R=95.85/96.5/5/5.65
>> set JM=15
>> set data=data.txt
>> 
>> mkdir tmp
>> @echo off
>> #BARIS AWAL DATA SETELAH HEADER ADALAH BARIS KE 14
>> set start=14
>> set num2=1 
>> for /f "delims=*" %%a in ('gawk "END {print NR}" %data%') do set stop=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $1}" %data%') do set year=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $2}" %data%') do set month=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $3}" %data%') do set day=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $4}" %data%') do set hour=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $5}" %data%') do set minute=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-|.]" "NR==%start% {printf \"%%i\", $6}" %data%') do set second=%%a
>> 
>> #HITUNG JUMLAH DETIK
>> set /a z=(14-100%month%%%100)/12, y=10000%year%%%10000-z
>> set /a ut=y*365+y/4-y/100+y/400+(153*(100%month%%%100+12*z-3)+2)/5+%day%-719469
>> set /a waktu=ut*86400+100%hour%%%100*3600+100%minute%%%100*60+100%second%%%100
>> gawk "NR==%start%  {print %waktu%-25200,$0}" %data% > datatmp
>> 
>> :loop
>> set /a start= %start% + %num2%
>> if %start% GTR %stop% goto close
>> goto open
>> 
>> :open
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $1}" %data%') do set year=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $2}" %data%') do set month=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $3}" %data%') do set day=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $4}" %data%') do set hour=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-]" "NR==%start% {printf \"%%i\", $5}" %data%') do set minute=%%a
>> for /f "delims=*" %%a in ('gawk -F"[\t|:|-|.]" "NR==%start% {printf \"%%i\", $6}" %data%') do set second=%%a
>> set /a z=(14-100%month%%%100)/12, y=10000%year%%%10000-z
>> set /a ut=y*365+y/4-y/100+y/400+(153*(100%month%%%100+12*z-3)+2)/5+%day%-719469
>> set /a waktu=ut*86400+100%hour%%%100*3600+100%minute%%%100*60+100%second%%%100
>> gawk "NR==%start%  {print %waktu%,$0}" %data% >> datatmp
>> goto loop
>> 
>> :close
>> echo on
>> 
>> #MENAMBAHKAN WAKTU SATU JAM SEBELUM DATA AWAL DAN SATU JAM SETELAH DATA AKHIR DENGAN STEP 360 DETIK ATAU 6 MENIT
>> for /f "delims=*" %%a in ('gawk "NR==1 {print $1-3600}" datatmp') do set starteq=%%a
>> for /f "delims=*" %%a in ('gawk "END {print $1+3600}" datatmp') do set stopeq=%%a
>> set step=360
>> 
>> :loopeq
>> set /a starteq= %starteq% + %step%
>> if %starteq% GTR %stopeq% goto closeeq
>> goto openeq
>> 
>> :openeq
>> #MEMBUAT PETA SEISMISITAS
>> pscoast -R%R% -JM%JM% -Dh -W1 -K -Slightblue -Gpalegreen4 -B0.3 > %F%
>> psxy -R -JM sesar.gmt -K -O -W1,black >> %F%
>> psxy -R -JM jlnlokal.gmt -K -O -W1,gray >> %F%
>> psxy -R -JM jlnkolektor.gmt -K -O -W1,white >> %F%
>> psxy -R -JM jlnarteri.gmt -K -O -W2,khaki2 >> %F%
>> echo 96 5.32 Sigli | pstext -R -JM -O -K -F+f12,Bookman-Demi >> %F%
>> 
>> #SET TRANSPARANSI UNTUK DATA GEMPA YANG SUDAH TERJADI
>> gawk "{if ($1<=%starteq%) print $5,$4,$6,$7*0.04}" datatmp | psxy -R -JM -Sci -Ctabel.cpt -W1 -O -t80 -K >> %F%
>> gawk "{if ($1>%starteq% && $1<=%starteq%+%step%) print $5,$4,$6,$7*0.04}" datatmp | psxy -R -JM -Sci -Ctabel.cpt -W1 -O -t60 -K >> %F%
>> gawk "{if ($1>%starteq%+%step% && $1<=%starteq%+%step%+%step%) print $5,$4,$6,$7*0.04}" datatmp | psxy -R -JM -Sci -Ctabel.cpt -W1 -O -t40 -K >> %F%
>> gawk "{if ($1>%starteq%+%step%+%step% && $1<=%starteq%+%step%+%step%+%step%) print $5,$4,$6,$7*0.04}" datatmp | psxy -R -JM -Sci -Ctabel.cpt -W1 -O -t20 -K >> %F%
>> gawk "{if ($1>%starteq%+%step%+%step%+%step% && $1<=%starteq%+%step%+%step%+%step%+%step%) print $5,$4,$6,$7*0.04}" datatmp | psxy -R -JM -Sci -Ctabel.cpt -W1 -O -K >> %F%
>> gawk "BEGIN {print strftime(\"%%d-%%m-%%Y %%H:%%M:00 UTC\",%starteq%);}" | gawk "{print 96.35,5.6,$0}" | pstext -R -JM -O -F+f12,Bookman-Demi -K >> %F%
>> pscoast -R95/99/2/6 -JM4 -Dh -W1 -K -O -Slightblue -Gwhite -B3::wEsN --MAP_FRAME_TYPE=plain --FONT_ANNOT_PRIMARY=8p >> %F%
>> echo 95.85 5 > kotak
>> echo 95.85 5.65 >> kotak
>> echo 96.5 5.65 >> kotak
>> echo 96.5 5 >> kotak
>> echo 95.85 5 >> kotak
>> psxy -R -JM kotak -O -W1,red >> %F%
>> psconvert -A -Tg -P %F% -Ftmp\%starteq% -E100
>> 
>> goto loopeq
>> :closeeq
>> 
>> #KONVERSI KE FILE GIF DENGAN DELAY 10 (FPS=100/10=10) DAN LOOP 0 (KEMBALI KE AWAL)
>> convert -delay 10 -loop 0 tmp/*.png animasi.gif
>> del datatmp gmt.history kotak %F% 
>> rd /S /Q tmp

Proses ini akan memakan waktu yang cukup lama tergantung kemampuan komputer. Anda juga dapat menggunakan data gempa anda sendiri. Pada animasi diatas, saya mendownload data dari repogempa BMKG dan menggunakan data gempa Pidie Jaya yang terjadi akhir 2016 silam. Selamat mencoba. Salam.