見出し画像

気象庁数値予報天気図のカラー版

気象庁ホームページで公開されている、気象庁数値予報天気図には伝統的な主な予想天気図が5種類あります。
 ① 500hPa面高度・渦度の天気図
 ② 700hPa面湿数と500hPa面気温の天気図
 ③ 850hPa面気温・風と700hPa面鉛直流の天気図
 ④ 850hPa面相当温位・風の天気図
 ⑤ 地上気圧・風と降水量の天気図

これまで、①は記事「GSMの500hPa面天気図作成 1から3」で、②は記事「700hPa面湿数、500hPa面気温の天気図 1から2」でMetPyやMatplotlibを利用したコードを紹介しました。これらコードで作成したカラー版天気図と気象庁作成の図を、図1と図2に示します。

図1 500hPa面天気図 気象庁作成(左)、カラー版(右)
図2 500hPa面気温・700hPa面湿域の天気図 気象庁作成(左)、カラー版(右)

今回は、③から⑤のカラー版天気図の作成コードの紹介です。

850hPa面気温・風と700hPa面鉛直流の天気図

図3 700hPa鉛直流、850hPa面気温・風の天気図 気象庁作成(左)、カラー版(右)

図3に、850hPa面気温・風と700hPa面鉛直流の天気図のカラー版を、気象庁作成の図と合わせて示します。こうして比較してみるとどちらが見やすいかは好みで分かれそうです。極値の値が異なっていますが、カラー版はGRIB2のファイルにある値を利用しています。気象庁作成の天気図はGRIB2とは異なる、スムージングなどの何らかの処理をしているようです。

この作図コードでは、これまでの記事で解説した以外に特に説明する点はありません。カラー版のコード(JupyterNotebook用)を次に掲載します。皆さん好みの配色にするなど、適宜変更してください。

850hPa面相当温位・風の天気図

図4 850hPa面相当温位 気象庁作成(左)とカラー版(右)

図4に、850hPa相当温位の天気図のカラー版を、気象庁作成の図と合わせて示します。この作図コードも、これまでの記事で解説した以外に特に説明する点はありません。カラー版のコード(JupyterNotebook用)を次に掲載します。皆さん好みの配色にするなど、適宜変更してください。


地上気圧・風と降水量の天気図

図5 地上天気図 気象庁作成(左)とカラー版(右)

図5に、GSMの予想地上天気図のカラー版を、気象庁作成の図と合わせて示します。カラー版の降水量はFT0からの積算降水量(FT24なら24時間予想降水量、FT48なら48時間予想降水量)となる点が異なります。ご注意ください。(時間ができたら、気象庁作成と同じ期間の降水量となるよう改良して、コードをアップします。:2022年1月23日に、予想6時間降水量を表示するコードをアップしました。)

また、カラー版では、地上気温の等値線を表示させています。

この後に提供するコードで留意すべき点を説明します。GSMのGRIB2形式のファイルをpygribを利用して読み込んでいます。なぜか積算降水量と全雲量は、要素名(コード中ではshortName)がなく、unknownとなっています。下に読み込み部分のコードを抜き出します。最下部の4行を確認してください。shortNameを"unknown"として、読み込むと配列1番目が全雲量、2番目が積算降水量が格納されています。

import pygrib
#
# 読み込むGRIB2形式GSMのファイル名
gsm_fn_t="Z__C_RJTD_{0:4d}{1:02d}{2:02d}{3:02d}0000_GSM_GPV_Rgl_FD{4:04d}_grib2.bin"
gr_fn= gsm_fn_t.format(i_year,i_month,i_day,i_hourZ,i_ft)
#
# データOpen
grbs = pygrib.open(data_fld + gr_fn)
#for grb in grbs:
#    print(grb)
#
# データ取得                                                                                                                       
grbPre = grbs(shortName="prmsl")[0]   # 海面更生気圧(Pa)
grbSpf = grbs(shortName="sp")[0]      # 地上気圧(Pa)
grb10u = grbs(shortName="10u")[0]     # 10m U-wind(m/s)
grb10v = grbs(shortName="10v")[0]     # 10m V-wind(m/s)
grb2tm = grbs(shortName="2t")[0]      # 2m Temperature(K)
grb2rh = grbs(shortName="2r")[0]      # 2m humidity(%)
grbLcc = grbs(shortName="lcc")[0]     # low cloud cover(%)
grbMcc = grbs(shortName="mcc")[0]     # medium cloud cover(%)
grbHcc = grbs(shortName="hcc")[0]     # heigh cloud cover(%)
#
# 全雲量と積算降水量の shortNameは unknown となっていることに留意
# 積算雨量はFT0からなので、FT36なら36時間予想降水量となります。
grbTcc = grbs(shortName="unknown")[0] # Total cloud cover(%)
# FT0の場合は積算降水量はありません
if i_ft > 0:
    grbPrc = grbs(shortName="unknown")[1] # Total Precipitation(kg/m^2)

カラー版のコード(JupyterNotebook用)を次に掲載します。皆さん好みの配色にするなど、適宜変更してください。

<追加コード>2022年1月23日
上記のサンプルコードは、FT0からの積算降水量を表示しています。予想6時間降水量を表示するコードを次に掲載します。

<追加コード>2022年8月13日
clever_bear463さんから、pygribを利用したGSMの日本域GRIB2の降水量の読み方がわからないとのコメントをいただきました。問題は、pygrib.open()で読み込んだオブジェクトからデータ取り出す際に、総降水量のshortNameが定義されていないため、必要なデータにアクセスできないとのことのようです。

pygirbを調べると、parameterNameを利用して、"Total precipitation"を指定すると総降水量のデータを抜き出せることを確認しました。次のようなコードになります。

下に、日本域GRIB2ファイルを読み込んだ、g2_faxSrfPre.ipynbと同じ出力のコードを下に掲載します。

import pygrib
ft_hours = 24
grbs = pygrib.open("Z__C_RJTD_20220813000000_GSM_GPV_Rjp_Lsurf_FD0000-0312_grib2.bin")
# 海面更正気圧
valPre, latPre, lonPre = grbs(shortName="prmsl")[ft_hours].data()
# 初期時刻からの総降水量
valPrc, latPrc, lonPrc = grbs(parameterName="Total precipitation")[ft_hours - 1].data()

以上です。

この記事が気に入ったらサポートをしてみませんか?