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

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

2 NetCDF Datasetのコンポーネント


2.1 NetCDFデータモデル


netCDF datasetは、次元変数、及び、属性を含む、そして、それは、全ては、名前と、それらが確認されるID番号の両方を持っている。これらのコンポーネントは、アレイ指向のdatasetにおいてデータフィールドの間のデータ、及び、関係の意味を獲得するために共に使われ得る。普通のファイル名に加えて、netCDFライブラリは、同時のアクセスをdataset ID番号によって確認される多重netCDF datasetsに許す。

AnetCDF datasetは、それらの名前、データタイプ、ランク ( 次元の数 ) 、次元、及び、起動ディスクアドレスを含む変数のために記号テーブルを含む。各エレメントは、それが確認されるアレイインデックス ( 添字 ) の一次関数であるディスク住所に格納される。従って、これらのインデックスは、別々に ( リレーショナルデータベースと同様に ) 格納する必要がない。これは、速く、コンパクトな記憶方法を提供する。

2.1.1規定を指定すること

レターで始まって、次元、変数、及び、属性の名前が文字数字両用のキャラクタ ( と同様に` _ '、及び、ハイフン-に下線を引く ) の随意のシーケンスから成る、〜もしくは、下線を引く。( しかしながら始まることを指定する、に関して、下線を引く、システム使用のために保存される。 ) ケースは、netCDF名において有意である。

2.1.2ネットワークの一般のデータは、言語 ( CDL ) を形成する

我々は、netCDFデータモデルの概念を例証するために小さいnetCDF例を使うであろう。これは、次元、変数、及び、属性を含む。このシンプルなnetCDFオブジェクトを示すために使われる表記法は、CDL ( ネットワークCommon DataフォームLanguage ) ( netCDF datasetsを示す便利な方法を提供する ) と呼ばれる。netCDFシステムは、逆もまた同じであるがバイナリnetCDF datasetsから人間指向のCDLテキストファイルを作るためにユーティリティを含む。



netCDF datasetのためのCDL表記法のnetcdf example_1 { //例

次元://次元名前、及び、長さは、最初のlat = 5であると宣言される、lon = 10、レベル= 4、時間=、無制限の;

変数://変数タイプ、名前、形、属性フロートtemp ( time、レベル、lat、lon ) ;
temp :long_name =「温度」、temp:units =「celsius」、フロートrh ( time、lat、lon ) ;
rh :long_name =「相対湿度」; rh:valid_range = 0.0、1.0、// min、及び、max int lat ( lat ) 、lon ( lon ) 、level ( level ) ;
lat :ユニット=「degrees_north」;
lon :ユニット=「degrees_east」; level:units =「ミリバール」;短いtime ( time ) ; time:units =、1996-1-1 ; //グローバルな属性:source =「架空のモデルOutput」以来の時間;

データ://の任意のデータ割当レベル= 1000、850、700、500 ;
lat = 20、30、40、50、60 ;
lon = -160、-140、-118、-96、-84、-52、-45、-35、-25、-15 ;
時間= 12 ;
rh =.5 .2 .4 .2 .3 .2 .4 .5 .6 .7 .1 .3 .1 .1 .1 .1 .5 .7 .8 .8 .1 .2 .2 .2 .2 .5 .7 .8 .9 .9
.1 .2 .3 .3 .3 .3 .7 .8 .9 .9 0 .1 .2 .4 .4 .4 .4 .7 .9 .9
}
netCDF datasetのためのCDL表記法は、ncdump、後で示されたユーティリティプログラムを使うことによって自動的に生成され得る ( 見なさい、Section 10.5「ncdump」、104 ) 。他のnetCDFユーティリティ、ncgenは、CDL入力、からのnetCDF dataset ( 或いは、随意に、コールを含むC、もしくは、FORTRANソースコードは、netCDF datasetを生産する必要があった ) を生成する。 Section 10.4「ncgen」、103ページを 見なさい ) 。

CDL表記法は、簡単である、そして大いに自明である。我々がnetCDF datasetのコンポーネントについて述べるので、それは、更に十分に説明されるであろう。当分は、CDLステートメントがセミコロンによって終了することに注目しなさい。スペース、タブ、及び、newlinesは、読み易さのために自由に使われ得る。CDLにおけるコメントは、あらゆるライン上でキャラクタ` // 'の後に続く。netCDF datasetのCDL記述は、フォームをとる



netCDF名前{
次元:... .
変数:... .
データ:... .
}
その名前がどこにあるかは、ファイル名前を組み立てる際デフォルトとしてのみ使用した、によって、ユーティリティをncgenする。CDL記述は、3つの任意のパーツから成る ( キーワード次元変数、及び、データによって導入されて ) 。NetCDF次元宣言は、次元キーワードの後で現れ、netCDF変数、及び、属性は、変数キーワードの後で定義され、そして、変数データ割当は、データキーワードの後で現れる。

2.2次元


次元は、真の物理的次元 ( 例えば ) 時、緯度、経度、または、高さを表すために使われるかもしれない。次元は、他の量、例えばステーション、または、model-run-numberにインデックスを付けるために同じく使われるであろう。

AnetCDF次元は、名前及び長さを持っている。netCDF datasetにおける1つの次元が長さUNLIMITEDを持っていることができるということを除けば、次元長さは、随意の正の整数である。

そのような次元は、無制限の次元、または、レコード次元と呼ばれる。無制限の次元を持つ変数は、その次元に沿ったあらゆる長さまで増大し得る。無制限の次元インデックスは、従来のレコード指向のファイルにおけるレコード番号のようである。netCDF datasetは、せいぜい1つの無制限の次元を持っていることができる。しかし、少しも持つ必要がない。変数が無制限の次元を持っているならば、その次元は、最も有意の ( 最も遅い変わること ) ものでなければならない。このように、あらゆる無制限の次元は、CDL形において最初の次元でなければならない、そして、一致する際の最後の次元FORTRANアレイ宣言。

CDL次元宣言は、CDLキーワード範囲を追跡する1以上のラインに現れるかもしれない。同じライン上の多重次元宣言は、コンマによって分離されるかもしれない。各宣言は、フォーム名前=長さである。

前述の例に4つの次元がある:latlonレベル、及び、時間。第1 3、固定長を割り当てられる;時間は、長さUNLIMITED ( それが無制限の次元であることを意味する ) を割り当てられる。

netCDF datasetにおける指定されたデータの基本単位は、変数である。変数が定義されるとき、そのは、次元のリストとして指定される。既にこれらの次元は、存在しなければならない。次元の数は、ランク ( a.k.a. dimensionality ) と呼ばれる。段階状の変数は、ランク0を持っており、ベクトルは、ランク1を持っており、そして、マトリックスは、ランク2を持っている。

変数形を指定する際1回以上の同じ次元を使うことは、可能である ( しかし、これは、前のnetCDFバージョンにおいて可能ではなかった ) 。例えば、correlation ( instrument、機器 ) は、異なる機器を使う測定の間の相関を与えるマトリックスであろう。しかし、次元が物理的スペース/時間のそれらと一致するデータは、異なる次元を含む形を持っているべきである。たとえ、これらのうちのいくらかが同じ長さを持っているとしても。

2.3変数


変数データの部分をnetCDF datasetに格納するために使われる。変数は、一連の同じタイプの値を示す。段階状の値は、0‐寸法のアレイのように扱われる。変数は、名前、データタイプを持っており、そして、次元のそのリストによって記述された形は、いつその変数が作成されるかを明示した。変数は、加えられるかもしれない属性を同じく結び付けたかもしれない ( その変数が作成された後で、削除される、もしくは変えられて ) 。

変数の外部のデータタイプは、netCDFの小さいセットのうちの1つである名前を持つタイプNF_BYTE同義語を持つ ( NF_INT1 ) 、NF_CHARNF_SHORT同義語を持つ ( NF_INT2 ) 、NF_INT ,NF_FLOAT同義語を持つ ( NF_REAL ) 、そして、NF_DOUBLEで、FORTRANインタフェース。

で、CDL表記法、これらのタイプは、更にシンプルな名前バイトを与えられる、木炭短いintフロート、及び、ダブル実数は、CDL表記法におけるフロートの同義語として使われるかもしれない。長くintの非難された同義語である。各々のタイプの正確な意味について、 Section 3.1「netCDFの外部のデータタイプ」、15 ページにおいて論じられる。

CDL変数宣言は、CDLユニットにおける変数キーワードの後で現れる。それらは、フォームを持っている



variable_name ( dim_name_1、dim_name_2、... ) をタイプしなさい;

次元を持つ変数のために、〜もしくは、



variable_nameタイプしなさい;

段階状の変数のために。

そこの前述のCDL例、6つの変数である。下で論じられたように、これらのうちの4つは、対等の変数である。残っている変数 ( 時折一次変数と呼ばれる ) 、temp、及び、rhは、データと通常考えられるものを含む。これらの変数の各々には、その最初の次元として無制限の次元時間がある。従って、それらは、レコード変数と呼ばれる。レコード変数ではない変数は、その次元長さの製品によって与えられた固定長 ( データ値の数 ) を持っている。レコード変数の長さは、同じくその次元長さの製品である。しかし、この場合、それが変化し得る無制限の次元の長さを包含するので、その製品は、変数である。無制限の次元の長さは、レコードの数である。

2.3.1変数を統合する

変数が次元と同じ名前を持っていることは、合法的である。そのような変数は、netCDFライブラリに特別な意味を持っていない。どんなに規定があっても、そのそのような変数は、このライブラリを使うソフトウェアによって特別な方法で扱われるべきである。

A次元と同じ名前を持つ変数は、対等の変数と呼ばれる。それは、典型的に物理的な対等の一致をその次元に定義する。前述のCDL例は、対等の変数latlonレベル、及び、時間を含む ( 次のとおりに定義されて ) :



int lat ( lat ) 、lon ( lon ) 、level ( level ) ;
短いtime ( time ) ;
... .
データ:
レベル= 1000、850、700、500 ;
lat = 20、30、40、50、60 ;
lon = -160、-140、-118、-96、-84、-52、-45、-35、-25、-15 ;
時間= 12 ;

これらは、これらの次元に沿ったポジションと一致する緯度、経度、気圧、及び、時代を定義する。このように、1000、850、700、及び、500ミリバールと一致する高度でデータがある;そして、緯度20、30、40、50、及び、60度北で。各対等の変数がベクトルであり、そして、同じ名前によって単に次元から成る形を持つことに注目しなさい。

次元に沿ったポジションは、インデックスを用いて指定され得る。これは、最小値を持つ整数である、の、FORTRANプログラムのための1。このように、700ミリバールレベルは、インデックスを持っているであろう、値、の、上の例における3。

次元に一致する対等の変数があるならば、それから、これは、これに代るもの、及び、それに沿ってポジションを指定するしばしば更に便利な方法を提供する。現在のアプリケーションパッケージ ( 一般に対等の変数を利用する ) は、それらが数値ベクトルであり、そして、絶対にモノ‐強壮にする、と推測する ( 全ての値が異なり、そして、増加している、もしくは減少している ) 。

2.4属性


NetCDF属性は、データ辞書に格納される情報への多くの道で類似したデータ ( 付属のデータ、または、metadata ) 、及び、従来のデータベースシステムにおけるスキーマについてデータを格納するために使われる。大部分の属性は、特定の変数に関する情報を提供する。これらは、属性の名前と共にその変数の名前 ( 或いは、ID ) によって確認される。

いくらかの属性は、全体としてdatasetに関する情報を提供し、そして、グローバルな属性と呼ばれる。これらは、空白の変数名 ( CDLで ) 、または、特別な無効の「広域変数」ID ( C、または、Fortranで ) と共に属性の名前によって確認される。

属性は、関連する変数 ( グローバルな属性のための無効の「広域変数」 ) 、名前、データタイプ、長さ、及び、値を持っている。現在のバージョンは、全ての属性をベクトルのように扱う;段階状の値は、シングル‐エレメントベクトルのように扱われる。

適用できる所で、従来の属性の名前は、使われるべきである。新しい名前は、できる限り有意義であるべきである。

それが作成されるとき、外部のタイプの属性は、指定される。属性のために可能にされたタイプは、変数のためにnetCDFの外部のデータタイプと同じである。異なる変数のための同じ名前を持つ属性は、時折異なるタイプであるべきである。例えば、タイプintの変数のために最大の正当なデータ値を指定する属性のvalid_maxは、タイプintであるべきである、一方、タイプダブルの変数のための属性のvalid_maxは、その代りにタイプダブルであるべきである。

属性は、変数、または、次元より動的である;それらは、削除され、そして、それらのタイプ、長さを持たれ得て、そして、それらが作成された後で、値は、変わった、一方、netCDFインタフェースは、変数を削除する、及び、そのタイプ、または、形を変える方法を提供しない。

属性を定義するためのCDL表記法、である、



variable_name:attribute_name = list_of_values ;

変数属性のために、〜もしくは、



:attribute_name = list_of_values ;

グローバルな属性のために。各属性のタイプ、及び、長さは、CDLで明白に宣言されない;それらは、属性に割り当てられた値から得られる。属性の全ての値は、同じタイプでなければならない。後で様々なnetCDFタイプの固定価値のために使われる表記法について、論じられる ( Section 10.3を見なさい、Data Constants、102ページのための ) 。

netCDF例 ( Section 2.1.2ネットワークCommon Data Form Language ( CDL ) 、9ページを 見る ) において、ユニット、変数latのための属性である、それは、13文字アレイ値` degrees_north 'を持っている。そして、valid_rangeは、変数rh ( 長さ2を持ち、そして、` 0.0 '、及び、` 1.0 'を評価する ) のための属性である。

