netCDFについて
- 私のマシンでnetCDFファイルを読むことができるでしょうか
- 多分できるでしょう.netCDFは極めて多くの種類のプラットフォームに移植されており,また,多くのプログラム言語からアクセスすることができるからです.たとえば,FORTRAN, C, C++, Perl, JAVAは言うに及ばず,Pythonからもアクセスできるようになっています.
- netCDFファイルを読むためには何が必要でしょうか
- とりあえず,netCDFライブラリを,お使いのコンピュータにインストールする必要があります.これはそれほど難しい手順ではありません.詳しい手順は,netCDFライブラリのINSTALLというファイルに書かれています.
- では,netCDFライブラリがもうすでにインストールされているかどうか調べるにはどうすればいいのでしょうか?
- いちばん簡単な方法は,netCDFライブラリに付属してくるユーティリティプログラムが果たして動くかどうか調べることです.たとえば,コマンドラインからwhich ncdumpと入力してみてください.もし何かのパス名(それはncdumpというファイルのフルパスのはずです)が表示されていれば,間違いなくnetCDFライブラリはインストールされているでしょう.netCDFライブラリへのパスは,その表示されたパスから見ると../lib,インクルードファイルディレクトリへのパスは../includeとなっています.
(訳注:実はこれでは不十分で,netCDFユーティリティがインストールされているディレクトリにパスが通っていない場合には,netCDFがインストールされていてもそれが分かりません.もし上記の方法でダメであっても,念のためfind / -name ncdump -lsくらいをやってみると見つかることがあります)
- netCDFライブラリはどこで入手できますか
- UNIDATAのサイトから直接入手できます(→http://www.unidata.ucar.edu/packages/netcdf/index.html)し,そのミラーサイトからもとってくることができます.現在のバージョンは3.5です(訳注:これを訳している段階では,本家のサイトにも3.4までしか公開されていなかったのですが…)
.
- 単にnetCDFファイルの中身を見たいだけなのですが,それはどうすればいいでしょうか
- もしnetCDFライブラリをインストールしてあれば,そこにncdumpというユーティリティプログラムが使えるようになっています.このプログラムは指定したnetCDFファイルの内容を文字列にして表示してくれます.多くのオプションがありますが,もっともよく使われるのが-hオプションでしょう.これをつけると,格納されている変数とその説明だけが画面に出てきます.
- netCDFファイルのデータからグラフ(プロット)を簡単に作ることができますか
- netCDFファイルの内容をグラフ化するプログラムはたくさん作られています.まずはnetCDFサイトのソフトウェア情報ページ(→http://www.unidata.ucar.edu/packages/netcdf/software.html)をご覧になってみてください.どれか一つに決めてしまう前に,いくつかのソフトを試してみるといいでしょう.
- netCDFファイル内のデータを圧縮することは可能でしょうか
- これは痛いところを突かれました.現時点では,netCDF自体にはデータ圧縮機能は備わっていません.(訳注:netCDFの基本思想である)データへのダイレクトランダムアクセスとデータ圧縮を両立させるのは極めて難しいことであるといわざるを得ないのです.しかしUNIDATAではこの問題の解決を目指しており,なんらかのソリューションは近々得られるでしょう.
さて,LSMに関してはALMAでは別に解決法を見出しています.それは,gatheringと呼んでいます.つまり,LSMは海洋上のデータを必要としませんので,全球360×180個の点のうち,陸地の点だけデータを格納し,それらのインデクス配列をきちんと構築しておけばよいのです.データを読むときに,このインデクス配列を参照しながら元の360×180配列に正しく格納してゆけばいいのです.
- 簡単なデータを書くときでもたくさんの情報(メタデータ等)を与えなければならないのはなぜですか?
- いい質問です.netCDFファイルを作ったりデータを書き込んだりするのは一見してわずらわしく感じるかもしれないからです.しかし,一つ心に留めていて欲しいことがあります.netCDFファイルを作るために一々呼ばなければならないサブルーチンの数々は,そのファイルに対して何らかの情報を与え,そしてその情報はシンプルなテキストフォーマットではまず表現できないものであるということです.たとえば,これまでのモデル相互比較(inter-comparison)プロジェクトで使われた,テキスト形式で与えられるデータを考えてみましょう.これらは大抵長い長いREADMEファイルがくっついていて,そしてそれを読まないことにはフォーマットも数値の意味も単位も位置情報も符号の意味も,…とにかく何もかも分かりませんでした.ALMAデータ交換規約に従ってデータをnetCDF化すれば,これらの情報を一つのファイルに取り込むことができ,そしてどのプログラムからも同じ方法でその情報にアクセスできるのです.
LSM内でのフォーシングデータの扱い方について
- 今使っているLSMをALMA対応させるにはどうすればいいでしょうか
- これは,二つの事柄に大きく左右されます:一つはお使いの開発環境,もう一つは,ALMA対応したLSMを使って最初に結果を出さねばならないときまで一体どれくらい時間を使えるか,ということです.もっとも簡単で強引な方法は,ALMA対応データファイルを,それまで使っていた形式のファイルにコンバートするプログラムを書いてしまうことです.もうすこし時間が許すなら,ALMA対応データを読むルーチンをLSM内に組み込むことができるでしょう.後者の場合は,ALMA対応データファイルからいろいろな情報を簡単に得ることができるので,モデルを走らせるのがより楽になります.
もしこのコード書きで苦労するにしても,それは間違いなく一回限りのことです.将来にわたって,全てのモデル相互比較プロジェクトにおいてはALMAデータ規約を使うからです.
- LSMのドライバにnetCDFを統合してしまうことはできるでしょうか
- それは可能です.実際のところ,IPSLにおいてはこの統合を促進するプログラミングインタフェースが開発されています.その例は,たとえばPILPS-4cインタフェースを記述しているページ(→IPSL land-surface driver)で見ることができます.
- すでにnetCDFフォーマットを使っていますが,ALMA規約とは変数名などが違っています.どうすればよいでしょうか
- NCO toolsを使うシェルスクリプトを書き,相互比較用に配られたnetCDFファイルを,現在お使いの形式に書き換えてしまうこともできます.このツールでは,変数のリネームやアトリビュートの変更を行うことができるからです.正負規約や単位の変更については,ソフトウェア・バザールにあるソフトウェアを参考にしてください.
ALMA対応出力ファイルの作成について
- 今使っているLSMを,ALMA対応netCDFファイルを書き出すように改変できるでしょうか
- できます.ファイルを作成するルーチン,そしてデータを書き出すルーチンを加えればいいだけです.IOIPSLには,簡単にこの作業を行なうためのモジュールがあります.このモジュールを用いる利点は,LSMが作成するファイルが,netCDFを読めるソフトウェアを用いて解析するのに簡単であることです.
- すでにLSM出力データをnetCDFファイルで作っているのですが,ALMA対応ではありません.どうすればALMA対応にすることができるでしょうか
- 上記と同様に,NCO toolsを使うシェルスクリプトを書いてしまうのがいいでしょう.
- 生成されたnetCDFファイル内のデータの妥当性はどうすればチェックできますか
- クォリティチェック用ソフトウェアがソフトウェア・バザールにあるので,それを使うことができます.
- netCDFファイル内のデータを解析するにはどうすればよいでしょうか
- netCDFサイトのソフトウェアページ にあるパッケージ類を使えばよいでしょう.時間をかけて,一番ご希望に添うソフトウェアを探してみてください..
↑ALMAデータ規約|
↑↑プログラマよALMAを目指せ|
→原文(英語)
Last modified: Tue Apr 25 22:22:40 WEST 2000