FortranのためのNetCDFユーザーのガイド
AnetCDF datasetは、それらの名前、データタイプ、ランク ( 次元の数 ) 、次元、及び、起動ディスクアドレスを含む変数のために記号テーブルを含む。各エレメントは、それが確認されるアレイインデックス ( 添字 ) の一次関数であるディスク住所に格納される。従って、これらのインデックスは、別々に ( リレーショナルデータベースと同様に ) 格納する必要がない。これは、速く、コンパクトな記憶方法を提供する。
及び
、ハイフン-に下線を引く
) の随意のシーケンスから成る、〜もしくは、下線を引く。(
しかしながら始まることを指定する、に関して、下線を引く、システム使用のために保存される。 ) ケースは、netCDF名において有意である。
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変数、及び、属性は、変数
キーワードの後で定義され、そして、変数データ割当は、データ
キーワードの後で現れる。
AnetCDF次元は、名前及び長さを持っている。netCDF
datasetにおける1つの次元が長さUNLIMITED
を持っていることができるということを除けば、次元長さは、随意の正の整数である。
そのような次元は、無制限の次元、または、レコード次元と呼ばれる。無制限の次元を持つ変数は、その次元に沿ったあらゆる長さまで増大し得る。無制限の次元インデックスは、従来のレコード指向のファイルにおけるレコード番号のようである。netCDF datasetは、せいぜい1つの無制限の次元を持っていることができる。しかし、少しも持つ必要がない。変数が無制限の次元を持っているならば、その次元は、最も有意の ( 最も遅い変わること ) ものでなければならない。このように、あらゆる無制限の次元は、CDL形において最初の次元でなければならない、そして、一致する際の最後の次元FORTRANアレイ宣言。
CDL次元宣言は、CDLキーワード範囲
を追跡する1以上のラインに現れるかもしれない。同じライン上の多重次元宣言は、コンマによって分離されるかもしれない。各宣言は、フォーム名前=長さである。
前述の例に4つの次元がある:lat
、lon
、レベル
、及び、時間
。第1
3、固定長を割り当てられる;時間
は、長さUNLIMITED
(
それが無制限の次元であることを意味する ) を割り当てられる。
netCDF datasetにおける指定されたデータの基本単位は、変数である。変数が定義されるとき、その形は、次元のリストとして指定される。既にこれらの次元は、存在しなければならない。次元の数は、ランク ( a.k.a. dimensionality ) と呼ばれる。段階状の変数は、ランク0を持っており、ベクトルは、ランク1を持っており、そして、マトリックスは、ランク2を持っている。
変数形を指定する際1回以上の同じ次元を使うことは、可能である ( しかし、これは、前のnetCDFバージョンにおいて可能ではなかった )
。例えば、correlation ( instrument、機器 )
は、異なる機器を使う測定の間の相関を与えるマトリックスであろう。しかし、次元が物理的スペース/時間のそれらと一致するデータは、異なる次元を含む形を持っているべきである。たとえ、これらのうちのいくらかが同じ長さを持っているとしても。
変数の外部のデータタイプは、netCDFの小さいセットのうちの1つである名前を持つタイプNF_BYTE
同義語を持つ ( NF_INT1
) 、NF_CHAR
NF_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
は、データと通常考えられるものを含む。これらの変数の各々には、その最初の次元として無制限の次元時間
がある。従って、それらは、レコード変数と呼ばれる。レコード変数ではない変数は、その次元長さの製品によって与えられた固定長
( データ値の数 )
を持っている。レコード変数の長さは、同じくその次元長さの製品である。しかし、この場合、それが変化し得る無制限の次元の長さを包含するので、その製品は、変数である。無制限の次元の長さは、レコードの数である。
A次元と同じ名前を持つ変数は、対等の変数と呼ばれる。それは、典型的に物理的な対等の一致をその次元に定義する。前述のCDL例は、対等の変数lat
、lon
、レベル
、及び、時間
を含む
( 次のとおりに定義されて ) :
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。
次元に一致する対等の変数があるならば、それから、これは、これに代るもの、及び、それに沿ってポジションを指定するしばしば更に便利な方法を提供する。現在のアプリケーションパッケージ ( 一般に対等の変数を利用する ) は、それらが数値ベクトルであり、そして、絶対にモノ‐強壮にする、と推測する ( 全ての値が異なり、そして、増加している、もしくは減少している ) 。
いくらかの属性は、全体としてdatasetに関する情報を提供し、そして、グローバルな属性と呼ばれる。これらは、空白の変数名 ( CDLで ) 、または、特別な無効の「広域変数」ID ( C、または、Fortranで ) と共に属性の名前によって確認される。
属性は、関連する変数 ( グローバルな属性のための無効の「広域変数」 ) 、名前、データタイプ、長さ、及び、値を持っている。現在のバージョンは、全ての属性をベクトルのように扱う;段階状の値は、シングル‐エレメントベクトルのように扱われる。
適用できる所で、従来の属性の名前は、使われるべきである。新しい名前は、できる限り有意義であるべきである。
それが作成されるとき、外部のタイプの属性は、指定される。属性のために可能にされたタイプは、変数のためにnetCDFの外部のデータタイプと同じである。異なる変数のための同じ名前を持つ属性は、時折異なるタイプであるべきである。例えば、タイプint
の変数のために最大の正当なデータ値を指定する属性のvalid_max
は、タイプint
であるべきである、一方、タイプダブル
の変数のための属性のvalid_max
は、その代りにタイプダブル
であるべきである。
属性は、変数、または、次元より動的である;それらは、削除され、そして、それらのタイプ、長さを持たれ得て、そして、それらが作成された後で、値は、変わった、一方、netCDFインタフェースは、変数を削除する、及び、そのタイプ、または、形を変える方法を提供しない。
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_name
、valid_min
、valid_max
、valid_range
、scale_factor
、add_offset
、_FillValue
、及び、他の従来の属性に関する情報のために
Section
8.1「属性のConventions」、81 ページを見なさい。
それが最初に定義された後で、属性は、netCDF datasetに長く加えられるかもしれない。従って、あなたが全ての潜在的に有益な属性を予期する必要はない。しかしながら、新しい属性を現存するdatasetに加えることは、datasetをコピーすると同じ費用を負うことができる。 第9 章を見る、「NetCDF File Structure、及び、Performance」、更に広い討論のための95 ページ。
属性、及び、変数の間の他の差異は、変数がマルチ‐寸法があるかもしれないことである。属性は、全てスカラ ( シングル‐評価される ) かベクトル ( 1つの固定した次元 ) のいずれかである。
それらがデータ値を割り当てられる前に、変数は、名前、タイプ、及び、形によって作成される。従って、変数は、値なしで存在するかもしれない。それが作成されるとき、属性の値は、指定されなければならない。従って、属性は、値なしでかつて存在しない。
A変数は、属性を持っているかもしれない。しかし、属性は、属性を持っていることができない。変数に割り当てられた属性は、変数
( 例えば、valid_range
) と同じユニットを持っている、もしくは、ユニット (
例えば、scale_factor
)
を持たないかもしれない。あなたが関連する変数のそれらと異なるユニットを必要とするデータを格納することを望むならば、属性より変数を使うことは、更に良い。更に一般に、データがそれらを示すのに付属のデータを必要とする、マルチ‐寸法がある、それらの値をインデックスするのに定義されたnetCDF次元のうちのどれでも必要とする、または、記憶装置のかなりの量を必要とするならば、そのデータは、属性よりむしろ変数を用いて表されるべきである。