[ gtool4 トップページ / SIGEN.htm / メモ書きファイルリスト]
- 参加者
- 目的
- 調査の方法
- 調査結果 (途中経過)
- 考察
石渡 正樹, 小高 正嗣, 高橋 芳幸, 杉山 耕一朗, 森川 靖大
gtool4 netCDF 規約の存在自体に関しての問題提起 (CF 規約に乗り換えられ
るのではないか?) が 3 月の davis ミーティングにおいて為されたので,
CF 規約との比較を行い, gtool4 規約の存在意義 (?) を確認する.
もしくは CF 規約へと移行する際, 注意する点を洗い出す.
まずは gtool4 netCDF 規約で規定される各属性に関して, CF 規約において
どのように定義されているのかを手分けして確認する.
gtool4 netCDF 規約の
6. netCDF 名前リファレンス
のリストから担当者を決め, 個々の属性が CF 規約においてどのように
規定されているか, 調査する.
それぞれの担当者が関連する数個の属性を調査する.
- 欠損値系 : 石渡
- missing_value
- _FillValue
- add_offset
- scale_factor
- valid_range
- valid_min
- valid_max
- 大域属性系 : 小高
- Conventions
- history
- institution
- gt_history
- title
- gt_subtitle
- source
- 変数属性系 (従来型変数): 杉山
- long_name
- standard_name
- units
- 軸系 : 森川
- coordinates
- associate
- modulo
- topology
- bounds
- 軸系 : 石渡
- subgrid
- coord_op
- old_interval
- old_spacing
- expand
- gt_calc_weight
- positive
- calendar
- north_pole
- 存在 (元々どちらの規約に存在する属性か)
- gtool4 規約: あり or なし
- CF 規約: あり or なし
- 属性 (gtool4 規約, CF 規約における属性の分類)
- gtool4 規約: 必須 or 推奨 or 選択
- CF 規約: 推奨 or 選択 (調べた限り, 「必須」は存在しない).
- 備考
- CF 規約との相違
- 「CF 規約を使う際のガイドライン (仮)」(考察 参照) を作成する際,
どういった記述が必要になるかを念頭においてチェックする.
- 例: gtool4 規約では必須である, gtool4 規約では属性値の
書式が決まっている, とか
- 「CF 規約を使う際のガイドライン (仮)」(考察 参照) では
どう指定すべきか
- 担当者ごとの私見でよいので, とりあえず提案する.
- 履歴
- 担当者と日付, 備考もあればそれも
- 具体例: 2006/04/28 (森川 靖大) 備考にいちゃもんをつける
凡例
=== <属性名>
* <各調査項目>:
* <小項目>: <結果>
* <小項目>: <結果>
具体例
=== gt_version
* 存在:
* gtool4 規約: あり
* CF 規約: なし
* 属性:
* gtool4 規約: 必須
* CF 規約: なし
* 備考:
* 「規約」でなくなるとすると位置づけが微妙... 要検討
* 履歴
* 2006/04/28 (森川 靖大) 新規作成
05/09 (火) 13:30 までにそれぞれメールで報告する.
- 存在: あり
- 属性: 選択
- 備考:
- 用途は CF 規約も gtool4 規約も同様
- CF 規約では COARDS 規約との互換性のため「選択」属性としているのに対し,
gtool4 規約では CSM 規約との互換性のため「必須」属性としている.
- 存在: あり
- 属性: 選択
- 備考:
- 用途は CF 規約も gtool4 規約も同様
- CF 規約では COARDS 規約との互換性のため「選択」属性としているのに対し,
gtool4 規約では CSM 規約との互換性のため「必須」属性としている.
- 存在: あり
- 属性: standard_name か long_name のどちらかが必須
- 備考:
- CF 規約 3.2 節 参照
- そもそも NUG で規定されている.
- gtool4 規約で規定された使い方と同じ
- 変数の説明として, long_name か standard_name のどちらかが必須.
- long_name 自体は COARDS 規約との互換性を保つために規定している.
互換性を気にしなければ, standard_name を使う方が良いようだ.
- 存在: あり
- 属性: 必須? (明記されていない)
- 備考:
- CF 規約 2.6.2 節参照
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#des
- そもそも NUG で規定された帯域属性
- 行頭にタイムスタンプを入れることを推奨.
- gtool4 規約よりも制約が緩い.
- gtool4 規約では, 「日時, スペースひとつ, ユーザ名, "> ", コマンドライン, 改行文字」を入れることを必須としている.
- 存在: あり
- 属性: 必須 (無次元変数に対しては, 必須でない)
- 備考:
- CF 規約 3.1 節参照
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#units
- 単位名は UNIDATA's Udunits package [UDUNITS] を用いることが
求められている.
- http://www.unidata.ucar.edu/software/udunits/udunits.txt
- gtool4 規約で規定された使い方と同じ
- 存在: あり
- 属性: 推奨 (ただし次元変数のみに対してであり, 次元変数以外には付加しない)
- 備考:
- CF 規約, gtool4 規約ともに用途は同様
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#bnds
- http://www.gfd-dennou.org/library/gtool4/gt4ncconv/gt4ncconv_current/trad.html#coordinate
- http://www.gfd-dennou.org/library/gtool4/gt4ncconv/gt4ncconv_current/attr_ref_a.html#bounds
- gtool4 規約では変数 dimension に境界変数を与える場合, その名前を
bounds_dimension とすることを推奨する (例: lon:bounds = "bounds_lon").
一方で CF 規約では dimension_bnds とすることが推奨される.
(例: time:bounds = "time_bnds". この推奨事項に関しては, 明示的に
「この書き方を推奨する」とは述べられていないが, 紹介されている
具体例は全てこの命名法に則っていた).
- 存在: あり
- 属性: 選択
- 備考:
- CF 規約, gtool4 規約ともに用途は同様
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#pack
- http://www.gfd-dennou.org/library/gtool4/gt4ncconv/gt4ncconv_current/trad.html#general
- http://www.gfd-dennou.org/library/gtool4/gt4ncconv/gt4ncconv_current/attr_ref_h.html#scale_factor
- 存在: あり
- 属性: 選択
- 備考:
- CF 規約, gtool4 規約ともに用途は同様
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#grids
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#lab
- http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#altc
- http://www.gfd-dennou.org/library/gtool4/gt4ncconv/gt4ncconv_current/trad.html#coordinate
- http://www.gfd-dennou.org/library/gtool4/gt4ncconv/gt4ncconv_current/attr_ref_a.html#coordinates
- 存在: (多分)なし
- 属性: (多分)必須条件は記載されていない
- 備考
- 存在: あり
- 属性: 非推奨
- 備考
- そもそも NUG で規定されている.
- gtool4 規約で規定された使い方と同じ.
- しかし, CF では, 欠損値には _FillValue で指定した値を使うことを
強く推奨している.
- CF 規約で記述されている場所は 2.5.1 節.
- packed data について, unpack する前に valid_range 内の値かどうかを
判定せよと定められている.
これは gtool4 規約でわざわざ設けたルールと同じ.
- 存在: あり
- 属性: 選択
- 備考
- そもそも NUG で規定されている.
- gtool4 規約で規定された使い方と同じ.
- packed data に対する解釈方法(add_offset を使う前に
欠損値かどうかを判定する)も, わざわざ gtool4 規約の
では明示するようにしたが, それについても同じことが
書かれている.
- CF 規約で記述されている場所は 8.1 節.
- 2.5 変数
変数命名ルールは設けない.
- 2.5.1 packed data
- missing_value は推奨しない. _FillValue を使いなさい.
- valid_range, valid_min, valid_max は他(含 gtool4) と同様
- scale_factor, add_offset gtool4 と同様.
- 4.4 時間軸
時間軸は units 属性を持たねばならない. units 属性は UDUNITS に従え.
いくつかの場合について例を示しているようだ.
* 5.4 station data の時系列
* 5.5 trajectory
cell (箱みたいなやつ)にはりついたデータの表現を考えているらしい.
cell の境界位置を表す bound 属性付けなさい, とか書いてあるみたい.
2 つの方法: packing と compression
8.1 packed data
scale_factor と add_offset の両方がついているデータを読むときは
(解釈系の動作)
scale_factor * (データ値) + add_offset
とする.
データを書くときは(生成系の動作)
(データ値 - add_offset) / scale_factor
とする.
上記は NUG でも定められているが, CF では packed data と
scale_factor, add_offset で型が違う場合についても
解釈系の動作を定めている.
packed data と add_offset, scale_factor の型が違う場合は
属性の方にあわせるべし.
また,
add_offset と scale_factor はともに, float であるか
ともに double であるべし.
8.2 compression
読んでない.
属性の数自体は少ない. 規約自体はsimple だな.
- CF 規約で定められている属性自体は少ないので, 我々独自の属性を
付けたい時はどうするかのルール(gt_ にする!)は残しておいた方が
良さそう.
CF 規約では, gtool4 規約における, いわゆる「必須」属性というものが無い.
(調べた限りでは, CF 規約は COARDS 規約との後方互換を重視し, title や
source などにしても必須属性ではない). そのため, 任意性が高く, そのま
ま gtool4 規約に代えて自分たちが使う規約とするには不便である.
そのため, CF 規約に乗るにしても, 「CF 規約を使う際のガイドライン」の
ようなものを定め, 「これこれの属性は必ず付加するようにすること.
書式はこのようにすること」といった決まりごとが必要であろう.
現在のところ, 基本方針は CF 規約に乗り, その規約利用のガイドライン
も作成する, である.
gtool4 Development Group / GFD Dennou Staff
Last Updated: 2006/04/28, Since: 2006/04/25