*目次 [#z5db9d18] #contents *JGRIBとは [#t033ce5e] JGribは GRIBファイルを読んでデコードするjavaライブラリです。 このライブラリはいくつかのパラメータの表に対応しています。 このプロジェクトはsourceforgeに格納されてます。 このライブラリを作った人は Benjamin StarkさんとUniversität Osnabrückさんです。 *URL [#x55bdb8e] http://jgrib.sourceforge.net/ group_id=49460 *インストール [#xd5b9463] -ダウンロードします。 -zipを解凍します。 -jgrib.jarをlibフォルダに格納します。 -Log4Jをクラスパスに入れます **ダウンロード [#vd50987d] http://sourceforge.net/projects/jgrib/ *使い方 [#g3e7aba1] おもな使い方は、GribFileクラスを使って GRIBのデータにアクセスする使い方です。 GRIBを開いたとき, ファイルの内容を部分的にデコードします。その部分はIS, GDS, PDS セクションです。 そしてまだデコードしていない残りのデータは、このクラスを使ってまとめられます。 このクラスは、ファイルの内容を問い合わせることができ、そして、GribRecord クラスを使って、ファイルの内容を取得できます。 このクラスを使って取得できるのは gridCoords, type, time, unit そして level です。 サンプルのコードはexamplesフォルダの jgrib_src.jar ファイルに入っています。 このライブラリはいくつかのgrib表を扱います。 **サンプルコード [#r68c4c6f] try { GribFile grb = new GribFile("path/to/file.grb"); } catch (FileNotFoundException noFileError) { System.err.println("FileNotFoundException : " + noFileError); } catch (IOException ioError) { System.err.println("IOException : " + ioError); } catch (NoValidGribException noGrib) { System.err.println("NoValidGribException : " + noGrib); } catch (NotSupportedException noSupport) { System.err.println("NotSupportedException : " + noSupport); } jgrib_src.jarをjgrib_src.zipに名前を変えて解凍して、中にあるサンプルコードを見てみます。 ***JgribDemo.java [#m36030fe] コマンドラインからgribファイルを指定して内容をダンプするサンプル ***JgribDemoAFWA.java [#b510795b] AFWAが提供しているgribファイルの各要素にアクセスするサンプル ***SetupLog.java [#d46aa67e] Log4Jの設定方法のサンプル ***UserSuppliedGribTable.java [#k3fdd802] GribTabPathを設定するサンプル *Log4Jを使ったデバック [#rf407db5] JGRIB は Log4J をつかってデバックします。 なので、インストールするときにLog4Jをクラスパスに入れておく必要があったのです。 もし Log4J の設定ができないならば、JGRIB はそっとログを出さないようになります。 JGRIB が、内部で使用するのは Level.DEBUG です。 なので、もしデバックを入れないならば、何もメッセージを得ることができません。 *プロジェクション [#maec7c74] このライブラリはGRIB標準で定義された、いろいろなプロジェクションをサポートしますが、限界があります。なぜかというと、仕様変更が勝手に行われないとは言い切れないからです。 いまのところ、下記をサポートしています。 -緯度/経度 -回転緯度/経度 -ランベルト -ポーラーSterographic GribRecordGDSオブジェクトはGribGDSFactoryを使用してインスタンスを生成します。 *GRIBTAB tables: [#o557a8ac] JGRIB は wgribの作者で有名な Wesley 戎崎さん が作った、標準に従っています。 **例外 [#z011188f] 1つのテーブルだけなんですが、wgribみたいに、いくつかの表は下記のものを含んでいます。 -ncep_reanal_2 (centre 7, table 2) - DEFAULT -ncep_reanal_1,3 (centre 7, table 1) -emcwf_3 (centre 81, table 3) *GRIBTABテーブルの拡張方法 [#o79ba0cf] JAVAのシステムプロパティー"GribTabURL"を指定することで拡張できます。 **サンプルコード [#v7f45220] // Set gribtab property to JGRIB library File gribTab = new File("gribTabPath"); System.setProperty("GribTabURL",gribTab.toURL().toString());