#注意
この記事は、2年ほど前にQiitaに投稿した記事の再投稿になります。
若干内容が古くなっている可能性があります。
インストールをして、簡単な動作確認をしてみます。
踏み込んだ内容はありませんので、あくまで初心者の方用の記事です。
wgrib2 インストール
インストールは こちら。
いっぱいファイルがあって何を落とせばいいかわからない方は、最初にwgrib2.exeだけを落としてください。
wgrib2.exeだけで実行すれば、実行に必要な(不足している)ファイルがダイアログで出力されるので、それらを同じディレクトリに入れて、パスを通せばOKです。
wgrib2 動かしてみる
今回は、NOMADSから風速データを落としてきます。
GDAS 0.25(grib filter) => gdas.2018xx と進みます。
今回は取り合えず**地上10m地点のU方向, V方向の風**を取得します。
ですので、チェックボックスは以下をチェック。
- 10m above ground
- UGRD
- VGRD
そして、落としたファイルをwgrib2で見てみます。
Shellで下記を実行。
$ 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 インストール
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" %*
と書き換えたらうまいこと動きました。
grib2json 動かしてみる
先ほど落とした風のファイルを、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を使って実行してみてください)
最後に
つい最近使うことになった上記二つのツールですが、便利なのに案外初心者向けの記事がなくて困ってしまいました。
ですので、この記事が少しでも次のプログラマーを目指す方の一助になればいいな、と思っています。
また、私自身ペーペーなので、訂正すべき個所があればコメントをお願いいたします。