ウィンドプロファイラ
ウィンドプロファイラは、地上から上空への鉛直方向の層構造を明らかにする測定器であり,気象庁が全国33箇所で運用しています.
その実態はレーダであり,上空の5方向に電波を発射することで水平方向・鉛直方向の風構造を把握することができます.
これが何の役に立つのかというと,例えば前線の通過・接近を解析する手掛かりになりますし,前線の動きが分かれば予報対象地域の気象予報に役立ちます.
気象予報士試験ではウィンドプロファイラを活用した問題は毎年出題されています
気象庁サイト:https://www.jma.go.jp/jma/kishou/know/windpro/kaisetsu.html
測定原理
地上から上空に向けて発射した電波は,水分を含んだ大気中の風の乱れなどによって散乱・反射されます.これをレーダで受信・処理することで、上空の風向・風速を測定するのです.(例えば,上空の風速が大きいほどドップラ効果による周波数偏差が大きくなりますので,この周波数差から速度を測定できるわけです)
データ取得
AMeDASはAPIが用意されており,誰でも簡単にアクセスすることができますが,ウィンドプロファイラデータを取得するAPIは発見することができませんでした.
しかし大学などで研究用にアーカイブを保管しているサーバがありますので,今回はそこに置いてあるデータを利用させていただきました.
データ解析
APIは公開されていませんが,ウィンドプロファイラデータファイルの書式は公開されています.
https://www.data.jma.go.jp/suishin/catalogue/format/ObdObs_wpr_1hour_format.pdf
この書式は国際気象通報式に準拠しており,上のpdfだけでは必要な情報が揃いませんでしたので,以下の国際気象通報式・別冊も参照しています
https://www.jma.go.jp/jma/kishou/books/tsuhoshiki/kokusaibet/kokusaibet_21.pdf
今回はこれらを参考に,サクッと描画系を作成しました.
まず,バイナリファイルですのでこれを解析できるようパーサを組みます.真面目にパーサを組むほど複雑ではないので,Getモナドでガンガン読み込んでいきます
ファイルは複数のブロックから構成されており,例えば経度緯度情報・観測できた層数・風の東西/南北/鉛直方向成分などを読み取ることができます.
各ブロックの内容はここに掲載するには冗長過ぎますので割愛しますが,以下のようにヘッダを除いて合計4つのデータブロックを読み込んでいきます
ソースコード全体は以下に置いてあります
https://github.com/wvogel00/WindProfilerRader
wprP wmoTable = do
header <- headerP
block0 <- block0P
block1 <- block1P
block3 <- block3P
block4 <- block4P wmoTable
return (header, block0, block1, block3, block4)
analyze :: FilePath -> IO Block4
analyze file = do
wmoTable <- BUFR.readWMOTable
bs <- BL.readFile file
let wrp@(h, h2, b1, b3, b4) = runGet (wprP wmoTable) bs
-- print wrp
return b4
そして,描画系をまとめたDrawPR.hsファイルから以下を実行し,無事ウィンドプロファイラを人の目にも分かりやすい形で描画できました.横軸は時刻,縦軸は高度になっています.これは1ファイルのみなので時間方向のデータ量が少ないですが,読み込むデータを増やして時間方向に連結していけば,馴染みのあるグラフが描画できるようになります
色のセンスがないのはご容赦ください.
風速の大きさで4段階程度に色分けしているのですが,矢印の長さに反映させる・正負をより明瞭にするなど改善点は山積みです.
なかなか落ち着かずクリスマスの投稿となってしまいました
メリークリスマス!
