Storing data and meta-data
ここではALMAのために選択されたデータフォーマットを記載します.これはAMIPが策定した,GCMのデータを集めるためのフォーマットに酷似しています.ということは,このフォーマットはLSSのオフライン実行もカップルド実行(coupled experiments)にも適用できるということです.そしてさらには,GLASSの全てのアクションに対して適したフォーマットでもあります.
データ記述のために必要な情報
データ交換を容易にするためには,ファイルは数値のみを含むものであってはなりません.必ず,各変数等についての完全な説明文が必要です.この説明(データに関するデータ)をメタデータといいます.(メタデータを含んだ)自己記述的self-descriptiveファイルの交換は,あとほんの少しの外部情報を加えるだけ可能になります.そのような段階に達するためには,地球物理的データを完全に記述するために必要な情報とは何かという点について完全な解析が行われる必要がありますが,モデリングアプリケーションに対するこのような検討はすでにHadley Centre and the NCARのグループによって行われいます.その結果,二つのメタデータ標準規約が出来上がり,これらは現在統合の作業が行われています.
さて,ALMAではHadley Centreが開発したデータ規約(GDTと呼ばれる)に立脚した新しい規約を採用することが提言されています.これはLSSに対して二つの最も重要な特徴を提供します.それらは,
- rectilinearでないグリッドも格納できる
- gatheringによりデータ圧縮が可能
ということです.LSSの立場から見て言い換えると
- イレギュラーなグリッドでもOK.海のグリッドが欠けていてもよい.
- 海のデータなんて入れなくても良く,その分ファイルサイズは小さくできる
という,LSSにとって本質的に有効な点があるのです.単純に緯度経度グリッドデータを用いた場合はそうはいきません.また,従来使われてきたCOARDSなどの規約にはこういった特徴は入っていません.
メタデータ規約が決まると,次はこれらのメタデータを一つのファイルに放り込むための数値フォーマットを探すという作業が必要になります.このようなフォーマットが満たすべき唯一の条件は,「ファイルの中のどのメタデータもあいまいでない方法で書き込み・書き換えができる」ということです.この条件さえ満たされれば,数値フォーマットは今後コンピュータの進化に伴って変更される可能性もあります.というのは,この条件さえ満たされれば,古いフォーマットから新しいフォーマットへ,すべてのデータをオペレータの介在無しで書き換えるためのプログラムを書くことができるからです.したがって,メタデータ形式についてきちんとした規約ができたなら,実際のファイルフォーマット自体はユーザの利便性を元にして決めればいいことなのです.
データ格納のためのファイルフォーマット
メタ情報をデータと同じファイルに格納することができるファイルフォーマットが
netCDFです.これは機種に依存しないバイナリファイルで,データの書き込み・読み出しを行なうプログラムはいろいろな範囲のプラットフォームで用意されています.つまり,データ(やメタデータ)はコンパクトなファイルに格納され,あるマシンで作成されたnetCDFファイルは他のマシンでも支障なく読めるというわけです.netCDFフォーマットはパブリックドメインで,UNIDATAがメンテナンスを行っています.ということは地球物理学界に広く流通しており,メンテナンスは確実に行われるということです.さらに,地球物理学界で広く使われるデータ解析ソフトやグラフィックソフトの多くはnetCDFフォーマットを読み込むことができます.
netCDFファイルには,データのほかに次のような情報を格納することができます:
ファイル内で使われるいろいろな軸の次元
データの時間的空間的位置を表すための空間座標・時間座標
メタデータ規約,正負規約(sign convention),ファイル作成日時,データを作成したモデル
また,各変数に対しては次のような情報を格納できます:
- サイズとランク(行列次数など)
- 変数名
- 変数の内容を表すタイトル
- 単位
- 欠測値を表すフラグ
- 各軸に対応する座標(x,y,z,t etc...)
ncdump -hと入力することによってnetCDFファイルのヘッダ情報を得られます.ALMAオフラインフォーシングデータを含んだnetCDFファイルに対してこの命令を実行すると,次のような結果が得られます:
- 正規座標rectilinear grid上におけるフォーシングデータセット:この場合,データ点の地理座標はベクトルで格納されます.従って,次元数と変数の座標は同じランクをもつので,これらには同じ名前を付けることができます(各変数の空間座標はlat,lon).
- 一般グリッド上のデータ:次元と変数の座標とはランクが違い,従って違う名前となります(各変数の空間座標はy,x).この場合は各変数について,その変数が持つ次元を地理的座標に変換するための変数が何であるかということを指定する補助属性を決める必要があります.
- gatheringによりデータ圧縮をしたALMA用フォーシングデータ:各変数について,空間座標の次元(普通は2次元)がデータポイントのベクトル(1次元)にダウンサイジングされています.このファイルにはlandという変数が加わっていますが,これは整数型で,各データポイントのフルグリッド上での位置を表します.この変数を特徴付けるのはどの軸に沿って圧縮が行われるかという属性です(「compress = "y x"の行」).さて,各変数はその位置を表すために圧縮された位置情報を用います.つまり各変数名の後のカッコの中(これが前述の補助属性)に,変数landを指定しています.このcompress属性があるため,どの変数についてもそのランクを再構築することができ,また補助属性は各データが地理的座標でどこに相当するのかという投影法を指示してくれます.
netCDFへの書き込みやデータ解析ができるフリーソフト群
UNIDATA web siteには,netCDFファイルの読み出しや書き込みができるソフトウェアパッケージの長いリストがあります.ここでは,私たちはパブリックドメインで,特に GLASSにおけるデータ交換に便利であると思われるものをピックアップしてみました.もちろんこのリストに追加すべきものがある等の情報は歓迎します.
- データ管理ソフト
- PCMDIはAMIPデータセット(netCDFで記述されています)の管理のために,ソフトウェアパッケージをpythonで開発しました.その中で,CDATとCDMSは地球物理的データならびにそれらのメタデータを読み書きしたり,各変数をpythonで扱うことができるようにするプログラムです.また,netCDFファイルの内容をpythonのオブジェクトとしてアクセスできるようにします.
- NCARはNCOパッケージとしてコマンド群を発表しています.これはnetCDFファイルならびにその内部のデータを扱うソフトです.これらのツールは変数名の変更・ファイルからのデータ(およびデータセクション)の取り出しに対して極めて効果的です.また,データ補間にも使うことができます.
- グラフィックス
- netCDFファイルと一緒に使うと効果的なのはFERRETです.netCDFファイルに対する基本的な操作,正規的でないグリッドや時間間隔におけるプロパティフィールドの表示ができます.
- GRADSもまたよいプログラムです.しかしnetCDFのような自己記述的ファイルに対するサポートはまだ不十分です.netCDFファイルを扱うには,事前にファイルを簡略化しておく必要があります.(安形注:GrADS1.6以降に対応した,自己記述的ファイルインタフェースが用意されています.NOAAのWWW資料参照)
- I/Oライブラリ
- 走っているモデルからnetCDFフォーマットのデータを読み書きするためのシンプルなインタフェースを提供してくれるのがIOIPSLライブラリです.これは歴史的にIPSLで用いられ,大気・海洋・陸面モデルのファイルをrestartしています.
- PCMDIが,モデル結果や観測気象データ(どちらもnetCDFフォーマット)を取り出すために作ったライブラリがEZGETです.
Data Exchange Convention |
原文(英語)
Last modified: Mon May 15 22:32:20 WEST 2000
Translated : Sat July 15 2000