CloudSatを手玉にとる

CloudSatと言うよりも,HDFデータの読み方のメモ.最低限の情報を記す.


vdataの読み込み

衛星CloudSatに搭載されたCloud Profiling Radar (CPR)は, 鉛直分布を含めた雲の3次元構造の観測をすることが可能な世界初の衛星搭載雲レーダである. CPRは衛星直下のみ観測をしているため,衛星軌道と高度の2次元のデータプロダクトとなっており(カーテンをイメージ), hdf4形式で配布されている. それぞれの観測点の観測時刻,位置(緯度と経度のそれぞれ)や諸データ属性などの 1次元のデータはvdataの中に入っている. vdataの読み込みの流れは大体こんな感じである.

  1. hdfファイルのidを求める
  2. vdataにある名前からindexを求める
  3. その名前のvdataのidを求める
  4. vdataのidから詳しい情報を読み出す
  5. それらを使って肝心な中身のデータを読み出す
  6. 開けたら閉める(idの初期化)

簡単に言えば,宝探しゲームみたいなものか?暗号を解いて,宝箱の中身をとりだすイメージ?

では上記のことをどうやってするか,である.初心者にはこれが大問題. 筆者は次のようにして読み込んでいる(Fortran使い).

  1. hopen-------hdfファイルのidを求める
  2. vsffnd------vdataにある名前からindexを求める
  3. vsfatch-----その名前のvdataのidを求める
  4. vsfinq------vdataのidから詳しい情報を読み出す
  5. vsfread-----それらを使って肝心な中身のデータを読み出す
  6. hclose------開けたら閉める(idの初期化)

とりあえずどんな感じになるかはこれ

サンプル(vdata)

コンパイルは出来るかな?

sdsdataの読み込み

vdataの読み込みが出来ても,2次元目データが読めなければ, CloudSatを手玉にとることは永遠に出来ない. 基本的にはvdataと同じ手順を踏んでデータを読み込む. ただし,vdataとsdsdataの格納されている場所が異なるため sdsdataはそれ専用の関数を使って読み込む.

とりあえずどんな感じになるかはこれ

サンプル(sdsdata)

コンパイルは出来るよね?

コンパイルする

とりあえずどんな感じになるかはこれ

サンプル(compile)

コンパイルは出来たかな?

コンパイルが出来ないとき

HDFの関数を使ってプログラムをコンパイルするときには注意が必要. インクルードファイルやライブラリーの場所を明示しなければならない.

でも,その前に環境が整っているだろうか.

$ find / |egrep "hdf.f90"
$ find / |egrep "libmfhdf"

あるいは,

$ whereis libmfhdf
$ locate hdf

これらが見つからない場合はインストールする必要がある.

パッケージでインストールする

筆者はubuntuユーザなのでapt-getでインストールする場合を紹介する.

$ apt-cache search hdf |grep hdf |grep dev

ひっかかったものを片っ端からインストールする. HDF5は新しすぎるのでHDF4に関連したものをインストールするほうがよい. 上記の検索でひっかかるようになれば環境は整ったと思われる. *(Ubuntu 10.10 では,hdf4-tools, libhdf4-devをインストールすればオッケー)

自力でインストールする

使用しているfortranコンパイラで最適化したい,など人によって様々な理由がある. Webで検索すれば多くひっかかるので,それらに説明を譲る.

読み込みが上手くいかないとき

言われた通りやってみた,書いてある通りにやったのに上手くいかない.なんだこれー.

ちょっと,待ってください.上手くいかないことが普通なのです.

自分が間違えていることを前提に考えてみる

変数のミス, 配列の扱い方, あるいはタイプミスなど... 読み込みが上手くいかないときの多くは自分のイージーミスである. また,HDFの関数からは結果の戻り値がえられるで, 戻り値をwrite文攻撃すればどこで失敗しているかを確かめることが出来る. いわゆるバグとりしよう.

まわりの人に正しく聞く

一般生活で身近な存在になりつつある衛星データであるが, その読み込みをや解析は専門性が高く扱う人数が限られる. 多くの場合,まわりに衛星データを専門的に扱っている人がいるはずなので, まわり人に聞くことを推奨する. みんな最初は分からなかったのだから. とはいえ,諸事情により, そのような人がまわりにいなくても衛星データを使う必要性がある人はいるはずである(筆者もどちらかと言えばそうだった). 近年はWebで備忘録を残した先人たちが数多くいるので,それらを参考にするとよい (だからこの文章を読んでいるのでしょう).

また,大手質問サイトに質問することはお勧めしない. この手のサイトでは,一般的な知識を共有・質問する項目においては強力なツールとなりうる. しかし,衛星データを読み込むような専門的な質問は, 知識共有の絶対数の少なさ,質問項目が非常にピンポイントに限定されてしまう. そのような専門的な質問を知識共有サイトに投稿されたものを最近多くみかけるが, 悪手である. 衛星データの読み込みに関する専門コミュニティがあるならば,そこに質問投稿することは 選択肢として挙げられるが,筆者はそのような日本語サイトで見つけたことはない. 端的に言えば,質問すべき相手を間違えてないようにしよう.


[Return]