トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

GMS5GOES9

Last update: 29 June 2011, 20:16 JST by A. Higuchi

GMS-5 SVISSR & GOES-9 Product

CEReS で受信・処理された GMS-5 SVISSR (Stretched Visible Infrared Spin Scan Radiometer),および気象庁よりランドライン取得した GOES-9 Imager データを同一の緯度経度直交フォーマットに変換して公開しています.

[29 June 2011] gms server のRAID故障,および消費電力削減のため,データ公開先を変更しました.ご迷惑をおかけします.ご理解のほど宜しくお願いします.

  公開 ftp site

  データ仕様

  • Satellites: GMS-5, GOES-9
    • GMS-5 SVISSR:可視(vis; 0.55-0.90μm),水蒸気(wv;6.5-7.0μm),熱赤外1(ir1:10.5-11.5μm),熱赤外2(ir2:11.5-12.5μm)
      • データ期間:1997年04月15日〜2003年05月23日(GMS-5は1995年6月21日より運用)
    • GOES-9 Imager:可視(vis, Ch.1, 0.52-0.72μm),中間赤外(Ch.2, 3.78-4.03μm),水蒸気(wv, Ch.3, 6.47-7.02μm),熱赤外1(ir1, Ch.4, 10.2-11.2μm),熱赤外2(ir2, Ch.5, 11.5-12.5μm)
    • データ期間:2003年05月22日05UTC〜2005年07月14日02UTC
  • GMS-5 & GOES-9 fine grid 共通 product 共通情報
    • 東経 100°〜170.022095°,北緯 65.020981°〜南緯65.2008446°
    • 空間解像度:赤道直下で約10km (東西 0.899322°,南北 0.899322°)
    • 画像サイズ:1448 ピクセル × 1448 ライン
    • バイナリ:1 byte 符号なし整数 (unsigned char)

  ファイル名ルール

gXXYYMMDDHH.tar.bz2
衛星号数を示す.g05: GMS-5, g09: GOES-9
YY: 年,MM: 月,DD: 日,HH: 時間(世界標準時なので, JSTにするには9時間足してください)

注意!: GMS-5 product の上記時間に関しては ”受信したデータの直前の正時”を示しています. ほかの静止軌道衛星データセットに関してはスキャン -> ファイル生成時の時間スタンプ作成となるため,CEReS GMS product に関しては1時間他のデータセットに比べ早くなっています! 解析時には十分にご注意下さい.

ftp サイトに置いてあるデータはtar で固めてbzip2 で圧縮しています. windows ではこの形式に対応しているソフトウェアで解凍して下さい. UNIX/Linuxでは,以下のコマンドで解凍できます.
$tar xjf gXXYYMMDDHH.tar.bz2 or
$bzip2 -d gXXYYMMDDHH.tar.bz2
$tar xf gXXYYMMDDHH.tar

  解凍後のファイル構成

解凍すると4つのセットのファイルが各4チャンネル分ありますので計 16ファイルが生成されるはずです.それぞれ4セットのデータセットに ついてこれから記載しますが,
gXXYYMMDDHH.*.ir1.gi ... ir1 channel
gXXYYMMDDHH.*.ir2.gi ... ir2 channel
gXXYYMMDDHH.*.wv.gi ... water vapor channel
gXXYYMMDDHH.*.vis.gi ... visible
でチャンネルを表現しています.* は後述する各セット毎に変化します.

  各データセットの説明

ブラウズ用(Quicklooks) データセット

解析用としては使わないと思いますが,画像を見る(確認する)上では有益なデータであると思います. 下での説明のファイル名は直前で記載した各セット毎の(*)の部分に相当します.

  • 日本付近のブラウズファイル (jp)

ファイル名例:gXXYYMMDDHH.jp.ir1.gi
緯度経度範囲: 東経 123°〜156°,北緯 22°〜 49°,Polar Stereo 図法
データサイズ: 512 x 512,バイナリ:1byte integer (unsigned char)ir1&2, wv: Tbb -100 (K), shorelines and lat. & long. lines also added on image

  • Full-disk ブラウズファイル (br)

