機種が違っても、同じデータファイルを ユーザーから見て同じプログラムで読めるようにするためには、 プログラムの入出力手続き部分をライブラリ化して、 その中に機種ごとに変える部分をおしこめておくのが適している。 具体的には、次のようなデータ構造がデータ交換用に提案されている。
http://www.unidata.ucar.edu/software/netcdf/
。
日本語での紹介(地球流体電脳倶楽部による)が
http://www.gfd-dennou.org/arch/netcdf/
にある。
主として気象・海洋・水文の数値モデルを使う研究者に使われている。http://www.hdfgroup.org/
となった。
地球科学関係では、NASAやJAXAが提供するデータで使われている。
これらのデータ形式の特徴は、機種依存性がないことと、 データの説明情報(数量の名前、単位、空間・時間座標値、観測機器やモデルの名称など。メタデータ[metadata]ともいう)をデータ本体(数値)と同じファイルに収録できることである。 データ形式自体の説明書はあるものの、 実質的には入出力用のプログラムライブラリで定義されていると言ってよい。 プログラムライブラリ自体はCで書かれており、FortranやC++からも 呼び出せるようになっている。
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規約への対応が不完全なのではないかと思うが、
どちらの問題か、わたしには確認できていない。