LoginSignup
8
10

More than 3 years have passed since last update.

気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(1)

Last updated at Posted at 2020-01-27

気象データをもとに「天気図っぽい前線」を機械学習で描いてみる その1

全体の流れです

はじめに

私は地球科学を学生時代にかじり、卒業後は技術計算系システムを長く担当してきたSEです。
数年前からの機械学習ブームに対して、勉強がてら何かやってみよう、ということで自宅のMac miniを用いて気象データをいじっていました。

今回、機械学習によって「前線」を描くということをやりましたのでまとめてみました(Qiita初投稿です)。

工程が複数あるので、何回かに分けて投稿を考えています。
本稿は、全体の流れと今後の予告的なものです。

今回やったこと

「天気図」は気象庁が気象観測データをもとに作成しています。
テレビや新聞でよく見る、等圧線に前線や高気圧・低気圧が描かれているものです。
下図は2019年11月25日UTC18時(JST 26日3時)の「速報天気図(SPAS)」です。

関東の南東海上から北東方向に向かって「停滞前線」、東経150°から東は「寒冷前線」がさらに延びています。

SPAS_COLOR_201911251800.v8.256.png

「前線」というのは、性質の違う気団の境界のことで、たいていは寒気と暖気の境界です。
しかし、この時の地表の気象データ(風、気圧、気温)を可視化してみると、

gsm_wnd_srf_2019112518.v8.256.png

というような感じです(京都大学生存圏研究所からダウンロードしたGSMのGPVを利用しました)。
そこら中に寒気と暖気の境界がありそうで、「なぜ天気図にひかれた1本だけが前線なの?」という気持ちになります。
なお、この図は風が矢羽、太い等値線が気圧、細い等値線と色(赤から青にかけて暖かいから寒いに変わる)が気温を表しています。

前線を自動的に描くとすると、気温データをもとにして、差が大きいところを算出するというようなことになるのかもしれませんが、それだと天気図で描かれている1本が特定される気がしません。
そこで「天気図っぽい前線」を機械学習で描画させてみよう、ということをテーマにしました。

結論から言うと、最終的に機械学習が生成できたのは下の図のような前線です。
tst_chart_ovlyd2019_112518.v8.256.png

この図は、気圧をただ純粋に可視化した図に、機械学習で生成した前線を重ね描きしたものです。
まあ、それなりの位置に前線が生成されています。

実際には、これはわりとうまくいったケースでして、他のケースだといまいちなのもあります。

速報天気図(2019年9月19日6時UTC)
SPAS_COLOR_201909190600.v8.256.png

機械学習の描画
tst_chart_ovlyd2019_091906.v8.256.png

このケースでは南の停滞前線は生成されていますが、北海道の北、サハリン付近の閉塞した低気圧から延びている各種前線(閉塞、寒冷、温暖)は生成してくれていません。

機械学習の流れ

具体的には、数値気象情報(GPV)を用いて、いくつかの気象要素を可視化したものを入力とし、気象庁から発表されている「速報天気図」の前線図を教師データとして、U-NetライクなCNNによって学習させました。

入力するデータ

気象庁の全球予報モデル(GSM)の初期時刻データから、地表面データ(風・気温・気圧)、上空のデータ(気圧、気温、風、相当温位、湿数)を可視化した画像。

先ほどの2019年11月25日18時UTCを例にすると以下のようなものです。

地表面データ
gsm_wnd_srf_2019112518.v8.256.png

上空のデータ
気圧・風・気温
850hPa (上空1500m付近)
gsm_wnd_850_2019112518.v8.256.png

500hPa (上空5500m付近)
gsm_wnd_500_2019112518.v8.256.png

相当温位(850hPa)
相当温位は、水蒸気量と気温を組み合わせたような概念です。
この値が大きいと高温多湿なこと示します。
gsm_ept_850_2019112518.v8.256.png

湿数(700hPa) 
湿数は気温と露点温度の差で、湿度が大きいほど値が小さくなります。
これが3度以内のところに着色しています。
gsm_situ_700_2019112518.v8.256.png

鉛直流(700hPa)
鉛直方向の空気の動きを表し、対流活動(降水活動)の目安になります。
gsm_vvl_700_2019112518.v8.256.png

出力されるもの

上記の画像から、CNNは以下の図を生成します。

tst_maskout2019_112518.v8.256.png

これと、気象データから可視化した気圧図
gsm_prs_srf_2019112518.v8.256.png

を重ね合わせ、ついでに時間を記入したものが最終出力です。

tst_chart_ovlyd2019_112518.v8.256.png

つまり、CNN自体は複数の画像を見て、どこに「前線」を描くべきか?を学習していることになります。

 今後の投稿の流れ(予定)

今回やった工程について、以下のような順で投稿していこうと思います。

第2回:気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(2)
入力となる気象データ可視化の話です。GPV形式の数値データを可視化するまでの話(matplotlib, GRIB形式の取り扱い)

第3回:気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(3)
教習データのためにカラー天気図から前線を抜き出す話、つまり気象庁のSPASから教師データを作るために、前線部分だけを抜き出す話

第4回:気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(4)
カラー天気図を増やすために白黒天気図をカラー化するCNNを作った話
第2回のスピンアウト的な話で、カラー版天気図が少なかったので、白黒版天気図をカラー化するということをこれまたCNNを使ってやりました。

第5回:気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(5)機械学習編 Automatic Front Detection in Weather Data

前線描画CNNの話、つまり学習本体となるCNNの話です。

それでは。

8
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10