Up|<<Prev|Next>>


4.1 NetCDF ファイルを作成する

これは新しいNetCDFファイルを生成するために使用する 一般的なNetCDFコールの配列です:

    nc_create           /* NetCDFファイルを作成: 定義モードに入る */
         ... 
       nc_def_dim       /* 次元の定義: 名前とサイズから */
         ... 
       nc_def_var       /* 変数の定義: 名前、タイプ、...から */
         ... 
       nc_put_att       /* 属性を置く: 属性値を割り当てる */
         ... 
    nc_enddef           /* 定義終了: 定義モードから抜ける */
         ... 
       nc_put_var      
 /* 変数に値を与える */
         ... 
    nc_close            /* 閉じる: 新しいNetCDFファイルを保存する */

コール一つでNetCDFファイルを作成できます。その時点では、二つあるNetCDFモードの最初のモードに入っています。開かれたNetCDFファイルにアクセスする際でしたら、定義モードもしくはデータモード 入るはずです。定義モードでは次元・変数・新しい属性などを作れますが、変数データを読んだり書き込んだりすることは出来ません。データモードではデータにアクセスし、既存の属性を変更することは出来ますが、次元・変数・属性を 新たに作ることは出来ません。

新たに作られた時限には各々 nc_def_dim へのコールが一つ必要となります。同様に全ての変数には nc_def_var へのコールが一つ必要です。さらに、定義され、値を割り振られた属性には nc_put_att ファミリーのメンバーへのコールが必要となります。 定義モードから出て、データモードに入るには nc_enddef とコールしてください。

一度データモードに入ると、変数に新たなデータを加えたり、古い値を変更したり、既存の属性値を変更することが出来ます(ただし、属性については格納スペースが増加しないことが条件です。)NetCDF変数に単一の値を書き込むためには、書き込むデータ種によっては nc_put_var1 ファミリーのメンバーが必要となります。 nc_put_var ファミリーのメンバーを使用して変数の取るべき値を全て一度に書き込むにことも出来ます。変数の配列や配列断面は nc_put_vara ファミリーを使って書き込めます。部分サンプルされた配列断面も nc_put_vars ファミリーのメンバーを使うことによって書き込めます。マップドアレイセクションも nc_put_varm ファミリーのメンバーを使うことによって書き込めます。 (部分サンプルやマップドアクセスは通常のデータアクセス法の一種であり、後に説明いたします。

最後に、 書き込むために開いたNetCDFファイルは nc_close を使って必ず閉じてください。ファイルシステムへのアクセスはデフォルトでNetCDFライブラリによってバッファーされています。 データを書き込める開かれた異常な状態でプログラムが終了された場合には、その回に加えた変更が全て無効になる可能性があります。このデフォルトでバッファーしてしまう機能は、ファイルを開く際に、 NC_SHARE フラグを立てることによって避けられます。 フラグが立っていても、定義モードで行なわれた属性値の変更や定義モードで変更された事項は nc_sync 又は nc_close がコールされない限り、実行されません。


Up|<<Prev|Next>>