Monday, 18 November 2024

氷河合宿その5e:ポイントデータの抽出(等気圧面月平均)

地表面データだけでも観測データとの比較や質量収支モデルを走らせることは可能ですが、今回紹介する等気圧面データからの気温抽出は、ウチのオリジナルアイデアで、かつ、今のところ他の気温推定方法よりも成績が良いという実績があります。

今回のパッケージはこちらからダウンロードしてください。
【補足】「危ないサイトにはアクセスできません」的なメッセージが出た場合、「上のアドレスに表示される「https://」から s を削除するとダウンロードができるみたいです。(https へ移行しなきゃ、と思いつつサボってますすみません)

Pythonで「pl_extract_month.py」を実行すると、等気圧面データから抽出した気温(pt)と気温減率(lap)、その抽出に使ったデータが生成されます。

やっていることは、ターゲットのサイトの標高を挟む等気圧面をジオポテンシャル高度から探しだし、その二つの高度と気温から気温減率を求め、さらにターゲット標高の気温を求めています。

tl、zl、pl:ターゲットより低い側の等気圧面における、気温(tl)、高度(zl)、気圧(pl)

tu、zu、pu:ターゲットより高い側の気温(tu)、高度(zu)、気圧(pu)

例えば、サンプルデータを実行してできるSigma-Bサイトの高度(zl、zu)をグラフにしてみると、

ターゲット標高の944 mを挟んで変動していることがわかります。また、その気圧面(pl、pu)はどうかというと、


この高さ周辺での気圧面は925、900、875で、それらが変化していることがわかります(pl の方が高い値)。

対面合宿時には、前回抽出した地表面データのオリジナル気温 t2m とそれを気圧減率 -6.5 ℃/km で補正した気温 at と一緒に観測データと比較した結果を紹介してもらいます。


スクリプトの解説

前半の大部分は地表面データに対する処理と同じです。

インポートしてサイト情報を読み込み

ヘッダーを書き込んでおいて、年ごとに気圧面データを読み込み、変数を設定。このデータは高さ方向のデータ(nz と dpl)も含んでいるのが地表面データと違うところ。

ターゲットサイトの座標を決めるやり方とそのコツは前回解説しました。

そしてこれ以下の部分で「ターゲットサイトの標高を挟む二つの高度」を探しています。izを 1 から一つずつ増やしていって(L60)、もし、上回ったら(L53)、上側(izu)と下側(izl)を決めてやり、izl の拘束(= nz)が外れることで while ループが終了するようになっています。

鋭い人は、「Python はゼロ始まりじゃなかったっけ?」と思うかもしれません。ここでは、「上側の等気圧面がターゲット標高を上回っているか?」を探しているので、1 から始めています。

もし、0 から始めていきなりターゲット標高を上回っていたら、izl が ‐1 になってしまって計算ができなくなりますよね?※こういうケースでは、1000 hPa と 975 hPa から外挿して求めていることになります。

二つの等気圧面が決まったら、次の時間ステップのために iz を二面ほど下げておきます(L58)。次の月に気圧が下がる(ジオポテンシャル高度が上がる)と、ターゲット標高がいきなり低い側の等気圧面高度よりも低くなり、内挿でなく、外挿で求めてしまう可能性があるので、常に「より低いところ」から探し出すようにするためです。※でも、ヒマラヤとか5000 mもあるようなところで、毎回1000 hPaから探し出すのは非効率

L56 では、この下げ幅が十分でなかった場合にアラートが出るようにしています。

L61-65 では、ダウンロードの設定ミスで、ターゲット標高がデータセットの最高高度よりも高かった場合、とりあえず外挿で値を決めつつ、アラートを出しています。

あとは、izu、izl の気温、標高から気温減率を求め(L72)、ターゲット標高の気温を決めています(L73)。二次元上の二点間の傾き(=気温減率)と、その間にある点の値を決めています。


No comments:

Post a Comment