気候値データ([データの説明]を
地図上に表示する例として、
まず、この授業の他の実習
(雨量計観測値の地図表示など)
でも扱っている東南アジア大陸部(インドシナ半島)を
含む、北緯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の略のつもりである。
それ以外の地域を対象とする場合、
あるいは東南アジアの複数の地域の図をそれぞれ作りたい場合は、
適当な名前を考えて変更してほしい。