1つグローバルな属性--ソース--は、例netCDF datasetのために定義される。これは、データを実証することのそのためのものであるキャラクタアレイである。現実のnetCDF datasetsは、起点、歴史、規定、及び、dataset全体の他の特性を実証するための更にグローバルな属性を持っているであろう。

大部分の一般的なアプリケーション ( プロセスnetCDF datasetsが標準の属性の規定、及び、それが強くそうであると推測する ) は、そうしないことの良い理由があらない限り、これらが進められることを勧めた。ユニットlong_namevalid_minvalid_maxvalid_rangescale_factoradd_offset_FillValue、及び、他の従来の属性に関する情報のために Section 8.1「属性のConventions」、81 ページを見なさい

それが最初に定義された後で、属性は、netCDF datasetに長く加えられるかもしれない。従って、あなたが全ての潜在的に有益な属性を予期する必要はない。しかしながら、新しい属性を現存するdatasetに加えることは、datasetをコピーすると同じ費用を負うことができる。 9 章を見る、「NetCDF File Structure、及び、Performance」、更に広い討論のための95 ページ

2.5属性、及び、変数の間の差異


変数 ( バルクデータのためのものである ) とのコントラスト、属性は、付属のデータ、または、データに関する情報のためのものである。netCDFオブジェクトと関連しており、そして、その属性に格納された付属のデータの総計は、記憶‐居住者であるのに十分に典型的に小さい。しかしながら、変数は、しばしばメモリを完全にはめ込むにはあまりにも大きく、そして、処理のためのセクションに分割されなければならない。

属性、及び、変数の間の他の差異は、変数がマルチ‐寸法があるかもしれないことである。属性は、全てスカラ ( シングル‐評価される ) かベクトル ( 1つの固定した次元 ) のいずれかである。

それらがデータ値を割り当てられる前に、変数は、名前、タイプ、及び、形によって作成される。従って、変数は、値なしで存在するかもしれない。それが作成されるとき、属性の値は、指定されなければならない。従って、属性は、値なしでかつて存在しない。

A変数は、属性を持っているかもしれない。しかし、属性は、属性を持っていることができない。変数に割り当てられた属性は、変数 ( 例えば、valid_range ) と同じユニットを持っている、もしくは、ユニット ( 例えば、scale_factor ) を持たないかもしれない。あなたが関連する変数のそれらと異なるユニットを必要とするデータを格納することを望むならば、属性より変数を使うことは、更に良い。更に一般に、データがそれらを示すのに付属のデータを必要とする、マルチ‐寸法がある、それらの値をインデックスするのに定義されたnetCDF次元のうちのどれでも必要とする、または、記憶装置のかなりの量を必要とするならば、そのデータは、属性よりむしろ変数を用いて表されるべきである。

2.1 - NetCDFデータモデル
2.1.1 -規定を指定している
2.1.2 -ネットワークの一般のデータは、言語 ( CDL ) を形成する
2.2 -次元
2.3 -変数
2.3.1 -変数を統合する
2.4 -属性
2.5 -属性、及び、変数の間の差異

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