見出し画像

Pythonを使ってGSM/MSMのGPVデータから天気図を描く上での課題

はじめに

長らく天気図ネタを書いていなかった。

いろいろと訳があって、時間が取れなかったのだが、時間を見つけては、コツコツと天気図自動生成システムをPythonに置き換えるべく、コードを書いている。表紙タイトルの天気図がその一つ。

ただ、いくつか課題がある。今回はその課題を紹介する。

課題1 - どうやって、どのくらい”ぼかす”のか?

”ぼかす”? とは何なのか?

GSMやMSMのGPVデータを何かのツールを使って天気図を書く場合、生のGPVデータをそのまま使って等値線を描くとどうなるか。

実は滑らかな等値線にならない。描く天気図によってはかなりノイズの多い天気図になる。

では、どうやって滑らかな自然な等値線を描いているかというと、GMTであればblockmeanというコマンドを使ったりする。詳細には把握していないが、周囲のGPVデータとの平均値を出力するような処理をしてくれていると思う。それをそのGPVポイントの値とすることで滑らかな等値線になる

以前のエントリーで紹介したMetPyを使ったプログラムであれば、blockmeanの代わりにGaussian filterを使って、等値線を滑らかに描画している。このGaussian filterはよく画像をぼかす処理として使われている。

つまり、blockmeanやGaussian filterを使って、GPVのデータを”ぼかす”ことで滑らかな自然な等値線を描くことができている。

ぼかし具合はパラメーターで調整できるのだが、どのフィルターを使ってどれぐらい”ぼかす”のか、それが課題なのだ。

GMTを使う場合は、気象庁の天気図に近いようにblockmeanのパラメーターを調整して使っているが、今回はGMTを使わないことにしている。

100点の正解はないのかもしれないが、いろいろと試行錯誤して決めていこうと思っている。気象庁が公開している予想図に近いと何となく安心できるかな。

課題2 - カラーバーのカスタマイズ

例えば、予想雨量であれば、色を付けることで雨量が一目で分かるようにしたい。そして、それぞれの色がどのぐらいの雨量を示しているのか、カラーバーで表示している。

matplotlibにはカラーバーを描画できる機能があり、多くのカラーマップも提供されている。ただ、このカラーマップを自作したい。例えば、雨量であれば、気象庁の気象レーダーのカラーマップと同じようなものにしたいと思っている。

ただ、この方法がまだ理解できていない。GMTだとmakecptコマンドで出力されたカラーマップの定義ファイルを適当に書き換えて、それを読み込ませて天気図を描画していたが。。

さいごに

2つの課題があるのだが、今はとにかくできるところからPython版に置き換えている。

Pythonのクラスはあまり好きではないけど、それでもBashと比べるとかなり効率的なプログラムに、少しずつだが仕上がってきている。

かなりのんびりではあるが、マイペースでやっていこうと思う。

天気図の作図にあたっては、京都大学生存圏研究所の生存圏データベースのGPVデータを使用させて頂いています。


よろしければ、サポートをお願いします。 より多くの方に役立つnoteを書けるよう頑張ります!!