1章で述べたように,
既存の衛星による観測機では降雨の鉛直構造は観測できなかった.
このデータセットにはTRMMの現時点で唯一の衛星搭載降水レーダPRによって観測されたデータを格納されている.
これによって熱帯全域における鉛直方向の降雨プロファイルを導くことができる.
今回用いたデータセットは格子点データである. NASDA(2000a)によると, 元々のデータは格子点データではなく, PRがスキャンした衛星軌道上の瞬時値に緯度経度情報等を付加したデータである. このデータはASCII形式に展開すると軌道1周分で約350MBほどの大きさとなる. TRMM/PRは解像度が高いのだがそれに伴いスキャンできる範囲も狭いため, 全球がカバーされるほどのデータを得るには約10日間のデータを足し合わせる必要がある. TRMMは1日で地球を16周するので, 全球のデータ量は膨大なものとなる. これはある特定の時刻における観測値を知りたいときには良いが月積算降雨量などある程度長い時間スケールでの値を見積もるような時には非常に扱いにくい. そのためこのデータセットでは付加される緯度経度情報から対応する格子点を求め, それぞれのセルに値を格納し格子データとしている. こうすることでデータサイズを小さく, かつ取扱を容易にしている.
このデータセット内に格納されるデータの形式は2byteのバイナリデータである. 本来, TRMM衛星は観測するデータの標準フォーマットとしてHDF(Hierahical Data Format)と呼ばれるデータフォーマットを地球観測衛星データ用に拡張したHDF-EOS形式を採用している. HDFは米国イリノイ州立大学のNCSA (National Center for Supercomputing Applications)が開発したフォーマットで「階層的データフォーマット」と訳される. その特徴は「階層的」という名称が示すようにファイル内部にディレクトリ構造を持ち, 各々の変数を分類してファイル内に格納できることである. だがHDF形式のデータは入出力ライブラリ等の取扱いが難しく,手軽に利用するというわけにはいかない. そのためこのデータセットでは元のTRMMデータをバイナリデータにして格納している. こうすることで利用者は特別なライブラリや知識を導入することなく, 格納されるデータを読むことができる.
ヘッダは80文字×7行の大きさである. それぞれの行には以下に示す内容の文字配列が格納されている.
1行目: | データ種別 |
2行目: | アルゴリズム |
3行目: | 作成者 |
4行目: | データの期間 |
5行目: | 緯度範囲 |
6行目: | 経度範囲 |
7行目: | 格子数 |
データ部には月間降雨量データが2byte INTEGERで格納されている. 各変数はデータ部の先頭から以下の順に格納されている. 図2.1にファイル内部の変数の格納構造の模式図を示す. なお()内の記号は図2.1における各データを表す.
ヘッダ部 | データ部[pr_0] | データ部[pr_2] | データ部[pr_4] | データ部[pr_6] | データ部[pr_c_2] | データ部[pr_c_4] | データ部[pr_c_6] | … |
図2.1: データ内部の構造の模式図. 左端がファイルの先頭である.
TRMM/PR/Global algorithm:NASA TRMM/PR 3A25 create:NASDA time:2000/1 Lat:38S--38N Lon:0E--180--0.5W grid:720x153; (1,1)=(0E,38S) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210411716 2 0 0 0 0 1 0 0 0 0 0 0 0 0 114 036232333341841201121 1 4 5 5 2 1 3 0 0 0 0 0 411 4 714 1 3 0 3 0 8 0 0 0 0 0 0 0 3 7 6 41112 61319 8 84316 4 0 6 81231 2 2 0 0 0 0 0 111 411 6 0 7 0 0 0 0 0 0 0 0 0 0 4 51413 911 6 627 2 8122231 8 3 125 211 0 0 0 0 4 0 0 022 9 0 0 1 6 210 0 4 7 0 0 0 0 0 9 617 61123 1 916 951 7121114 5 1 1 5 3 2 0 0 0 0 0 0 0 0 2 0 0 0 3 1 0 0 110 0 016 0 1 9 2 2 213 828 820 3 9 22010 2 111 3 1 5 8 0 0 0 0 0 0 1 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 6 0 513 217 0 4 3 3 7 222 410 1 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 3 6 014 2 1 3 3 11224 3 1 0 140 3 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 017 0 3 0 8 1 5 0 8 1 2 2 236 33120 0 5 0 1 211 4 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 3 0 0 0 316 5 1 42021 2 1 0 11010 5 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 017 1 2 0 22520 211 3 2 0 033 312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 4 2 1 5 1 1 512 212 5 4 114 3 2 2 1 8 138 0 0 0 0 0 ... 以下省略 |
図2.2: バイナリデータから数値を取り出しASCII形式で出力するF77のプログラム. |
program rd_gpr character*80 header(7) character*80 fname integer*2 pr(720,153) integer*2 pr_2(720,153) integer*2 pr_4(720,153) ... 中略 ... c fname='gpr00100' open(80,file=fname,status='old',form='unformatted') read(80) header read(80) pr read(80) pr_2 read(80) pr_4 ... 中略 ... write(*,*) header do j=153,1,-4 write(*,'(200I2)') (pr(i,j)/10,i=1,720,12) end do |
図2.3: 図2.2の出力を得るプログラム |