「自己記述型」ファイル形式

[FortranやCによる格子点データ処理と、データファイル形式]からの続き

機種が違っても、同じデータファイルを ユーザーから見て同じプログラムで読めるようにするためには、 プログラムの入出力手続き部分をライブラリ化して、 その中に機種ごとに変える部分をおしこめておくのが適している。 具体的には、次のようなデータ構造がデータ交換用に提案されている。

netCDF (Network Common Data Format)
UCAR (University Corportation for Atmospheric Research)の Unidata Centerが開発した。 オリジナルサイトはhttp://www.unidata.ucar.edu/software/netcdf/。 日本語での紹介(地球流体電脳倶楽部による)が http://www.gfd-dennou.org/arch/netcdf/にある。 主として気象・海洋・水文の数値モデルを使う研究者に使われている。
NetCDFの4版では、標準のデータ形式をHDFの5版と共通にした。 ただし3版までの形式も選択できる。
HDF (Hierarchical Data Format)
NCSA (National Center for Supercomputer Applications)が開発したが、 その後オリジナルサイトはそこを離れてHDF Group http://www.hdfgroup.org/となった。 地球科学関係では、NASAやJAXAが提供するデータで使われている。
CDF (Common Data Format)
NASA National Space Science Data Centerが開発し、 1991年に作られたGEDEX (Greenhouse Effect Detection Experiment) CD-ROMに使われたが、その後NASAはHDFを採用することになり、CDFはすたれた。

これらのデータ形式の特徴は、機種依存性がないことと、 データの説明情報(数量の名前、単位、空間・時間座標値、観測機器やモデルの名称など。メタデータ[metadata]ともいう)をデータ本体(数値)と同じファイルに収録できることである。 データ形式自体の説明書はあるものの、 実質的には入出力用のプログラムライブラリで定義されていると言ってよい。 プログラムライブラリ自体はCで書かれており、FortranやC++からも 呼び出せるようになっている。

GMTとNetCDF

GMT [別ページ参照]は 2版から格子点データの形式としてNetCDFを採用しているが、 その使いかたはやや特殊だったので (netCDFが2次元配列データのための機能を用意しているにもかかわらず、 GMTは2次元格子点データを1次元配列として扱っていた)、 GMTと他の応用とでデータファイルを兼用することはむずかしかった。

GMTは、4.1.2版(2006年5月)から、そのnetCDFファイルの形式を 気象・海洋関係者の間で広く使われている約束のひとつ 「COARDS規約」と「CF規約」に準拠するように変えた。 2009年に、GMTの4.5.0版で書いたものを、 Gfdnavi (http://www.gfd-dennou.org/arch/davis/gfdnavi/)の1.3版で読もうとしたところ、 (GMT 4.0以前のものとは違って) データ内容のならべかえは必要としなかったが、 座標変数名や値の欠損を表わす変数の名などを書きかえる必要があった。 GMTの出力、Gfdnaviの入力のいずれかのCF規約への対応が不完全なのではないかと思うが、 どちらの問題か、わたしには確認できていない。

[古い情報] netCDFとHDFを使う: 2006年現在のSFC CNSローカルな手続き


2000-08-19, ..., 2009-10-15, 2015-06-13
増田 耕一 (MASUDA Kooiti)
[コンピュータ関係の教材の目次へ] [Awkによるデータ処理の教材の目次へ]