ファイル名例:gXXYYMMDDHH.br.ir1.gi
緯度経度範囲:東経77°〜西経158°(202°),北緯55°〜南緯51°
データサイズ:512 x 512,バイナリ:1byte integer (unsigned char)ir1&2, wv: Tbb -100 (K), shorelines and lat. & long. lines also added on image
このイメージと同様の画像が全て http://quicklooks.cr.chiba-u.ac.jp/~brows/ で閲覧できます.

解析用データセット

研究用に物理量換算ができるよう生成されたデータセットです. このデータを使うことになるかと思います.各ファイル内の構成については後述します.

  • Rough grid data (ro)

ファイル名例: gXXYYMMDDHH.ro.ir1.gi
緯度経度範囲: 東経77°〜西経158°(202°),北緯55°〜南緯51°
データサイズ:580 x 580,バイナリ:1byte integer (unsigned char)

  • Fine grid data (fi)

ファイル名例:gXXYYMMDDHH.fi.ir1.gi
緯度経度範囲:東経 100°〜170.022095°,北緯65.020981°〜南緯65.2008446°
データサイズ: 1448 x 1448,バイナリ: 1byte integer (unsigned char)

各サブセット(特に解析用データセット)のデータ構造

上述したデータセットはヘッダ(80byte),データ本体,フッタ (lookup table; 解析用データセットのみ) となっています.
header (80 byte) data (1448 pixels x 1448 lines x 1 byte = 2096704 byte; fine grid data) Footer (lookup table)
ヘッダには計測日付情報が含まれていますが,ファイル名そのものがメタ情報と なっていますので,あえてheader情報を読む必要性は無いかと思います. データ本体を読み取るためには最初の80byte をスキップし,データ本体分を 1byte 符号なし整数で読み取ればokです. C のサンプルをここsample-gms-data.c(757)に置いておきます.

  look up table (CCT値を物理量に換算するためのテーブル) の抽出

Windows (MS-C)でのサンプルプログラム

当センター近藤教授によって作成されたMS-Cでのサンプルプログラム群があります.
使用環境:Microsoft Visual C++ 6.0
http://dbx.cr.chiba-u.jp/gdes/sid/GMS_gi_format.html より抜粋

  • GETCVYBL (Get Convert Table; getvtbl.c(636))

GMSの各センサーの値は8ビットで格納されていますが、それをアルベド、 輝度温度に変換するプログラムです。ヘッダー、イメージ、 トレーラーで校正される画像ファイルの中のトレーラーにテキストで格納されています。 校正テーブルの格納位置が時々ずれることがあるので、 ユーザーの皆様にはご迷惑をおかけしました。このプログラムではノミナルな位置から ±2バイトの範囲を検索するようにしましたので、バイトずれの問題は解決されました。 出力ファイルはテキストで、DN VIS IR1 IR2 WV の順に0〜255のDN (Digital Number) に対応するアルベド、輝度温度が格納されます。 VISは0〜63の64段階ですので、64以上のDNに対応するアルベドは 0が書き込まれています。

校正表を読み込み、giファイルから、VIS、IR1、IR2、WVの値を出力するプログラムです。 変数は unsigned short で出力され、アルベドは0.1%、輝度温度は0.1度 (K) で格納されています。例えば、12.3%のアルベドは123、298.7Kは2987 で格納されています。必要に応じて書き直してください。

解凍からアルベド、輝度温度抽出までを自動化するバッチファイルです。 ここでは、GNU-TAR、GZIP95を使用しています。
注)gzip95は古くなりました。GNU-gzip等がありますので、そちらをお使いください。
さらに註)圧縮形式が Z で圧縮したものを tar で固めた旧形式ではなく, tar で固めて bzip2 で圧縮した形式 (*.tar.bz2)ですので, 上記バッチファイルはwindows 上のコマンドプロンプト上でのバッチ処理の組み方 の例として見てもらえると幸いです(樋口記載)
“fi2bin g0501080100”のように使います。これをダウンロードしたすべてのファイルについて実行するにはファイルが入っているフォルダで、 dir > go.batを実行します。次にgo.batを編集して、call fi2bin [fiファイルの先頭名]の並びを作成します。 バッチファイルからバッチファイルを呼び出す時にcallを使用します。 後はほっておけばアルベド、輝度温度変換済みファイルが作成されます。 一月分のデータ容量は約9GBになります。

UNIX/Linux (GNU系toolが既にinstall済みであることが前提)

