[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002284] RubyNetCDF and opendap/DODS



バイナリーパッケージメンテナーの皆様.

堀之内です.

RubyNetCDF の現在のバージョンは,opendap/dods
(http://opendap.org/) という遠隔データアクセスの NetCDF 埋め込み
型クライアントライブラリーに対応になってます.具体的には,ruby
extconf.rb したとき,もしもそのクライアントライブラリー(の比較
的新しい版)が入っていれば,自動的にそれをリンクして DODS 対応と
なります.

# 名前が紛らわしいですが,以前 DODS という名前だったのが,
   OPeNDAP/DODS とか OPeNDAP という名前に変ってます.開発者で
   も名前の変化について行けてなかったりするようです.以後,
   DODS と呼びます.ちょっと前に話題になったジョバンニでも
   使われてます.

さて,ここからが本題ですが,RubyNetCDF の各OS用バイナリーパッケー
ジでは DODS 対応になってるでしょうか.問題は,そのクライアントラ
イブラリーのインストールがかなり面倒だということです(もうやり方
忘れました.もはや再現出来ないかも).

pc linux に関しては,

  http://ruby.gfd-dennou.org/products/ruby-netcdf/#download

に,DODS 入りでコンパイルしたのがありますので,netcdfraw.so だけ
ここから取ってきたものに入れ替えれば対応できると思うので,
linux 系のパッケージに関しては,もし非対応なら取り込んで頂け
ないでしょうか.(linux 以外に関しては,大変そうなので,
あんまりお願いしてはいけないかなぁ,と思ってたりします.)

ちなみに,DODS 対応にするとどうなるかというと,NetCDF.open(path)
において,path の代りに URL を入れると,ダウンロードなしに,
ローカルファイルと同じようにファイルの中身が読めます.
例えば path =
"http://motherlode.ucar.edu/cgi-bin/dods/nph-nc/dods/model/2005052800_sst_61-64.nc";
とか.DODS経由だと,サーバーに置いてあるファイルが NetCDF でなく
ても,DODS が対応してるフォーマットで NetCDF 的なデータ構造をし
てるファイルなら同じ NetCDF インターフェースで読めます.

いろんなデータのリンクが

  http://gcmd.gsfc.nasa.gov/KeywordSearch/Home.do?Portal=dods&MetadataType=0index.html

にありますので見てみてください(DODSアクセス可なのが沢山あります).

あと,ECMWF のライセンスの都合上,京大の外のひとは登録が要ります
が,ERA40 (ECMWF 40年 再解析)データが以下に置いてあって,DODS で
もアクセスできます:

  http://davis.rish.kyoto-u.ac.jp/arch/era40/

RubyNetCDF が DODS 対応になると,GPhys も自動的にそうなります.
よって,gave もそうなりますので,遠隔データをダウンロードなしに
gui で表示できます.

# ただ,DODS は cgi なので,NetCDF の下位のレベルのアクセスが
   生じるたびにプロセス立ち上げコストがかかります.GPhys のよう
   に高度なライブラリーでは裏でNetCDFのアクセスが何度も起きます
   ので,あまり速くはないです.

堀之内 武                    horinout@xxxxxxxxxxxxxxxxxx
京都大学生存圏研究所               611-0011 宇治市五ヶ庄