PythonでMSM予報値を読む(降水量の注意点)

pygribというライブラリを用いて、GRIB2形式のMSM予報値を読んでみようという話です。本当はmatplotlibやbasemapを用いて描画するところを先に解説しようと思っていたのですが、記事にするにはちょっとまだ未完成なところがあるので公開できていません。で、今回、その記事を作成するにあたり降水量を描画した結果を載せようかと思っていたのですが、pygribで読むときにちょっと癖があることがわかりましたので、今回の記事を書きます。
配信資料に関する仕様を読んでいただくとわかりますが、GSM、LFMは降水量が初期時刻からの積算雨量でデータが格納されているのに対し、MSMではなぜか前1時間の降水量が格納されていることがわかりました。で、さらに、pygribで読むときに、通常、FT=12の降水量と言われると、FT=12における前1時間降水量(FT=11〜12における1時間降水量)を想像するのですが、以下のコードを実行すると分かるように、ft=12で指定すると、FT=12〜13における1時間降水量がどうやら返ってくるようです。これは要注意ですね。検証していませんが、GSMやLFMでも同様のことが起きるのかもしれません。

import pygrib
f = 'Z__C_RJTD_20220717000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin'
ft = 12
grbs = pygrib.open(f)
grb = grbs.select(parameterName='Total precipitation',forecastTime=ft)[0]
print(grb)

上記のスクリプトを実行すると以下の結果が返ってきます。

165:Total precipitation:kg m-2 (accum):regular_ll:surface:level 0:fcst time 12-13 hrs (accum):from 202207170000

fcst time 12-13 hrs (accum) とメッセージが出ますので、FT=12〜13における1時間降水量を示しているようですね。
参考URL: