日本語による詳しい README

0. ライブラリ作動まで
  python (v2.6+) PIL (Python Imaging Library) C compiler が必要
  mtsatlib ディレクトリで、
    $ python setup.py build
    $ ln -s build/lib.*/_util.so .
  を実行して、C 言語ライブラリをコンパイルする。
  sample_prog にプログラム例があるが、pilfont などパスの設定が必要。

1. データの取得と形式等

  MTSAT HRIT データは MTSAT-1R からの受信または、JMBSC 経由での地上配信
  によって取得することができる。
  JMBSC では IMG_DK01 で始まる半球につき5セクションに分割されたデータを
  まとめて tar + gzip 形式で配布する。

  JMBSC から配布されるファイル名は
    Z__C_RJTD_20101225023116_OBS_SAT_Pir1_Rnh_image.tar.gz
  のような名前になっていて、
    Z__C_RJTD_ ....... 固定
    20101225023116 ... 観測開始日時
    _OBS_SAT_P ....... 固定
    ir1 .............. 観測チャンネル (ir1--4, vis)
    _R ............... 固定
    nh ............... 半球 (nh = 北, sh = 南)
    _image.tar.gz .... 固定
  のように解釈される。
  なお、固定部分はその他の配布データとの識別などに用いられている。

  tar + gzip を展開してできるファイルは 5 つあり、両半球合わせて 10 個の
  ファイルができる。このファイル名は
    IMG_DK01IR1_201012250232_001
  のようになっていて、
    IMG .............. 固定
    DK01 ............. 観測の種類（範囲）によって変わる数字
    IR1 .............. 観測チャンネル (IR1--4, VIS)
    201012250232 ..... 観測開始日時
    001 .............. 領域分割の番号 (001 - 010)
  のように解釈される

