平均水温画像を作成する


   

今回使うファイルは次の3つの水温画像(GRSST)。

2012年4月平均水温画像

2012年5月平均水温画像

2012年6月平均水温画像

※画像サイズは 141×121
※緯度経度情報:25.09°N〜55.05°N、120.17°E〜155.14°E
※4バイトのバイナリファイル





本課題の内容
上の図は2012年4月~6月水温画像である。
上記のリンク先から画像データ(4バイトバイナリ)をダウンロードし、前回のスクリプトを応用して春期の平均画像をつくる。

考え方:
 4月〜6月、それぞれの2次元のデータを格納するために、3次元の変数 sst(141,121,3)を作る。
  sst(*,*,1)には4月のデータ
  sst(*,*,2)には5月のデータ
  sst(*,*,3)には6月のデータ
 が入るようにする。 


 
 各ピクセル毎に、4〜6月の平均値を計算して、msstという変数に入れる。


1)まず上記リンク先の3つの海面水温画像をダウンロードする.
2)CygwinMsysFortranを開き,1)でDLした海面水温画像があるディレクトリへ移動する.
3)「list.dat」というファイルを用意する.やり方は以下のUnixコマンドでOK.

   ls 2012*.flat >! list.dat
 ※「cat list.dat」と打って,3つの水温画像のファイル名が端末に出ればOK.

4)フォートランスクリプトの作成.4つの流れに大きく分けられる.
 @フォートランスクリプトの宣言文:ファイル名のための文字型変数,水温データのための実数型変数を予め用意.
  character*120 ifl(3)
  real dum(141,121)  <--- とりあえず海面水温画像一枚分のデータを確保する変数.ダミー変数というつもり
  real sst(141,121,3)  <---変数dumからデータを引き継ぎ,海面水温画像3枚分を格納する変数
  real msst(141,121)  <---最終的に計算する水温の平均画像を格納する変数

 Aopen文とDOループで,3)で作ったlist.datを読み込む=変数”ifl”に水温画像のファイル名を入力する

 BDOループとopen文で,水温画像データを変数"sst"に入力する.このとき,変数"dum"も使う

 CDOループを用いて,平均値を計算し,
絶対温度から通常の摂氏に変換し、変数"msst"に入力する

 Dopen文,write文を用いて平均画像が入力されたmsstをバイナリ形式で出力する.
  出力ファイル名は
2012.spr.msst.141x121.flat にしましょう



 注意点:
 1)4バイトなので,宣言文ではrealを用いる.
 2)データは絶対水温(K)で表されている.
 3)データが無い陸上での値は-999. 
 4)計算した
データのバイナリ形式出力は,基本的にはデータ読み込み部分と同じ.
   ただし,文番号を変えること,およびread文ではなくwrite文にすること.



出力したデータの確認方法

MATLABで確認する。 計算された画像を描画するMATLABスクリプトはここ。このスクリプトを使用すると以下の図が現れる。


先輩達が提出した平均画像をマッピングした結果(緯度経度の範囲・元データは異なります)


 
補足情報と課題


現在,
衛星画像プロダクトもしくは衛星プロダクトを応用したデータはあらゆる所で準リアルタイムで公開されている.

神奈川県水産技術センター 海況図データベース 関東・東海海況速報:海面水温,黒潮
NASA Oceancolour Web L3 browser :MODISの海面水温,海面クロロフィル-a濃度など
NASA/JPL PO.DAAC State of the Ocean :海面水温,クロロフィル,海上風など
ちょっと毛色が違うが・・
GPV気象予報
※特に海洋学実習T参加者は,乗船する前に東京湾,相模湾の海況を調べておこう.

(課題)
得られた平均海面水温画像 2012.spr.msst.141x121.flat における
緯度方向 d(SST)/d(lon)と経度方向の勾配
dSST/d(lat)計算して、
勾配が最も大きい海域の緯度・経度情報を抽出しよう。