[次] [性急過ぎる ] [トップ ] [内容 ] [インデックス ] [ netCDFホームページ ] [ユニ‐データホームページ]

FortranのためのNetCDFユーザーのガイド

10 NetCDFユーティリティ


アレイを扱うアプリケーションのためにnetCDFインタフェースを使うことの一次理由のうちの1つは、netCDFデータのための更に高水準のnetCDFユーティリティ、及び、一般的アプリケーションを利用することである。現在、2 netCDFユーティリティは、netCDFソフトウェアディストリビューションの一部として利用可能である:

更に2の多目的のnetCDFユーティリティは、FAN ( File Array Notation ) パッケージの一部として利用可能である:

更に多くの情報オンのために扇ぐことを、 http://www.unidata.ucar.edu/packages/netcdf/fan_utils.htmlは理解する。

ユーザーは、他のnetCDF公益事業に貢献し、そして、様々な具象化、及び、分析パッケージは、利用可能である、netCDFデータにアクセスする。netCDFデータにアクセスすることができる、もしくは操作し得る自由に‐利用可能な、そして商業ソフトウェアの最新のリストのために、NetCDF Softwareリスト、 http://www.unidata.ucar.edu/packages/netcdf/software.htmlを見る。

この章は、ncgen、及び、ncdumpユーティリティを示す。これらの2つのツールは、バイナリnetCDF datasets、及び、netCDF datasetsのテキスト表現の間で変わる。ncgenするncdump、及び、入力出力は、CDLとして知られている小さい言語のnetCDF datasetのテキスト記述である ( ネットワークCommonデータがDescription Languageを形成する ) 。

10.1CDLシンタックス


下記は、例である、の、いくらかの指定された次元 ( latlon時間 ) 、変数 ( ztprhlatlon時間 ) 、変数属性 ( ユニット_FillValuevalid_range ) 、及び、いくらかのデータによってnetCDF datasetを示すCDL。



CDLにおけるnetcdf foo { //例netCDF仕様

次元:
lat = 10、lon = 5、時間=、無制限の;

変数:
int lat ( lat ) 、lon ( lon ) 、time ( time ) ;
z ( time、lat、lon ) 、t ( time、lat、lon ) を呈示しなさい;
p ( time、lat、lon ) を2倍にしなさい;
int rh ( time、lat、lon ) ;

lat :ユニット=「degrees_north」;
lon :ユニット=「degrees_east」;
時間:ユニット=「秒」;
z :ユニット=は、「液体計量を行う」;
z :valid_range = 0.、5000. ;
p :_FillValue = -9999. ;
rh:_FillValue = -1 ;

データ:
lat = 0、10、20、30、40、50、60、70、80、90 ;
lon = -140、-118、-96、-84、-52 ;
}
全てのCDLステートメントは、セミコロンによって終了する。スペース、タブ、及び、newlinesは、読み易さのために自由に使われ得る。コメントは、あらゆるライン上で二重のスラッシュキャラクタ//の後に続くかもしれない。

CDL記述は、3つの任意のパーツから成る:次元、変数、及び、データ。変数部分は、変数宣言、及び、属性の割当を含むかもしれない。

A次元は、CDL記述によって示されたマルチ‐寸法の変数の1以上の形を定義するために使われる。次元は、名前、及び、長さを持っている。大部分の1に、CDL記述における次元は、無制限の長さ ( この次元を使う変数があらゆる長さ ) まで増大し得ることを意味するを持っていることができる ( ファイルにおいてレコード番号を好みなさい ) 。

変数は、マルチ‐寸法の一連の同じタイプの値を示す。変数は、名前、データタイプ、及び、次元のそのリストによって記述された形を持っている。各変数は、データ値と同様に、属性 ( 下で見る ) を同じく結び付けたかもしれない。名前、データタイプ、及び、変数の形は、CDL記述の変数セクションにおけるその宣言によって指定される。変数は、次元と同じ名前を持っているかもしれない;そのような変数が含む規定によってそれが指定する次元の座標。