2. ImgDk2Game クラス (ライブラリ)

  上記のように HRIT データファイルの名前が IMG_DK で始まっていることから、
  adhoc に付けた名前である。GAME は 1995 年の GMS5 受信処理開始のきっかけと
  なった、気象水文プロジェクトの名称で、GAME と ALL の 2つのフォーマットで
  緯度経度座標に変換したデータをアーカイブしている。クラスの名称は、
  「IMG_DK から GAME への変換」を意味している。

  使用法:
  from ImgDk2Game import *
  g = ImgDk2Game('IMG_DK01IR1_201012250232_001')
  のようにして、ImgDk2Game クラスのインスタンスを作成する。
  ただし、上記 10 個のファイルがカレントディレクトリに展開されていることが
  必要である。ファイル名の末尾は 001 〜 010 のどれでもよく、実際には
  無視される。インスタンス作成によって、ナビゲーションパラメータが読み込まれ、
  10bit のデータから 8bit に変換したデータがメモリー上に作成される。

  メンバ関数:
  geotransraw(box, size)
    緯度経度座標系のデータを作成する。
    box .... 変換領域の４隅のうち、北西と南東の点を指定する。
             (lon_tl, lat_tl, lon_br, lat_br) の4つの浮動小数点の組
             lon_tl, lat_tl ... 北西 (top left) の経度、緯度
             lon_br, lat_br ... 南東 (bottom right) の経度、緯度
             経度は東経。180以上も使用。緯度は北緯。南緯を表すには負数を用いる。
    size ... 作成する画像のサイズ (width, height) の2つの整数の組
    戻り値 .. PIL の Image インスタンス

  writegame(img, box, size)
    GAME 研究グループで定めたフォーマットで緯度経度座標系のデータを出力する.
    img .... geotransraw() で得られた Image インスタンス
    box, size .. geotransraw() に与えたパラメータ
    GAME フォーマットでは基本的に PGM 形式の画像データを用いる。
    PGM 形式に定められたコメントを用いて、変換領域等の情報を埋め込む。
    GAME フォーマット:
      P5
      #N%(lat_tl)dN%(lat_br)dE%(lon_tl)dE%(lon_br)d %(lat_inc)f %(lon_inc)f
      %(width)d %(height)d
      %(max)d
      (8 bit data follows)
    ただし %(lat_tl) などの記法は Python の置換法に準拠し:
      lat_tl, lat_br, lon_tl, lon_br ... geotransraw() の説明参照
      lat_inc, lon_inc ... 緯度、経度方向のピクセル間隔(単位は度)
      width, height ... 画像サイズ (PGM 準拠)
      max ... ピクセルの最大値 (8 bit の場合 255)
    出力ファイル名 ... satname + %y%m%d%H + ch + .pgm
      但し、時刻は GMT で気象庁準拠の観測時、つまり観測開始時刻が 00時30分で
      あれば、観測時は 01時となる。

  game()
    GAME 領域のデータを作成して書き出す。

  all()
    ALL 領域のデータを作成して書き出す。

  quicklook()
    気象情報頁の quicklook 画像を作成して JPEG 形式で書き出す。
    画像内にクレジットを入れるので、使用するフォントが必要。

  poltransraw(offset, size, lambda_0, mag)
    HRIT データから直接ポーラステレオ画像を作成する。（註: 気象情報頁では
    直接ではなく、GAME画像ファイルから作成している。）
    lambda_0 .... 画像の中心経度 (できた画像で y軸に平行になる)
    mag ......... 北極での1ピクセルが mag km となる (倍率の指定)
    offset ...... 画像左上が北極からピクセル単位でどれだけずれるか。
                  普通 (負の整数, 正の整数) の組となる
    size ........ 画像の (幅, 高さ) の組。単位はピクセル。
    戻り値 ...... PIL の Image インスタンス。

  有用な member変数
    インスタンス作成によって、以下の member 変数がセットされる。
  nomtime ...... 気象庁準拠観測時 (+30 min) GMT (time型 9-tuple)
  nomjtime ..... 気象庁準拠観測時 JST (日本標準時) (time型 9-tuple)
  nomjst ....... 気象庁準拠観測時 JST (文字列 %y%m%d%H)
  ch ........... 観測チャンネル (IR1-4, VIS)
  sub_lon ...... 衛星の経度 (140.0 は MTSAT-1R, 145.0 は MTSAT-2)
  CFAC, LFAC, COFF, LOFF ... 気象庁資料を参照
  satname, satfulname 衛星の名前 (簡略4文字とフルネーム)
  rawdata ...... 8 bit の文字列に変換した観測データ


3. その他のユーティリティ関数

  untarjmbsc(srcdir, datestr, ch)
    JMBSC の Z__C_RJTD_ で始まる tar.gz ファイルをカレントディレクトリに
    展開して IMG_DK01 で始まる 10 個のファイルのファイル名をリストとして
    返す。
    srcdir ... Z__C_RJTD_ ファイルのあるディレクトリ
    datestr .. %Y%m%d%H 形式で JMBSC ファイルに含まれる観測日時情報
               正時の観測 (前の時の30分頃開始) の全球観測にのみ対応
               30分の北半球 (あるいは南半球) の観測には対応していない。
    ch ....... 観測チャンネル 1〜4 の整数

  credit(text, font, textcolor, bgcolor)
    text を画像にして返す。
    text ..... 表示する文字列 (英数字に対応)
    font ..... PILフォントまたは TrueType フォントを指定
    textcolor  文字列の色
    bgcolor .. 背景色

  add_color(bwimg, uvimg, gamma)
    YUV モデルに基づいて、Y に (PGM のような) Greyscale 画像とし、カラー画像
    から取り出した UV チャンネルを付加して、擬似的にカラー画像を作る。
    bwimg .... グレースケール画像
    uvimg .... カラー画像
    gamma .... ガンマ補正値

TODO:
  sample_prog にあるように calibration data を取り出せるようにする。
  credit のフォント設定関係が objective でないので、改良する。