完全に好みの問題となりますが,ここで紹介する例は, Cによるプログラムはできるだけ少なく(単純化)し,shell (+ GNU tools) を最大限に使います.footer (lookup table)が始まる場所は 80byte (header) + 2096704 (data 本体) より後ろで,展開すると分かりますが, ファイルそのものの大きさはほとんど変化がないので,こんな組み合わせをあてます:

  • Visible の場合

$tail -c 28269 gXXYYMMDDHH.fi.vis.gi > temp1.txt
$grep -a VISIBLE -A 66 temp1.txt > temp2.txt
$awk 'NR > 3 {print $1, $2}' temp2.txt > visible.calib

  • Water Vapor, IR1 & IR2 の場合

$tail -c 28269 gXXYYMMDDHH.fi.wv.gi > temp1.txt
$grep -a INFRARED -A 258 temp1.txt > temp2.txt
$awk 'NR > 3 {print $1, $4}' temp2.txt > wv.calib <-- Water Vapor の場合
$awk 'NR > 3 {print $1, $2}' temp2.txt > ir1.calib <-- IR-1 の場合
$awk 'NR > 3 {print $1, $3}' temp2.txt > ir2.calib <-- IR-2 の場合

順を追って説明します.

  • Visible の場合
行数 やっていることの説明
1 tail コマンドは指定したファイルの後ろから読むもので -c 28269 で読むバイト 数を指定します.> はリダイレクトで,この場合は得られた結果をtemp1.txtに書き込め,と言う意味です.
2 書き込んだ結果 (temp1.txt) の中で VISIBLE と書かれた行を探しだし (grep はパターンマッチングのコマンドです),その行から 66行分だけ取り出して (データと物理量換算表 [lookup table]のみを取り出す.他の情報も footer には含まれているので) temp2.txt に書き込め,と言う意味です. 66行というのは,元のデータが可視は64階調しか無いからです.
3 データの整形をします.awk を使います.temp2.txt の3行目以降で1列目と2列目 のデータのみを visible.cailb に書き出せ,と言う意味です.

これでdata値とそれに対応する物理量のデータのみを取り出すことが可能となります.

  • Water Vapor, IR1 & IR2 の場合
行数 やっていることの説明
1と2 基本的にはvisibleの処理と同じですが,これらのchannelは1byte (0-255) 分の情報が入っていますので,grep 時に -A 258 とします.
3以降 各チャンネル毎に必要な情報を取ります.2行目迄のデータ処理 (temp2.txt)で;
digital number IR-1(Kelvin) 1R-2(Kelvin) Water Vapor(Kelvin)
の順で入っていますので IR1 の情報が欲しければ print $1,$2, WV の場合には $1,$4 としてそれぞれのcalibration table のみを取得することが可能だと思います.

後は前述したファイルからデータ部分だけを読み取るプログラムsample-gms-data.c(757)と,lookup table情報を取り出したファイルを使って, データを物理量に換算するプログラムを作成すれば物理量換算は可能です.サンプルとして,Visible 用のプログラムconvert-gms-visible.c(642)と, それ以外のプログラムconvert-gms.c(791)を置いておきます. これらのプログラムの走らせ方は,
$./a.out datafile outputfile lookuptablefile
で3つの引数(入力バイナリファイル,出力バイナリファイル,look up table テキストファイル)が必要です.a.out はコンパイル後の実行ファイルで,適宜読み替えて下さい.で3つの引数が必要です.ファイル名は元々のファイル名をうまく使って, shell で for 文等を使えば連続的に処理が可能です.

  ほか注意事項

  • 1998年5月以前のlookuptable

CEReS product の中にはlookup table は含まれていません.visibleに関しては定数が入っているので,1998年以降の tableをそのまま流用すれば使えると思います.wv, ir に関しては, 生データから出力させれば作成可能だと思いますが,手間的に大変なので ;-) 手抜きで申し訳ありませんが,高知大菊地先生が運営されている気象情報頁の換算表 http://weather.is.kochi-u.ac.jp/sat/CAL/ を参照していただけると幸いです.

  • 定時に観測データが抜けている問題

07Z (13JST) の観測データが 極端に少ない問題がCEReS 受信 GMS-5 データにあります. 今となっては(2009年04月現在)その原因は不明です.ごめんなさい.

CEReS Database Wiki