いちからはじめる GMT その63 - grdview -I, -G

2012年 3月 1日 掲載


grdviewコマンドの続きである. 今回は,陰影をつける方法と,表面に別の図を描く方法を解説する.

まずは,陰影をつける方法であるが, これは,grdimage でのやり方と同じで, grdgradientコマンドで傾斜を計算しておいて, -Iオプションで指定すればよい.

$ awk 'BEGIN{for(x=-6;x<=6;x+=0.125)for(y=-6;y<=6;y+=0.125)print x,y,exp(-(x^2+y^2)/8)*5}' > gauss.txt
$ xyz2grd gauss.txt -Ggauss.grd -I0.125 -R-6/6/-6/6
$ grdgradient gauss.grd -Ggradient.grd -A135 -N
$ makecpt -Ccool -T0/5/5 -Z > cl.cpt
$ grdview gauss.grd -Jx1 -Jz1 -E45/30 -Qs -Ccl.cpt -Igradient.grd > gauss.eps

陰影図

ガウス分布の山に,陰影をつけてみた. grdgradientコマンドの -Aオプションで指定する傾斜の計算の方位と, grdviewコマンドの -Eオプションで指定する視点の方位の関係に注意しよう. 上の例では,南東(135度)から光が当たった山を, 北東(45度)から見ているので,陰が右にできている.

次は,表面に別の図を描く方法である. これは,地形などの立体的な面を描く grdファイルとは別に, 表面に描く図の grdファイルを用意して -Gオプションで指定することで実現できる. -Gオプションで指定する grdファイルは,「drape file」と呼ばれている. drape とは,「覆う」という意味である. 対して,地形などの面を描く grdファイルは「relief file」と呼ばれる.

では,さっそくやってみよう.relief file には,先ほど作ったガウス分布の山を使う.

$ grdview gauss.grd -Jx1 -Jz1 -E45/30 -Qs -Ccl.cpt > gauss.eps

ガウス分布

drape file は,sin(x)cos(y) という関数で作ってみた.

$ awk 'BEGIN{for(x=-6;x<=6;x+=0.125)for(y=-6;y<=6;y+=0.125)print x,y,sin(x)*cos(y)}' > sincos.txt
$ xyz2grd sincos.txt -Gsincos.grd -I0.125 -R-6/6/-6/6
$ makecpt -Cpolar -Z > pl.cpt
$ grdview sincos.grd -Jx1 -Jz1 -E45/30 -Qs -Cpl.cpt > sincos.eps

sin(x)*cos(y)

これを,ガウス分布の山の表面に描くと,こうなる↓.

$ grdview gauss.grd -Jx1 -Jz1 -E45/30 -Gsincos.grd -Qs -Cpl.cpt > sincos.eps

sin(x)*cos(y) on exp(-(x^2+y^2)/8)*5

なかなかおもしろい図になった.


[ KDOホームにもどる] [ いちからはじめる GMT インデックスにもどる ]


(C) 2012 KDO