属性は、変数、もしくは、全netCDF datasetに関する情報を含む。属性は、ユニット、特別な値、最大の、そして最小の正当な値、及び、パッキングパラメータのようなプロパティを指定するために使われるかもしれない。属性の情報は、値の1つの値、または、アレイで表される。例えば、ユニットcelsiusのようなキャラクタアレイで表された属性である。属性は、関連する変数、名前、データタイプ、長さ、及び、値を持っている。データのためのものである変数と対照的に、属性は、付属のデータ ( データに関するデータ ) のためのものである。

CDLにおいて、属性は、コロン ( 以下 ) によって分離された変数、及び、属性の名前によって示される。アサインすることは、可能である変数名を省略し、そして、属性の名前をコロン ( 以下 ) で始めることによるnetCDF dataset全体へのグローバルな属性。CDLにおける属性のデータタイプは、それに割り当てられた値のタイプから得られる。属性の長さは、データ値の数、または、それに割り当てられたキャラクタストリングにおけるキャラクタの数である。多重値は、コンマ ( ) によって値を分離することによって非キャラクタ属性に割り当てられる。属性に割り当てられた全ての値は、同じタイプでなければならない。

変数、属性、及び、次元のためのCDL名は、` _ 'と同様に、アルファベットの、もしくは、数値キャラクタのあらゆる結合であるかもしれない、そして、-、キャラクタ、しかし、` _ 'で始まる名前は、ライブラリによる使用のために取っておかれる。ケースは、CDL名において有意である。netCDFライブラリは、制限をnetCDF名前に全く強要しない。従って、正当なCDL名ではない名前によって変数を定義することは、可能である ( 愚かであるけれども ) 。原始的データタイプのための名前は、CDLにおける予約したワードである。従って、変数、次元、及び、属性の名前は、タイプ名であってはいけない。

任意のものCDL記述のデータセクション、である、netCDF、変数は、そうであるかもしれない初期化される。初期化のシンタックスは、簡単である:

変数= value_1、value_2、...。以下。

定数のコンマに境界を定められたリストは、スペース、タブ、及び、newlinesによって分割されるかもしれない。マルチ‐寸法のアレイのために、最後の寸法は、最も速く異なる。このように、カラムよりむしろ列‐オーダオーダは、マトリックスのために使われる。変数を満たすのに必要とされるより値がほとんど供給されないならば、それは、フィル値によって拡張される。定数のタイプは、変数のために宣言されたタイプにマッチする必要がない;例えば、威圧は、整数を浮動少数点に変換するために、行われる。全ての有意義なタイプ変換は、サポートされる。

特別な表記法、のために、値を満たす、サポートされる:_キャラクタは、変数のためにフィル値を示す。

10.2CDLデータタイプ


CDLデータタイプは、以下である。
木炭 キャラクタ。
バイト 8ビット整数。
短い 16ビットは、整数に署名した。
int 32ビットは、整数に署名した。
長く ( 非難される、intと現在の同義の )
フロート IEEE単精度浮動少数点 ( 32ビット ) 。
真の ( フロートと同義の ) 。
ダブル IEEE倍精度浮動少数点 ( 64ビット ) 。

加えられたdata-typeバイト、及び、タイプ修飾子の署名されていないCDLサポートの欠如を除いては、C. In宣言、タイプ名と同じ原始的データタイプは、上の或いは更に低い場合に指定されるかもしれない。

バイトタイプは、異なる、から、木炭それとしてそれが8ビットデータのためのものであり、そして、ゼロのバイトが特別な意味を持たないという点で、タイプする、キャラクタデータのために。ncgenユーティリティは、バイト宣言を出力Cコードにおける木炭宣言、そして、BYTEINTEGER*1、または、出力FORTRANコードにおける同様のプラットホーム‐特定の宣言に変換する。

