はじめての気象データ処理

このブログでは、気象を学ぶ方でも超初心者を対象として気象データ解析のための基礎基本を解説します。主にFORTRAN、Python、GMT、GrADSのTipsをご紹介します。

複数ファイルを次々に読み込みGMTで作図したい

みなさんこんにちは。おこめまんです。

今回はGMTでの作図を行う際のTipsを扱います。

 

はじめに

この記事を読んでいる皆さんは気象データをGMTを用いて図化することが多いかと思います。

 

このとき「日時のみが異なるifile(描画する元データの入っているファイル)を繰り返して(ループをかけて)シェルスクリプトで指定してGMTで図化したいなあ」と思っていませんか。

 

描きたい図が少ない場合は気にならないかもしれませんが、大量の図を描く場合は大変です。シェルスクリプトでifileをいちいち指定し直して描画するのでは時間がかかってしまいますよね。ぜひとも自動化したいものです。

 

 

今回は、「日時のリストを作成してGMTでつぎつぎに描画する方法」を伝授しましょう。

 

今回ループで開きたいifile

2018-01-05_00-00-00.txt

2018-05-20_01-00-00.txt

2018-03-31_23-00-00.txt

 

例として、ファイルの名前が年、月、日、時、分、秒から構成されるifileを扱います。

ただし、各ファイルのデータの構成は同様のものとします。

 

シェルスクリプト

※適当なシェルスクリプト「example.sh」の中身を以下の通りとします。

----------------------------------------------------------------------------------------------------------

#!/bin/bash

 

cat << EOF > date.txt
2018 01 05 00 00 00

2018 05 20 01 00 00

2018 03 31 23 00 00
EOF

 

while read YEAR MONTH DAY HOUR MINUTE SECOND
do

### 作図する日時を表示 ###
echo "draw date ---> " $YEAR $MONTH $DAY $HOUR $MINUTE $SECOND

 

### 図化スクリプト ###

ifile=$YEAR'-'$MONTH'-'$DAY'_'$HOUR'-'$MINUTE'-'$SECOND'.txt'

 

psbasemap ~~~~~~~~~

(省略) 

ps2raster ~~~~(convert~~~~~)

 

done < date.txt

----------------------------------------------------------------------------------------------------------

シェルスクリプトの説明

cat << EOF > date.txt
2018 01 05 00 00 00

2018 05 20 01 00 00

2018 03 31 23 00 00
EOF

日時を各項ごとに分けてdate.txtに書き込みます。いちいちExcelでこのリストを作成することは面倒ですので、シェルスクリプトで作成しています。

 

cat << EOF > date.txt

(ここに1行ずつ日時を記述します。このとき、各項をスペースで区切りましょう。)

EOF

 

注意!!

2018 03 31 23 00 00

(ここ!空行ダメ!)
EOF

日時とEOFの間に空行を作らないようにしましょう。

 

-------------------------------------------------------------------------------------------------

while read YEAR MONTH DAY HOUR MINUTE SECOND
do

~~~~~

~~~~~

done < date.txt

この部分で先ほど書き込んだdate.txtを1行ずつ読み込み、処理を行います。

具体的には、date.txtをYEAR MONTH DAY HOUR MINUTE SECONDとして1行ずつ読み込み、doからdoneまでの作図プログラムを実行します。

 

ifile=$YEAR'-'$MONTH'-'$DAY'_'$HOUR'-'$MINUTE'-'$SECOND'.txt'

で開くファイルを指定します。date.txtを1行ずつ読み込むため、日時の異なるファイルがループで開かれます。

 

最後に

いかがでしたか。この手法を使えば、大量のファイルでも次々に図化することができるはずです。ぜひお試しください!