気象観測データによる風の空間分布の作図 (Python による試作)

[気象観測データ (多地点) の 空間分布と時系列の作図 (Python による試作)]では、 気温や降水量などの日値のデータをCartopy をつかって 地図上に表示した。 そのときは、風のデータはあつかわなかった。 ひとつには、風向・風速は、水平2次元の風速ベクトルとしてあつかいたいのだが、 前の教材ページを書いたときはそのあつかいかたをまだ知らなかったからである。 もうひとつには、気象庁の観測データで 日値として記録されている 日平均風速、最多風向などは、解釈しにくい量だからである。

ここでは、時別値 (1時間ごとの値) の風速・風向をあつかうことにする。 この風速は、毎正時で終わる10分間の平均風速である。

風ベクトルは、矢印による表現と、天気図の矢羽根による表現の両方がよくつかわれる。 Cartopy では、矢印による表示をする quiver と、矢羽根による表示をする barbs がある。 ただし、どちらも、風速を、東西成分 (西風が正)と 南北成分 (南風が正) にわけてあたえるようにできている。 【この機能のつかいかたについては、山下 陽介 さんの 「気象データ解析のためのmatplotlibの使い方」 (暫定サイト https://github.com/yyousuke/matplotlib )、 とくにそのうち「7章 cartopyの利用(バージョン0.18対応)」 matplotlib-7_0.18.pdf を参考にした。】

ひとまず、地図上に矢印あるいは矢羽根で風を表示できるところまでいったので、 プログラム例を紹介する。 ただし、地図投影は、正距円筒図法 (Plate Carree) である。 他の図法で風ベクトルを表示できるかどうかはためしていない。 (他の図法のばあいは、風の水平2次元の成分の意味がちがってくるのかもしれないが、未確認である。) また、例文で表示した観測地点は2地点だけである。 これだけではおもしろくないが、地点数をふやすことは、 列の対応表をつくるてまがかかること以外は、むずかしくないと思う。


地点の緯度経度の表は、 [気象観測データ (多地点) の 空間分布と時系列の作図 (Python による試作)] で変換ずみのつぎのCSVファイルをつかう。

観測値のデータの例として、 気象庁ウェブサイトの「過去の気象データ ダウンロード」から 2021年5月25日にダウンロードした、 熊谷と秩父の2地点の、2021年4月24日1時から2021年5月24日24時までの毎時のデータを用意した。 日時は、「日付リテラル」ではなく、年、月、日、時がそれぞれ数値として書き出される方式にした。 なお、風向は 「北北東」「静穏」などの日本語文字列で書き出される。 (「ダウンロードCSVファイルのデータ仕様」を「すべて数値で格納」をえらんでも、数値にならなかった。)

風速・風向の品質情報はそれぞれついているが、均質番号はあわせて1列であり、 1地点の風向・風速のデータは、CSVの5列をしめている。 それを考慮して、手作業で、各地点の データの表の列(をしめすアルファベット記号) と そこにおさめられた要素との対応表をつくった。 (ここでは前回うまくいった方法をまねたが、 どの地点も時別の風向・風速だけならば、key表作成プログラムを 対応表をつかわないで列番号を計算するように 変更したほうがよさそうだ。)

それを、つぎの Python プログラムで、地点表と組みあわせて処理し、key 表をつくった。

そして、観測データ と key表 とを読んで、地図上に作図するプログラムをつくった。

風向は、まず、文字列から、 静穏を 0、北北東を 1、北東を 2、... 北を 16 という 16方位のコード番号 (整数値、変数名 idir) におきかえる。 それから、東向きを x 方向、北向きを y 方向としたベクトルの偏角 (変数名 arg) に換算する。 風向コードと偏角とは逆まわりであり、しかも、北風は南向きの流れなので、まちがえやすい。

どうやら、次の計算式でよいようだ。

arg = (-4 - idir) * math.pi/8

そして、風速に cos(arg) をかけると風の東西成分、sin(arg)をかけると南北成分がえられる。


2021-05-28
増田 耕一 (MASUDA Kooiti)
[計算機を利用した気象分野の実習の教材]
立正大学用 [卒論指導のページ] [3年生セミナーのページ]