2011年 8月 1日 掲載
今回は,grdimage の出力に陰影をつけて, メリハリの効いた立体感のある図を描く方法を解説する.
まずは,サンプルデータを作る. 次のような AWKスクリプト crater.awk を書き, 直径 5,高さ 1 のクレーター状の地形データ crater.txt を作ってみた.
$ cat crater.awk BEGIN{ for(x = -5; x <= 5; x += 0.03125){ for(y = -5; y <= 5; y += 0.03125){ r = sqrt(x^2 + y^2) if(r < 1.5){ z = 0 }else if(r < 2.5){ z = r - 1.5 }else if(r < 3.5){ z = 3.5 - r }else{ z = 0 } print x, y, z } } } $ awk -f crater.awk > crater.txt
この地形の断面は二等辺三角形になっている.
$ awk '$1==0{print $2, $3}' crater.txt > profile.txt $ psxy profile.txt -Jx1 -R-5/5/-2/2 -Ba2 > profile.eps
このデータを使って,grdimage で地形図を描いてみる. カラーパレットは,範囲が 0〜1 の copper を使った.
$ xyz2grd crater.txt -Gcrater.grd -R-5/5/-5/5 -I0.03125 $ makecpt -Ccopper -Z > c.cpt $ grdimage crater.grd -Jx1 -Cc.cpt -Ba2 > crater.eps
で,できあがった図だが…,リング状の地形があるのはわかるが, なんかもっさりしていて,断面図に見られるような三角っぽさがわからない.
そこで,この図に陰影をつけてみたいのだが, そのためには,標高データのほかに各グリッドの明暗のデータが必要となる. 各グリッドの明暗を決める方法であるが, 光源方向から見て上り坂で明るく,下り坂で暗くなるので, 光源方向から見た傾きを計算すればよい(下図). 傾きが正のグリッドを明るく,負のグリッドを暗くするのである.
各グリッド面が,ある方角から見てどの程度傾いているかを計算するコマンドが,grdgradient である. grdgradient では,最低限,元データの grdファイル名, 計算結果の grdファイル名,どちらから傾きを計算するかの方角を指定する必要がある. 計算結果のファイル名は -Gオプションで指定し,方角は -Aオプションで指定する. 方角の値は,北(y軸正方向)が 0で,時計回りに度単位であたえる.
では,北から見た傾きを計算してみよう.
$ grdgradient crater.grd -Ggradient.grd -A0
計算結果 gradient.grd の分布は,以下のようになっている.
$ makecpt -Cpolar -Z > p.cpt $ grdimage gradient.grd -Jx1 -Cp.cpt -Ba2 > gradient.eps
赤が正,青が負である. 北半分の外側と,南半分の内側が正(上り坂), 北半分の内側と,南半分の外側が負(下り坂)になっているのがわかる.
この傾斜の grdファイルを,grdimage に -Iオプションであたえると,陰影のある図ができあがる.
$ grdimage crater.grd -Jx1 -Cc.cpt -Igradient.grd -Ba2 > crater.eps
山裾の立ち上がりや稜線がシャープで,斜面がツルツルであることがよくわかる図になった.
光源の位置を変えてみよう. -A90 で,東(X軸正方向)から光が当たった図になる.
$ grdgradient crater.grd -Ggradient.grd -A90 $ grdimage crater.grd -Jx1 -Cc.cpt -Igradient.grd -Ba2 > crater.eps
-A180 で,光源が南になる.
$ grdgradient crater.grd -Ggradient.grd -A180 $ grdimage crater.grd -Jx1 -Cc.cpt -Igradient.grd -Ba2 > crater.eps
-A270 で,光源が西になる.
$ grdgradient crater.grd -Ggradient.grd -A270 $ grdimage crater.grd -Jx1 -Cc.cpt -Igradient.grd -Ba2 > crater.eps
[ KDOホームにもどる] [ いちからはじめる GMT インデックスにもどる ]
(C) 2011 KDO