[注] 今回の内容は昨年度の ex9 とだいたい同じですが、例文の番号やファイル名をつけなおしています。 また、気象要素の選択を1つのプログラムごとに1か所ですむようにしました。
風の速度は、方向と大きさをもつベクトル量である。 その空間分布を表示するには、矢印や、天気図の矢羽根などがつかわれる。 ここでは、それを Python で作図してみよう。
材料は、 前回の [格子点型の気象データ (JRA-3Q 海面気圧) の地図上表示] と同様、JRA-3Q 再解析のうちの、surf125 (地表面の量の緯度・経度1.25度格子データ) をつかう。
Python の Cartopy パッケージのうち、 矢印をかくのには quiver という関数、 矢羽根をかくのには barbs という関数をつかう。 ひとまず、正距円筒図法 (Plate Carree) のばあいにかぎって、 いまのわたしの理解のかぎりで よさそうだと思われる方法を紹介するが、 この方法が模範だと思わないで、よりよい方法をめざしてほしい。
Pythonプログラムの例文は、niigata の /home/masudako/ex/ex8 に置いてある。
各自、つぎのコマンドによって、プログラム例をコピーしてほしい (最後の空白のあとのピリオドが重要)。
cp -r /home/masudako/ex/ex8 .
そして、ex8 に cd して作業してほしい。
JRA-3Q のデータは、前回と同様、/raid/jra3q/bindata/daily/surf125/ に 置いてあるものを読むので、自分のところにコピーする必要はない。 (もし、別のところに置かれたデータを読むばあいは、 プログラムのなかの datapathu, datapathv, datapathval という変数にあたえる文字列を変更する。)
前回の海面気圧をふくめて、1991-01-01 から 2025-06-07 までの毎日4回 (世界時 0, 6, 12, 18時) の、 つぎの気象要素を、時刻ごと・気象要素ごとに別々のファイルに用意した。 (変数名は増田が便宜上きめたもので、かならずしも JRA-3Q データセットのとおりではない。)
JRA-3Q surf125 の u, v のデータにもとづいて、 前回のプログラム例 73, 74 と同じ、かりに「東アジア領域」と呼んだ 北緯 10~60度、東経 110~170度の範囲で、 風速ベクトルを矢印で表示してみる。 これには、matplotlib の quiver という関数をつかう。 「quiver」という語には、(「ふるえる」という意味もあるが) 矢をいれる入れもの、日本語の「えびら」にあたる意味がある。 quiver 関数は、座標値とベクトル量のリストをあたえて、まとめて多数の矢印をかく機能を もっている。 しかし、そのようなしかたをしたとき、 矢印の長さをデータにもとづいてきめる方法が、 わたしにはよくわからない (ためした結果が期待どおりにならなかった)。 ここでは、(2021--2024 年度にひきつづき) 暫定的に、格子点ひとつずつ quiver をよびだして、 風速ベクトルにもとづいて長さをきめて矢印をかく方法をとっている。 81, 82 のプログラムでは、 quiver の scale に 500、width に 0.003 という値をあたえた。 (これは図がみやすいように試行錯誤できめた。)
ついでに、u, v から風速 (風速ベクトルの大きさ) を計算し、 その等値線を contour でひいている。
時刻については、前回の 72 ~ 76 のプログラム例と同様に、 年は固定し、月、日、時 の 3重ループにしてある。 月・日については、monthstart の月の daystart の日から monthend の月の dayend の日までという形で指定する。 時については、例文では「[0]」として、各日 1回 世界時 0時の 値を作図するようにしているが、6時間おきの全部を作図したいならば 「[0, 6, 12, 18]」とすればよい。
現在、プログラムのはじめのほうで、savefig という論理変数の値を False としており、 プログラムの終わり近くの「plt.show()」が有効になっているので、 図は画面に表示される。図を消す操作をすると次の図が表示される。 savefig を True にすると「plt.savefig()」をふくむ複数行が有効になり、 図は image というディレクトリの中に PNG 画像ファイルで保存される。
【結果をみた増田の印象。地上の風は実際に海上のほうが陸上よりも強い傾向があるのだが、 JRA-3Q の地上 (10 m) 風はそのちがいが強調されすぎていると思う。 別の機会に地上観測の風や他のモデルの風と比較して検討してみたい。 また、海上で風速の大きさが空間的に急にかわる (不連続的である) ことがたびたび見られる。 現実にそうであることもありうるが、データ同化の過程で、観測値が反映されたところと まえの時刻からの予報値が残ったところとのギャップなのかもしれない。】
気象要素の等値線を contour でひいて、風の矢印とかさねてみる。
気象要素の選択は、sitem という文字列変数の値でつぎのようにきめている。
sitem の値 | 気象要素 |
---|---|
'psl' | 海面気圧 |
'tmp' | 地上 (2 m) 気温 |
'q' | 地上 (2 m) 比湿 |
sitem によって、プログラム中のつぎのところの動作がかわるようにしてある。
前回のプログラム例 75 と同じ、かりに「日本中央部領域」と呼んだ 北緯 30~40度、東経 132~142度の範囲で、 風速ベクトルを矢印で表示してみる。
quiver の scale に 100 という値をあたえた。 width は指定しない (0.005 になっているはず。) そのほかは、81 と同様である。
空間領域と quiver のオプションは 83 と同様、 そのほかは 82 と同様である。
矢印を矢羽根にかえたほかは、83 と同様である。
barbs 関数は、風速を ノット (knot, kt) 単位であたえられたとき、 国際式天気図の約束にしたがった矢羽根をかくようにつくられている。 (短い線が 5ノット、長い線が 10ノット、旗が 50ノット)。
ここでは、風速は m/s 単位であたえられている。 矢羽根は、国際式天気図の約束に近似的にしたがいながら、 m/s 単位できりのよい値でつけることにした。 (短い線が 2.5 m/s、長い線が 5 m/s、旗が 25 m/s)。
矢羽根の凡例をつけるべきなのだが、まだできていない。
[82] (または [84]) のプログラムを変更して、 データのある期間のうちの数日間の期間をえらんで、 気圧と風、気温と風、比湿と風の分布図をつくり、その期間の気象について、レポートしてください。 事例には、低気圧 (温帯低気圧または台風) が見られる日時をふくめ、 低気圧との関係で気圧、気温、比湿がどのように分布しているか記述してください。
レポートは PDF または MS Word ドキュメントで /home/reports/20250624 に提出してください。 ファイル名は ASCII コード (いわゆる「半角」) のアルファベット、数字、アンダースコアでつけてください。 レポートに含める図の数は 5つ以内にしてください。
【niigataでつくった画像ファイルをパソコンでつかうためには WinSCPで「ダウンロード」、 パソコンでつくったレポートファイルをniigataに置くためには「アップロード」。】
前回のくりかえしになるが、気象庁のウェブサイトのつぎのページをあげておく。
今回の例文では、矢印は blue、等値線は brown という色の指定をしているが、色は変更できる。 Python の matplotlib では、 色を RGB (red, green, blue) の三原色の数値であらわす方法と、 色の名まえで指定する方法がある。