短いタイプは、-32768、及び、32767の間に値を保持する。ncgenユーティリティは、短い宣言を出力Cコードにおける短い宣言、そして、出力FORTRANコードにおけるINTEGER*2宣言に変換する。

intタイプは、-2147483648、及び、2147483647の間に値を保持し得る。ncgenユーティリティは、int宣言を出力Cコードにおけるint宣言、そして、出力FORTRANコードにおけるINTEGER宣言に変換する。CDL宣言において、整数、及び、長期は、intの同義語と認められる。

フロート32ビットIEEEが単精度浮動少数点番号を正常化したので、タイプは、外部の表現を持つ約-3.4+38、及び、3.4+38の間の値を保持し得る。ncgenユーティリティは、フロート宣言を出力Cコードにおけるフロート宣言、そして、出力FORTRANコードにおけるREAL宣言に変換する。CDL宣言において、実数は、フロートの同義語と認められる。

ダブルタイプは、64ビットIEEEの標準の正常化された倍精度、浮動少数点番号としての外部の表現を持つ約-1.7+308、及び、1.7+308の間に値を保持し得る。ncgenユーティリティは、二重の宣言を出力Cコードにおける二重の宣言、そして、出力FORTRANコードにおけるDOUBLE PRECISION宣言に変換する。

10.3データのためのCDL表記法定数


このセクションは、定数のためにCDL表記法を記述する。

属性、である、定数のリストを供給することによってCDL記述の変数セクションで初期化されて、それが決定する、属性のタイプ、そして、長さ。( C、及び、FORTRANにおいてそれが定義されるとき、netCDFライブラリ、タイプ、及び、属性の長さへの手続き的インターフェースは、明白に与えられなければならない。 ) CDLは、異なるnetCDFタイプの間で区別することを可能にする固定価値のためにシンタックスを定義する。それらをints、及び、ダブルと区別するためにタイプ接尾部が半ズボン、及び、フロートに付加されるということを除けば、CDL定数のためのシンタックスは、Cシンタックスと類似している。

Aバイト定数は、1つの引用符に納められている1つのキャラクタ、または、多重キャラクタエスケープシーケンスで表される。例えば:



'a' // ASCII、'\0' //、ゼロのバイト'\n' // ASCII newlineキャラクタ'\33' // ASCIIエスケープキャラクタ ( 33の8進 ) '\x2b' // ASCIIの正の ( 2b 16進 ) '\376' // 377 8進= ( 或いは、254 ) 10進、
キャラクタ定数が二重の引用符に納められている。キャラクタアレイは、二重の引用符に納められているストリングとして表明されるかもしれない。多重ストリングは、1つの一連のキャラクタに連結される ( 長いキャラクタアレイが多重ラインに現れることを可能にして ) 。多重可変長ストリング値をサポートするために、従来のデリミッター、のような、使われるかもしれない、しかし、ストリングデリミッターのためのあらゆるそのような規定の解釈は、実行されなければならない ( netCDFライブラリ層以上のソフトウェアにおいて ) 。Cストリングのための通常のエスケープ協定は、遵守される。例えば:



// ASCII 'a'「Two\nlines\n」//、2埋め込まれたnewlinesを持つ10文字ストリング、ASCIIベル「ab」、「abcde」と同じである「cde」//を含む1連当たりbell:\007 //、
aのフォーム短い定数は、` s 'と共に一定の整数、または、付加された` S 'である。短い定数が` 0 'で始まるならば、それは、8進であると解釈される。それが` 0x 'で始まるとき、それは、16進定数と解釈される。例えば:



2s // a short 2 0123s // octal 0x7ffs // hexadecimal
フォーム、の、int定数は、普通の整数定数である。int定数が` 0 'で始まるならば、それは、8進であると解釈される。それが` 0x 'で始まるとき、それは、16進定数と解釈される。正当なint定数の例は、以下を含む。



非難された-2 0123 //の8進0x7ff // 16進1234567890L //は、昔からの長い接尾部を使う
フロートタイプは、データを精度の約7つの有意の数字で表すことに適している。aのフォームフロート定数は、` f 'と共に一定のC浮動少数点、または、付加された` F 'と同じである。それを整数と区別するために小数点がCDL余裕時間に必要とされる。例えば、下記は、全ての受け入れられるフロート定数である:



-2.0f 3.14159265358979f //は、比較的少ない精度1.f .1fに切り捨てられるであろう
ダブルタイプは、浮動少数点データを精度の約16の有意の数字で表すことに適している。aのフォームダブル定数は、C浮動少数点定数と同じである。任意の` d '、または、` D 'は、付加されるかもしれない。それを整数と区別するために小数点がCDLダブルにおいて必要とされる。例えば、下記は、全ての受け入れられる二重の定数である:



-2.0 3.141592653589793 1.0e-20 1.d

10.4ncgenする


ncgenツールnetCDFファイル、または、aを生成するC、〜もしくは、netCDF datasetを作成するFORTRANプログラム。オプションがncgenに訴える際指定されないならば、そのプログラムは、単にチェックする、シンタックス、の、CDLシンタックスのあらゆる侵害のためにエラーメッセージを生産して、CDLは、インプットした。

ncgenに訴えるためのUNIXシンタックス:



[ -f ] [ -n ] [インプット‐ファイル]をncgenする[ -b ]
どこへ:
-b ( バイナリ ) netCDFファイルを作成しなさい。-oオプションがないならば、デフォルトファイル名前は、追加によるnetCDF名前 ( 入力におけるnetcdfキーワードの後で指定される ) から組み立てられるであろう、nc拡張。警告:ファイルが指定された名前によって既に存在するならば、それは、オーバーライトされるであろう。
-o netcdf‐ファイル 作成されたnetCDFファイルのための名前。このオプションが指定されるならば、それは、` -b 'オプションを意味する。このオプションは、必要である。なぜなら、netCDFファイルがシークコールによって作成されたランダムアクセスファイルであるからだ。従って標準の出力に書き込まれることができない
-c Cソースコード ( netCDF仕様にマッチするnetCDF datasetを作成するであろう ) を生成しなさい。Cソースコードは、標準の出力に書き込まれる。データ全てが生成されたプログラムにおける変数初期化に含まれるので、これは、ただ比較的小さいCDLファイルにとって有益である。
-f FORTRANソースコード ( netCDF仕様にマッチするnetCDF datasetを作成するであろう ) を生成しなさい。FORTRANソースコードは、標準の出力に書き込まれる。データ全てが生成されたプログラムにおける変数初期化に含まれるので、これは、ただ比較的小さいCDLファイルにとって有益である。
-n 非難される。` -b 'オプションを好む、を除いて、` -o 'オプションによって指定された出力ファイル名がない時の` .nc '拡張の代わりに` .cdf '拡張によってnetCDFファイルを作成する。このオプションは、ただ後方への互換性のためにサポートされる。

CDLファイルfoo.cdlのシンタックスをチェックしなさい:



foo.cdlをncgenする
CDLファイルfoo.cdlから、bar.ncと指定された同等のバイナリnetCDFファイルを生成しなさい:



-o bar.nc foo.cdlをncgenする
CDLファイルfoo.cdlから、同等のバイナリnetCDF datasetを作成するであろうnetCDFファンクション呼出しを含むCプログラムを生成しなさい:



-c foo.cdl > foo.cをncgenする

10.5ncdump


ncdumpツールは、標準の出力に関してnetCDF datasetのCDLテキスト表現を生み出す ( 出力においていくらか、または、変数データの全てを随意に除外して ) 。ncdumpからの出力は、ncgenするために、入力として受け入れられることを意図している。このように、ncdump、及び、ncgenは、バイナリ、及び、テキスト表現の間でデータ表現を変えるための逆として使われ得る。

