WXBC 2023年度テクノロジー研修
気象庁GPVデータ分析チャレンジ!入門 事前準備確認用プログラム
Copyright 2024 気象ビジネス推進コンソーシアム
(C) 2024 WXBC
<利用条件>
本書は、本書に記載した要件・技術・方式に関する内容が変更されないこと、および出典を明示いただくことを前提に、無償でその全部または一部を複製、翻案、翻訳、転記、引用、公衆送信等して利用できます。なお、全体または一部を複製、翻案、翻訳された場合は、本書にある著作権表示および利用条件を明示してください。
<免責事項>
本書の著作権者は、本書の記載内容に関して、その正確性、商品性、利用目的への適合性等に関して保証するものではなく、特許権、著作権、その他の権利を侵害していないことを保証するものでもありません。本書の利用により生じた損害について、本書の著作権者は、法律上のいかなる責任も負いません。
Jupyter の使い方¶
Jupyter は、文字修飾等が可能なテキスト、実行可能なプログラムとその実行結果が共存するドキュメントを作成することができるソフトウエアで、Cell(セル)と呼ばれる矩形を単位とし、これを連ねることでドキュメントを形作ります。Cellは、文章を保持する Markdown Cell と、Pythonのスクリプトを保持する Code Cell の2種類からなります。Markdown Cell では Markdown 記法が利用でき、限定的ながら文字修飾などが行えます。 Code Cell にはPythonプログラムを書き込むことができ、それは実行することが可能です。
Markdown Cell は、シングルクリックで選択でき、さらに、ダブルクリックすることで編集モードに移行し、Markdown記法を用いた文章の編集が可能となります。この時、背景は灰色となります。このことを確認するために、皆さんが今読んでいるこの矩形部分をマウスで選択してダブルクリックしてみてください。Cell の枠線に色が付き、太字標記の部分に、書式を指定する「*」が現れます。
編集後は、ツールバーの ▶ ボタンをクリックするか、[Ctrl] キーを押しながら [Enter] キーを押すことで確定しします。
Code Cell は、配色がちょうど逆で、通常状態では灰色、クリックすると白色となり編集が可能となります。そして、ツールバーの ▶ ボタンをクリックするか、[Ctrl] キーを押しながら [Enter] キーを押すことで実行されます。このことを確認するために、下のCode Cell を選択し、実行してみてください。
print("ようこそ!")
ようこそ!
新規にCellを追加するには、ツールバーの + ボタンをクリックします。追加されるのは、常にCode Cellです。Markdown Cellを追加したい場合は、 + ボタンでまずCode Cellを作り、次に、ツールバーの「Markdown v」をクリックして、それを Markdown Cell に変更します。
Cell単位の切り取り、コピー、貼り付けは、ツールバーの、ハサミ、2重四角、クリップボードで行います。
1 ライブラリの確認¶
ライブラリが正しくインストールされていることを確認するために、以下の Code Cell を実行してください。
エラーが表示されなければ(実行しても何事もおこらなければ)OKです。
import subprocess
from pathlib import Path
from datetime import datetime as dt
from datetime import timedelta as td
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import xarray as xr
2 wgrib2 の動作確認¶
GRIB2ファイル処理ツール wgrib2 が正しく動作するか確認するために、実習用データの一つにアクセスしてみましょう。テスト用の Code Cell を実行し、以下のような表示が出力されたらOKです。
1.183:0:vt=2023060115:1.5 m above ground:15 hour fcst:TMP Temperature [K]:
ndata=242905:undef=0:mean=292.568:min=275.627:max=302.439
grid_template=0:winds(N/S):
lat-lon grid:(481 x 505) units 1e-06 input WE:NS output WE:SN res 48
lat 47.600000 to 22.400000 by 0.050000
lon 120.000000 to 150.000000 by 0.062500 #points=242905
Windowd PC の方はこちら ↓
wgrib2 = "c:/wgrib2/wgrib2.exe" # Macの場合 wgrib2 = "~/work/grib2/wgrib2/wgrib2"
grdir = "jmadata/msm/2023/202306"
grfile = "Z__C_RJTD_20230601000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin"
grpath = grdir +"/"+ grfile
kwds = '-match "\.183:"' #文字列中に「"」を入れたいときは、文字列を「'」で囲みます
rc = subprocess.run(f'{wgrib2} -V {kwds} {grpath}', # 詳細な情報を表示させるために「-V」を付加します。
shell=True, text=True, capture_output=True)
for line in rc.stderr.splitlines():
print(line)
for line in rc.stdout.splitlines():
print(line)
1.183:0:vt=2023060115:1.5 m above ground:15 hour fcst:TMP Temperature [K]: ndata=242905:undef=0:mean=292.568:min=275.627:max=302.439 grid_template=0:winds(N/S): lat-lon grid:(481 x 505) units 1e-06 input WE:NS output WE:SN res 48 lat 47.600000 to 22.400000 by 0.050000 lon 120.000000 to 150.000000 by 0.062500 #points=242905
Mac の方はこちら ↓
wgrib2 = "~/work/grib2/wgrib2/wgrib2" # Windows の場合 wgrib2 = "c:/wgrib2/wgrib2"
grdir = "jmadata/msm/2023/202306"
grfile = "Z__C_RJTD_20230601000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin"
grpath = grdir +"/"+ grfile
kwds = '-match "\.183:"' #文字列中に「"」を入れたいときは、文字列を「'」で囲みます
rc = subprocess.run(f'{wgrib2} -V {kwds} {grpath}', # 詳細な情報を表示させるために「-V」を付加します。
shell=True, text=True, capture_output=True)
for line in rc.stderr.splitlines():
print(line)
for line in rc.stdout.splitlines():
print(line)
'~' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
3 ライブラリ wxbcgribX の確認¶
ライブラリ wxbcgribX は、GPVプロダクトを処理する際の工数を減らすことができるライブラリで、WXBCの有志が開発しました。小規模なライブラリなため"インストール"という事前作業は不要であり、ライブラリの実体であるファイル wxbcgribx.py を、フォルダ内に置いておくだけで利用できます。
ただし、このライブラリは、内部で wgrib2 を使用するため、wgrib2がインストールされている場所をライブラリに知らせておく必要があります。初期設定では、事前準備ガイドに沿って Windows PC にインストールした場合の場所が指定されています。何らかの理由から別な場所にインストールした方は、ファイル wxbcgribx.py の35行目をそれに合わせて書き換えてください。 Macをお使いの方は、ファイル wxbcgribx.py の37行目の行頭のハッシュ「#」を消去し、38行目の行頭にハッシュを追加しておいてください。
以上が終了したら、下のCellを実行してください。気象分布図が表示されれば、wxbcgribX は wgrib2 を正しく制御できています。
# Windos PC、Mac共通です。
import wxbcgribx as wx
grdir = "jmadata/msm/2023/202306"
grfile = "Z__C_RJTD_20230601000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin"
grpath = grdir +"/"+ grfile
ds = wx.getgpv(grpath,'TMP',to_netcdf=False)
ds.TMP_1D5maboveground[0,:,:].plot()
<matplotlib.collections.QuadMesh at 0x1eece3234f0>
以上で事前テストは終わりです。
最後のテストスクリプトで処理したのは、メソ数値予報モデルGPVと呼ばれる気象庁のGPVプロダクトの予報値です。このプロダクトやGPVデータを処理するPythonスクリプトの内容については、当日詳しく説明します。どうぞお楽しみに。
Jupyter を終了する方法¶
Jupyter は、通常のアプリケーションとは少し違う仕組みで動作しています。WebサーバーをPCの内部に仮想的に作り出し、そのサーバー内の情報をブラウザに表示させているのです。
このため、Jupyterの終了は、Notebookの保存、内部サーバーの停止、ブラウザの終了の順で行います。以下の手順実行してください。
- コンテンツの保存:メニューから File > Save Notegbook (または、Ctrl+S)
- サーバーの停止:メニューから File > Shut Down
- ブラウザの終了:自動的に閉じますがまれに閉じない場合があります。その時はブラウザウィンドウ右上をクリックして閉じます
- Anaconda Prompt に、「exit」 と入力してエンターキーを押して終了