Posted at

Windowsにwgrib2とgrib2jsonを入れる。

More than 1 year has passed since last update.

 

インストールをして、簡単な動作確認をしてみます。

踏み込んだ内容はありませんので、あくまで初心者の方用の記事です。


wgrib2

気象情報を扱うときに使われるGRIB形式のファイルを扱うためのツールです。


1. インストール

http://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/Windows_64/

いっぱいファイルがあって何を落とせばいいかわからない方は、最初にwgrib2.exeだけを落としてください。

wgrib2.exeだけで実行すれば、実行に必要な(不足している)ファイルがダイアログで出力されるので、

それらを同じディレクトリに入れて、パスを通せばOKです。


2. 動かしてみる

今回は、NOMADSから風速データを落としてきます。

http://nomads.ncep.noaa.gov/

GDAS 0.25(grib filter) => gdas.2018xx と進みます。

今回は取り合えず地上10m地点のU方向, V方向の風を取得します。

ですので、チェックボックスは以下をチェック。


  • 10m above ground

  • UGRD

  • VGRD

そして、落としたファイルをwgrib2で見てみます。

>> wgrib2 [ファイル名]

1:0:d=2018041200:UGRD:10 m above ground:anl:
2:778510:d=2018041200:VGRD:10 m above ground:anl:

出力の内容はつまり、

1:地上10mでU方向のデータ

2:地上10mでV方向のデータ

ということです。うまく取れてるようです。

ちなみに、Optionで-Vを指定すると、

>> wgrib2 -V [ファイル名]

1:0:vt=2018041200:10 m above ground:anl:UGRD U-Component of Wind [m/s]:
ndata=1038240:undef=0:mean=-0.0738295:min=-19.6813:max=28.6987
grid_template=0:winds(N/S):
lat-lon grid:(1440 x 721) units 1e-06 input WE:NS output WE:SN res 48
lat 90.000000 to -90.000000 by 0.250000
lon 0.000000 to 359.750000 by 0.250000 #points=1038240

2:778510:vt=2018041200:10 m above ground:anl:VGRD V-Component of Wind [m/s]:
ndata=1038240:undef=0:mean=0.173403:min=-26.8313:max=23.2687
grid_template=0:winds(N/S):
lat-lon grid:(1440 x 721) units 1e-06 input WE:NS output WE:SN res 48
lat 90.000000 to -90.000000 by 0.250000
lon 0.000000 to 359.750000 by 0.250000 #points=1038240

と、データの詳細な情報が見れます。

更に、-dオプションをつけて、抜き出すデータの番号を指定すると、

>> wgrib2 -d 1 [ファイル名]

1:0:d=2018041200:UGRD:10 m above ground:anl:

このように、指定された番号に対応するデータのみ取り出せます。

だから、例えばU方向のデータだけ取り出して別のファイルに保存したければ、

wgrib2 -d 1 [ファイル名] -order we:ns -ieee u.dat(好きな名前でいいです)

とすればOKです。


grib2json


1. インストール

https://github.com/weacast/weacast-grib2json

このリポジトリをローカルにもってきます。

git clone https://github.com/weacast/weacast-grib2json.git

として、srcにあるファイルだけどこか別のディレクトリに保存すればOKです。

ちなみに、そのままだと

Error: Unable to access jarfileだとか、何かしらエラーが出てしまいます。

ですので、私はgrib2json.cmdを

@echo off

"java" -Xmx512M -jar "%~dp0grib2json.jar" %*

と書き換えたらうまいこと動きました。


2. 動かしてみる

先ほど落とした風のファイルを、json形式で出力してみます。

>> grib2json [ファイル名]

[
{
"header":{
"discipline":0,
"gribEdition":2,
"gribLength":778510,
"center":7,
"subcenter":0,
"refTime":"2018-04-12T00:00:00.000Z",
"significanceOfRT":1,
"productStatus":0,
"productType":1,
"productDefinitionTemplate":0,
"parameterCategory":2,
"parameterNumber":2,
"parameterUnit":"m.s-1",
"genProcessType":2,
"forecastTime":0,
"surface1Type":103,
"surface1Value":10.0,
"surface2Type":255,
"surface2Value":0.0,
"gridDefinitionTemplate":0,
"numberPoints":1038240,
"shape":6,
"gridUnits":"degrees",
"resolution":48,
"winds":"true",
"scanMode":0,
"nx":1440,
"ny":721,
"basicAngle":0,
"lo1":0.0,
"la1":90.0,
"lo2":359.75003,
"la2":-90.0,
"dx":0.25,
"dy":0.25
}
},
{
"header":{
"discipline":0,
"gribEdition":2,
"gribLength":748505,
"center":7,
"subcenter":0,
"refTime":"2018-04-12T00:00:00.000Z",
"significanceOfRT":1,
"productStatus":0,
"productType":1,
"productDefinitionTemplate":0,
"parameterCategory":2,
"parameterNumber":3,
"parameterUnit":"m.s-1",
"genProcessType":2,
"forecastTime":0,
"surface1Type":103,
"surface1Value":10.0,
"surface2Type":255,
"surface2Value":0.0,
"gridDefinitionTemplate":0,
"numberPoints":1038240,
"shape":6,
"gridUnits":"degrees",
"resolution":48,
"winds":"true",
"scanMode":0,
"nx":1440,
"ny":721,
"basicAngle":0,
"lo1":0.0,
"la1":90.0,
"lo2":359.75003,
"la2":-90.0,
"dx":0.25,
"dy":0.25
}
}
]

1, 2それぞれが別の連想配列になっています。

ではさらに、風速データのみをJSON形式で保存してみます。

>> grib2json --names --data -o file.json(好きなファイル名) [ファイル名]

すると、-oオプションの次に与えた任意のファイル名で、JSON形式のファイルが保存されます。

こうすると、何かと扱い易くて便利です。

(ちなみに、leaflet.jsのvelocityプラグインがなかなか楽しいので、是非grib2jsonを使って実行してみてください)


 最後に

つい最近使うことになった上記二つのツールですが、便利なのに案外初心者向けの記事がなくて困ってしまいました。

ですので、この記事が少しでも次のプログラマーを目指す方の一助になればいいな、と思っています。

また、私自身ペーペーのエンジニアですので、訂正すべき個所があればコメントをお願いいたします。