次元名前、及び、長さを表示するために、ncdumpは、netCDF datasetsのためのシンプルなブラウザとして同じく使われるかもしれない;変数名、タイプ、及び、形;属性の名、及び、値;そして、随意に、netCDF datasetにおける全ての変数、または、選択された変数のためのデータの値。

ncdumpは、各タイプのnetCDF変数データのために使われるデフォルトフォーマットを定義する。しかし、C_format属性がnetCDF変数のために定義されるならば、これは、オーバライドされ得る。この場合、ncdumpは、その変数のために値をフォーマットするためにC_format属性を使うであろう。例えば、netCDF変数Zのための浮動少数点データがわずか3つの有意の数字に正確であるということが知られているならば、この変数属性を使うことは、適切であろう:



Z:C_format =「%.3g」
ncdumpは、まだ書かれなかったデータを表すことを意図している変数のための_FillValue属性に等しいデータ値を表すために` _ 'を使う。変数が_FillValue属性を持っていないならば、その変数がバイトタイプでない限り、変数タイプのためのデフォルトフィル値は、使われる。

ncdumpに訴えるためのUNIXシンタックス:



ncdump [ -c|-h ] [ -v var1 , ... ][ -b lang ] [ -f lang ] [ -l lenする] [ -p fdig [ , ddig ] ] [ -n] [インプット‐ファイル]
どこへ:
-c 全ての次元の宣言と同様に、対等の変数 ( 同じく次元である変数 ) の値、変数、及び、属性の値を示しなさい。非対等の変数のデータ値は、出力に含まれない。これは、しばしばnetCDF datasetの構造、及び、内容を短い見ることのために使用する最も適当なオプションである。
-h netCDF次元のための宣言のみ、変数、及び、入力ファイルの属性を出力におけるヘッダ情報のみ、すなわち、出力に示す、しかし、あらゆる変数のためのデータ値なし。その出力は、対等の変数の値が含まれないということを除けば、` -c 'オプションを使うと同じである。( せいぜい、` -c '、または、` -h 'オプションのうちの1つは、存在するかもしれない。 )
-v var1、...その出力は、指定された変数のためにデータ値を含むであろう ( 全ての次元、変数、及び、属性の宣言に加えて ) 。1以上の変数は、このオプションの後に続くコンマに境界を定められたリストにおける名前によって指定されなければならない。そのリストは、コマンドへの1つの引数が従ってブランク、及び、他の白いスペースキャラクタを含むことができないことでなければならない。指定された変数は、インプット‐ファイルにおける正当なnetCDF変数でなければならない。そのデフォルトは、このオプションなしで、そして、` -c '、または、` -h 'オプションがない時は全ての変数のためのデータ値を出力に入れることである。
-b lang マルチ‐寸法の変数のためにデータ値を確認するのを助けるために、CDLコメント ( キャラクタ//で始まるテキスト ) の形式の短い注釈は、各列のデータ` 'のための出力のデータセクションに含まれるであろう。langが` C '、または、` c 'で始まるならば、それから、C言語規定は、使われるであろう ( ゼロ・ベースインデックス、最も速く変化する最後の次元 ) 。langが` F '、または、` f 'で始まるならば、それから、FORTRAN言語規定は、使われるであろう ( 1‐ベースのインデックス、最も速く変化する最初の次元 ) 。いずれにせよ、データは、同じ順番に提示されるであろう;注釈のみが、異なるであろう。このオプションは、大きいボリュームのマルチ‐寸法のデータをブラウズするのに有益であるかもしれない。
-f lang 全てのデータ値 ( キャラクタアレイにおける個々のキャラクタを除いて ) のためにCDLコメント ( キャラクタ//で始まるテキスト ) を引きずる形の十分な注釈は、データセクションに含まれるであろう。langが` C '、または、` c 'で始まるならば、それから、C言語規定は、使われるであろう ( ゼロ・ベースインデックス、最も速く変化する最後の次元 ) 。langが` F '、または、` f 'で始まるならば、それから、FORTRAN言語規定は、使われるであろう ( 1‐ベースのインデックス、最も速く変化する最初の次元 ) 。いずれにせよ、データは、同じ順番に提示されるであろう;注釈のみが、異なるであろう。このオプションは、十分に確認されて、各データ値が個別のラインに現れるので、パイプでデータを他のフィルタに送るのに有益であるかもしれない。( せいぜい、` -b '、または、` -f 'オプションのうちの1つは、存在するかもしれない。 )
-l lenする 非キャラクタデータ値のリストをフォーマットする際使われるデフォルトの最大のライン長さ ( 80 ) を変えなさい。
-p float_digits [ double_digits ]
属性、及び、変数のために浮動少数点、または、倍精度データ値を表示する際使用するために、デフォルト精度 ( 有意の数字の数 ) を指定する。指定されたならば、この値は、C_format属性の値をオーバライドする、もしあれば、変数のために。浮動少数点データは、float_digitsの有意の数字によって表示されるであろう。double_digitsが同じく指定されるならば、倍精度値は、その多くの有意の数字によって表示されるであろう。あらゆる` -p '仕様がない時は、浮動少数点、及び、倍精度データは、各々7、及び、15の有意の数字によって表示される。比較的少ない精度が必要とされるならば、CDLファイルは、更に小さくされ得る。浮動少数点と、倍精度の両方が指定されるならば、2つの値は、現れなければならない、コンマ ( ブランクなし ) によってコマンドへの1つの引数として分離される。
-n名 CDLは、netCDF datasetのために名前を必要とする、というのは、デフォルトnetCDF dataset名前を生み出す際` ncgen -b 'によって使用するからだ。デフォルトによって、ncdumpは、それが持つあらゆる拡張部分を除去することによる入力netCDF datasetのファイル名の最後のコンポーネントからこの名前を組み立てる。異なる名前を指定するために` -n 'オプションを使いなさい。出力ファイル名前が使用したが、によって、ncgenする'、-bは、指定され得る、それは、賢明であるかもしれない、に、ncdumpを持つ、デフォルト名前を変える、に、ncdumpを使っているとき、価値のあるnetCDF datasetに不注意にオーバーライトすることを回避する、編集、その結果生じるCDLファイル、及び、使用は、ncgenする'、編集されたCDLから新しいnetCDF datasetを生成するための-bは、ファイルする。

netCDF dataset foo.ncにおいてデータの構造を見なさい:



ncdump -c foo.nc
注釈のためにC‐スタイルのインデックス付けを使って、netCDF dataset foo.ncにおいて構造、及び、データの注釈されたCDLバージョンを生み出しなさい:



ncdump -b c foo.nc > foo.cdl
netCDF dataset foo.ncからの変数uwind、及び、vwindのみのためにデータをアウトプットし、そして、精度のわずか3つの有意の数字によって浮動少数点データを示しなさい:



ncdump -v uwind、vwind -p 3 foo.nc
変数オメガのためのデータの十分に‐注釈された ( ラインにつき1つのデータ値 ) リスティングを生じさせなさい ( インデックスのためにFORTRAN規定を使っている、そして、その結果生じるCDLファイルにおけるnetCDF dataset名前をオメガに変えている ) :



ncdump -v omega -f fortran -n omega foo.nc > Z.cdl

10.1 - CDLシンタックス
10.2 - CDLデータタイプ
10.3 -データ定数のためのCDL表記法
10.4 - ncgen
10.5 - ncdump

FortranのためのNetCDFユーザーのガイド- 1997年6月5日
[次] [性急過ぎる ] [トップ ] [内容 ] [インデックス ] [ netCDFホームページ ] [ユニ‐データホームページ]