気候値データ([データの説明]を
地図上に表示する例として、
まず、この授業の他の実習
(雨量計観測値の地図表示など)
でも扱っている東南アジア大陸部(インドシナ半島)を
含む、北緯8〜32度、東経93〜110度の範囲を表示する例文を
/pub/sfc/earthobs/example/normclim/map/に用意した。
いずれも、/pub/sfc/earthobs/data/jma/norm2002/work1/
にあるnormtemp.txtまたはnormprec.txtを読み、
Awkプログラムで処理して、GMTのpsxyやpstextを
使って作図している。
いずれも、GMTのpscoastを使って海岸線・川・国境線を、
また緯度経度5分(分は度の1/60)ごとの標高データをGMTのgrdcontourで処理して地形の情報を書きこんでいる。
できあがるPostScriptファイルの大きさは1つの図ごとに約0.4メガバイトになる。
PostScriptファイルを小さくしたい場合、あるいは図をすっきりさせたい場合は、
pscoastのオプション-Dl
(雨量計データの例文では-Di)を-Dcにかえて
海岸線を単純化し、
grdcontourで
緯度経度5分の標高データg5mnsea.grdの代わりに
緯度経度30分平均の標高データglobe30m.grdを読むようにして
等高線を単純化するとよい。
地図の図法は、横に経度、縦に緯度をそれぞれ等間隔に表示しただけの 簡単なもので、地図投影法の用語でいえば「正距円筒図法」である [地理情報学の教材の地図投影のページ参照]。
図の範囲にある観測地点の位置に一定の記号(赤の+印)をかき、
その下にWMO地点番号(5けたの数字)をかく。
実行は、csh wmoid_seasia.csh。
これでwmoid_seasia.psができる。
図の範囲にある観測地点の位置に一定の記号(赤の+印)をかき、
その下にWMO地点番号(5けたの数字)をかく。
実行は、csh stname_seasia.csh。
これでstname_seasia.psができる。
ただし、あらかじめ、中で使われているAwkプログラムstname.awkも
シェルスクリプトと同じところから作業ディレクトリにコピーしておく必要がある。
図の範囲にある観測地点の位置に、 月降水量を階級わけしてそれに対応する記号をかき、 その下に月降水量の数値(数字)をかく。
実行は、たとえば7月の場合ならばcsh p_seasia.csh 07。
これでp_seasia07.psができる。
(07でなく7としてもさしつかえないはず。
ただし、できるファイル名は違ってくる。)
図の範囲にある観測地点の位置に、 年降水量を階級わけしてそれに対応する記号をかき、 その下に年降水量の数値(数字)をかく。 階級の境の値は、月降水量の場合の12倍とした。
実行は、csh p_seasia_ann.csh。
これでp_seasia_ann.psができる。
図の範囲にある観測地点の位置に、
月平均気温を階級わけしてそれに対応する記号をかき、
その下に月平均気温の数値(数字)をかく。
(階級はもっと広い地域の気温を想定して決めたため、
この地域内では同じ記号になるところが多くなってしまった。
不満な人は変えてみてほしい。
ただし、図中に記号をプロットするためのpsxyに
の前に呼び出しているawkに与えている条件と、
凡例のところでpstextに与えている文字列との
対応は自動化されていないので、対応に注意して変更する必要がある。)
実行は、たとえば7月の場合ならばcsh t_seasia.csh 07。
これでt_seasia07.psができる。
ここで読ませているファイルでは
12月の平均気温の列の次に年平均気温の列があるので、
月のところを13とすると、年平均気温を表示することができる。
ただし、表題にmonth = 13と表示されてしまう。
不満な人は、p_seasia_ann.cshを参考にして、
pstextでかかせている文字列を修正してほしい。
基本的には、シェルスクリプトのはじめのほうに、シェル変数
xmin, xmax, ymin, ymaxで
それぞれ経度(東経を正)の下限・上限、緯度(北緯を正)の下限・上限を設定している
ので、その数値を変えるだけで他の地域用になるようにしてある。
2005年10月29日に置いたシェルスクリプトでは、 凡例や表題を表示するところでpsxyやpstextに "here document"方式 (<<の指定に続く行)で与えている座標値も書きかえる必要があったが、 2005年11月3日、シェルスクリプトを改訂し、書きかえなくてすむようにした。 このため、別のシェル変数xmin0,xmax0,ymin0,ymax0を導入した。こちらの値は変更しないでよい。
ただし、左右の経度間隔と上下の緯度間隔の比率が例文と同じならば変更はそれだけですむのだが、
違う場合には、図のレイアウトが崩れたり、図の一部が紙面からはみ出すことがある。
その対策として、
set PROJ =...の行の
-JQの中で指定している図の幅(現在は18と与えている)など、
あちこちを変更する必要があるかもしれない。
また、ここで背景用に使っている標高データは、
U.S. National Geophysical Data CenterによるGLOBEデータセット
[簡単な紹介: 別ページへ]をもとに
増田が編集したものだが、
緯度経度5分間隔のものは
今のところインドシナ半島付近(g5mnsea.grd)と
日本付近(g5mnjp.grd)しか
用意していないので、その外の領域では等高線が空白になってしまう。
要望があれば他地域についても用意するが、
緯度経度30分平均の標高データglobe30m.grdは全球について
用意してあるので、当面そちらを使ってほしい。
なお、シェルスクリプトおよび
set OUTPUT =で指定しているPostScriptファイルの名前の
中のseasiaは、South East Asiaの略のつもりである。
それ以外の地域を対象とする場合、
あるいは東南アジアの複数の地域の図をそれぞれ作りたい場合は、
適当な名前を考えて変更してほしい。