4.1 NetCDFファイルを作成する
これは新しいNetCDFファイルを生成するために使用する一般的なNetCDF呼び出し手順です:
NF_CREATE ! NetCDFファイルを作成: 定義モードに入る
…
NF_DEF_DIM ! 次元の定義:名前とサイズから
…
NF_DEF_VAR ! 変数の定義: 名前、型、次元から
…
NF_PUT_ATT ! 属性を設定:属性値を割り当てる
…
NF_ENDDEF ! 定義終了: 定義モードから抜ける
…
NF_PUT_VAR ! 変数に値を与える
…
NF_CLOSE ! クローズする: 新しいNetCDFファイルを保存する
NetCDFファイルを作成は呼び出し一つで可能です。その時点では、二つあるNetCDFモード(mode)の最初のモードに入っています。オープンされたNetCDFファイルにアクセスする際でしたら、定義モードもしくはデータモードに入るはずです。定義モードでは次元・変数・新しい属性などを作れますが、変数データを読んだり書き込んだりすることはできません。データモードではデータにアクセスし、既存の属性を変更することはできますが、次元・変数・属性を新たに作ることはできません。
新たに作られた次元にはそれぞれNF_DEF_DIMへの呼び出しが一つ必要となります。同様にすべての変数にはNF_DEF_VARへの呼び出しが一つ必要です。さらに、定義され、値を割り振られた属性にはNF_PUT_ATTファミリーのメンバーへのコールが必要となります。定義モードから出て、データモードに入るにはNF_ENDDEFと呼び出してください。
一度データモードに入ると、変数に新たなデータを加えたり、古い値を変更したり、既存の属性値を変更することができます(ただし、属性については格納スペースが増加しないことが条件です。)NetCDF変数に単一の値を書き込むためには、書き込むデータ種によってはNF_PUT_VAR1ファミリーのメンバーが必要となります。NF_PUT_VARファミリーのメンバーを使用して変数の取るべき値をすべて一度に書き込むにこともできます。変数の配列や配列断面はNF_PUT_VARAファミリーを使って書き込めます。部分サンプルされた配列断面もNF_PUT_VARSファミリーのメンバーを使うことによって書き込めます。マップされた配列断面もNF_PUT_VARMファミリーのメンバーを使うことによって書き込めます。(部分サンプルやマップされたアクセスは通常のデータアクセス法の一種であり、後に説明します。
最後に、書き込むために開いたNetCDFファイルはNF_CLOSEを使って必ずクローズしてください。ファイルシステムへのアクセスはデフォルトでNetCDFライブラリによってバッファーされています。ファイルがデータを書き込めるオープンされた状態でプログラムが異常終了した場合には、その回に加えた変更がすべて無効になる可能性があります。デフォルトでバッファーしてしまうこの機能は、ファイルをオープンする際に、NF_SHAREフラグを立てることによって避けられます。フラグが立っていても、定義モードで行なわれた属性値の変更や定義モードで変更された事項はNF_SYNCまたはNF_CLOSEが呼び出されない限り、実行されません。
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |