[ 地球流体電脳倶楽部 / davis / Gfdnavi / doc ]

データおよびディレクトリツリーの自動スキャン

Gfdnavi (Geophysical fluid data navigator) では、 所定のディレクトリ以下に置かれた地球流体データおよび そのメタデータファイルを自動スキャンし、データベースに登録しています。 以下ではユーザが自身の地球流体データをデータベースに登録する方法を 解説します。


  1. Gfdnavi がスキャンするディレクトリ
  2. データファイル
  3. メタデータファイル
  4. データベースへの登録
  5. 座標変数と物理量変数の区別
  6. YAML ファイルの書き方
  7. SIGEN ファイルの書き方
  8. 時間・緯度・経度座標の判定基準
  9. 言語設定

Gfdnavi がスキャンするディレクトリ

スキャンするディレクトリは config/gfdnavi.yml ファイルで 指定されています。このファイルのデフォルトは以下のように記述されて います。

data: RAILS_ROOT/public/data

diagram: RAILS_ROOT/public/diagrams

user: RAILS_ROOT/usr

work: RAILS_ROOT/tmp/work

ignored_dirs:
  - !ruby/regexp /^CVS$/i
  - cvsroot

最上部に記述される data: RAILS_ROOT/public/data にてスキャンする トップディレクトリを指定しています。 RAILS_ROOT は、現在いるはずの gfdnavi ディレクトリです。

例えば gfdnavi ディレクトリが /home/davis/gfdnavi である場合には、 /home/davis/gfdnavi/public/data ディレクトリ以下のデータがスキャン されます。

※ data: 以下は閲覧者にダウンロードを許可するデータの置き場です. 将来的には user: 以下のデータ (ダウンロード不可) もスキャン予定です.

データファイル

スキャンされるデータの形式は以下の通りです。

これらのデータ形式では、ファイル内にはいくつかの座標変数 (例えば緯度、経度、高度) といくつかの物理量変数 (例えば風速、温度) が格納されています。 Gfdnavi はこれらのデータ内の物理量変数をデータとしてスキャンします。 座標変数に関しても物理量変数のメタデータとしてスキャンします。 詳しくは 座標変数と物理量変数の区別 を参照してください。

メタデータファイル

メタデータファイルとして、YAML ファイル を使用することができます。これらのファイルにデータに関する付加情報を 記述することで、データベースに登録されるデータに情報を付加したり、 複数のファイルに分割されているデータを一つに統合した仮想データ をデータベースに登録することが 可能です。詳細は YAML ファイルの書き方 を参照ください。

他にもメタデータファイルとして SIGEN ファイル を使用することも可能です。SIGEN ファイルの場合は、 データベースに登録されるデータへの情報の付加のみを行うことが可能です。 詳細は SIGEN ファイルの書き方 を参照ください。

データベースへの登録

上記の データファイルメタデータファイルGfdnavi がスキャンするディレクトリ に置いた後、RAILS_ROOT ディレクトリに移動して以下のコマンドを実行することでデータベースが 更新されます。

% rake setup

※ コマンドの通り、現在はデータベースを一旦全部クリアした後にもう一度 全てのディレクトリ、データファイル、メタデータファイルを解析して データベースへの登録を行っています。 将来的には、更新されたファイルのみを追記登録する形にしていく予定です。

座標変数と物理量変数の区別

座標変数と物理量変数との区別はデータ形式によって異なります。

YAML ファイルの書き方

YAML ファイルは Gfdnavi がスキャンするディレクトリ 以下に 置きます。ファイル名は

<情報の付加先であるディレクトリ名>.yml
<情報の付加先であるデータファイル名>.yml

とします。例えば、jmadata というディレクトリに情報を付加する場合には、 そのディレクトリと同じ場所にjmadata.ymlという名前の ファイルを作成します。UV.jan.nc というデータファイルに情報を付加する 場合には、UV.jan.nc.yml という名前のファイルを作成します。

メタデータの付加

メタデータを付加する場合、YAML ファイルには以下のように ハッシュのリストを記述してください。

title: starndard pressure level data

creator: N. Hashiguchi, RISH, Kyoto Univ.

description:
    The raw data obtained from NCEP were screened
    with an algorithm suitable for the tropical conditions.
    The files archived here contains data only at the
    standard pressure levels.

    See http://dss.ucar.edu/datasets/ds353.4/ for more
    info on the original data.

言語の設定に関しては 言語設定 を参照してください。

複数ファイルに分割されたデータを一つの仮想データに統合

データ形式の制約、描画ユーティリティが扱えるファイルサイズの限界、 ファイルの可搬性の都合から、本来 1 つのデータが複数ファイルに分割 されているということは多々あります。Gfdnavi では YAML メタデータファイル によってそれら分割されているデータを 1 つの仮想データに統合して 取り扱うことが可能です。

例えば、MSM-P/2006 というディレクトリ以下に、0101.nc、0102.nc、... 1231.nc というファイルが存在し、これらに u (東西風)、v (南北風)、 temp (温度) のデータが時間方向に分割されているとします。

MSM-P
`-- 2006
    |-- 0101.nc   # 2006-01-01 の u、v、temp のデータを格納
    |-- 0102.nc   # 2006-01-02 の        〃
    |        :
    |        :
    `-- 1231.nc   # 2006-12-31 の        〃

ここで、MSM-P ディレクトリ以下に 2006.yml ファイルを作成し、 以下のように記述します。

contains:
  010[1-3].nc/u:
     remark: This variable is united data

  02??.nc/v in ../2006-02_v.nc:
     remark: This variable is united data (aliased)

  *.nc@temp: in ../2006_temp.nc:
     remark: This variable is united data  (aliased)

これにより、MSM-P/2006 以下に 010[1-3].nc/u、MSM-P 以下に 2006-02_v.nc2006_temp.nc という仮想データが作成され、 データベースに登録されます。

MSM-P
|-- 2006
|   |-- 010[1-3].nc/u     # 仮想データ
|   |-- 0101.nc
|   |        :
|   `-- 1231.nc
|
|-- 2006-02_v.nc          # 仮想データ
`-- 2006_temp.nc          # 仮想データ

それぞれの仮想データは以下のデータを統合したものです。

YAML ファイル内の記法の説明を説明します。ハッシューのキーには 複数ファイルを指定します。複数のファイルを指定する際には 以下のメタキャラクタを使用してください。

? (クエスチョンマーク) :: 任意の 1 文字
* (アスタリスク)       :: 0 個以上の文字からなる任意の文字列
[]                     :: 指定範囲内、または一連の指定文字の任意の 1 文字

仮想データの名前にはキーの表記がそのまま使用されます。 変更したい場合は、下記のように複数ファイルの後ろに in <ファイル名> を記述してください。ファイル名は相対パスで 指定してください。

02??.nc/v in ../2006-02_v.nc:

仮想データに情報を付加したい場合には以下の remark: ... のように ハッシュを記述してください。

02??.nc/v in ../2006-02_v.nc:
  remark: This variable is united data (aliased)

この例では時間方向に分割されたデータを統合しましたが、緯度や経度方向に 分割されたデータも統合することが可能です。

座標軸の判定については 時間・緯度・経度座標の判定基準 を参照して ください。

各変数へ個別にメタデータを付加

以下では、データファイル内の変数にメタデータを付加する方法を 紹介します。 例えば、UV.jan.nc というデータファイル内の変数に情報を付加する 場合には、UV.jan.nc.yml という名前のファイルを作成し、 以下のように contains キーを使用して情報を記述します。 値にはさらにハッシュのリストを記述します。 値には変数名、キーには付加すべき情報をこれまたハッシュで与えます。

contains:
  U:
    long_name: zonal wind
    missing_value: 999.0e+0
  V:
    long_name: merional wind
  %:
    remark: number of grid points are significantly reduced by thinning.

最後の変数が "%" になっていますが、これはファイル内に存在する 全ての変数を表す SQL 文のメタキャラクタです。他にも以下の文字が使用できます。

_ (アンダースコア)  :: 任意の 1 文字
% (パーセント記号)  :: 0 個以上の文字からなる任意の文字列
[]                  :: 指定範囲内、または一連の指定文字の任意の 1 文字
[^]                 :: 指定範囲外、または一連の指定文字以外 の任意の 1 文字

SIGEN ファイルの書き方

SIGEN ファイルは Gfdnavi がスキャンするディレクトリ 以下に 置きます。ファイル名は

<情報の付加先であるディレクトリ名>.SIGEN
<情報の付加先であるデータファイル名>.SIGEN

とします。例えば、jmadata というディレクトリに情報を付加する場合には、 そのディレクトリと同じ場所にjmadata.SIGENという名前の ファイルを作成します。UV.jan.nc というデータファイルに情報を付加する 場合には、UV.jan.nc.SIGEN という名前のファイルを作成します。

SIGEN ファイルの書き方は mksigen ページの mksigen-sigen(5) に従ってください。 ただし、フィールド名は mksigen-sigen(5) で記述されているもの以外でも 有効です。例えば、Subject や Description ではなく、

Title:    operation radiosonde data archive

Comments: Archive of operational radiosonde data transmitted
          originally through WMO's GTS network.

のように記述してもデータベースへと登録されます。

言語の設定に関しては 言語設定 を参照してください。

時間・緯度・経度座標の判定基準

複数のファイルに分割されたデータを統合して仮想データを作成する際、 個々のデータの時間、緯度、経度といった座標は連結されます。

以下には、連結される時間、緯度、経度座標の判定方法を記します。

時間座標の判定方法

緯度座標の判定方法

経度座標の判定方法

言語設定

YAML ファイルもしくは SIGEN ファイルによって付加される情報には 言語の設定を行うことが可能です。

ファイルごとの言語設定

言語ごとに別々のメタデータファイルを用意する場合には、 jmadata.yml.jaUV.jan.nc.yml.en のように拡張子の末尾に .ja.en を付加します。 現在対応している言語設定はこの2つのみです。

フィールドごとの言語設定

各フィールドごとに言語設定する場合は、以下のように フィールド名の末尾に -ja-en を付加します。

Title-en:    operation radiosonde data archive
Title-ja:    ラジオゾンデデータアーカイブ

なお、言語設定が無い場合でも、フィールドもしくはフィールド内の文字列が 日本語である場合には自動的に言語設定が日本語に設定されます。


davis Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: 2007/03/10 (森川 靖大), Since: 2007/01/15 (森川 靖大)