高層気象観測のデータを見てみよう。 ここでいう「高層」は、地上との対比で「上空」のような意味で、「高層大気」ではない。
第2次世界大戦ごろから最近まで、高層気象観測の主役は、「ラジオゾンデ」という、 気球に温度計、湿度計、気圧計、電波発信機をつけたものである。 (最近、ほかの観測方法も重要になっているが、ラジオゾンデもひきつづき重要である。) 風は気球を追跡することによって観測する。
日本の気象庁による、1988年以後のラジオゾンデ観測のデータは、気象庁のウェブサイトの つぎのページで見ることができる。 (気象庁ホームページから「各種データ・資料」に行き、「気象」の「気象観測データ」のうちの 「過去の気象データ検索」のページに行って、「高層の気温・風など」をえらぶと、そのページに行く。 なお、「過去の地点気象観測データ・ダウンロード」のほうは地上気象観測だけである。)
地点を選択する。熊谷にいちばん近いのは「館野 (たての)」である。 ここは気象庁の高層気象台で、筑波学園研究都市の中にあるが、 学園都市よりも古く1920年からあり、1921年から上空の気象を観測してきた (ラジオゾンデ観測としては1944年から)。
さらに、年、月、日、時を選択すると、つぎのものが選択可能になる (日時の数値は例)。
おもに、「指定気圧面の観測データ」を見ることにする。 なまの観測値にいくらか近いものにさかのぼりたいときは、「気温・湿度」「風」も見てほしい。 こちらは、多数の高さでの観測値のうち、気温・湿度、風、それぞれの 鉛直分布をよりよく表現できるところ (高層気象観測の専門用語で「特異面」) を ぬきだしたものである。
指定気圧面のデータは、つぎのような項目の表になっている。 なお、欠測 (データ欠損) のところは、「///」のような文字列がはいっている。
各自、気象庁のウェブサイトからデータを読みとってほしい。 ただし、ウェブサイトを混雑させないように、おおぜいが同時にアクセスするのはさけてほしい。 また、一度に大量のデータを取得するプログラムを動かすのはさけてほしい。 (そうしたい人のためには、このページよりもよい方法がある。)
2変数のグラフをつくるとき、一方が空間や時間の座標変数ならば、 座標変数を横軸に、その他の変数を縦軸にとるのがふつうである。 しかし、座標変数が鉛直方向の空間座標のばあいは、それを縦軸にとるほうが、 人の感覚にあうので、ふつうになっている。
さらに、気象データのばあいは (観測値であっても、シミュレーションの結果であっても) 鉛直の空間座標のかわりに、気圧をとることが多い。 それには、観測のつごうも、理論のつごうもあるが、 観測のほうの理由をあげると、ラジオゾンデ観測では、気温・湿度といっしょに測定されるのは気圧であり、 高さは (ジオポテンシャル高度にしても、幾何学的高さにしても) 間接的に得られる値なのだ。 ただし、グラフにするときは、気圧が高いほうが (実際の空間で下だから) 下にする。
鉛直座標として気圧をつかうばあいは、対数目盛りにすることが多い。 それは、気圧の対数が、だいたい高さに比例するからである。 (大気が成分が一様な理想気体であり、温度が一定だと仮定すれば、気圧の対数が高さに比例する。) 対数目盛りのグラフではふつう、軸上の寸法は表示される変数の対数に比例するようにとるが、 軸につけた目盛り線のところに表示される数値は、対数でなく変数自体の値にする。
ウェブブラウザで「指定気圧面の観測データを表示」のページを表示させて、 「指定気圧面」の数表の (見出し行をとばして) なかみ全体を選択して、 (ブラウザ内で右クリックから)「コピー」をし、 別にテキストエディタ (Windowsの「メモ帳」でもよい) を開いて「貼り付け」をする。 そしてテキストエディタの編集内容をテキストファイルに保存する。 どの地点のいつの観測値であるかを、ファイル名にふくめるようにする。 ここでは「tateno2021060109jst_stdlev.txt」とした。 ファイル名の大文字・小文字は区別するOSとしないOSがあるので、念のため全部小文字にした。 気象データの時刻は世界時(UTC)であらわすことが多いが、ここでは日本標準時(JST)の 9時なので、 それを明示した。 「指定気圧面」にあたる英語表現は standard pressure level なので、それを略して stdlev とした。 テキストファイルなので、拡張子を「.txt」とした。
Windows 上の Firefox, Microsoft Edge, Google Chrome ブラウザで 上記の作業をすると、できたファイルは、タブくぎり (表の列のあいだが TAB という制御文字でくぎられている) になっている。 (TABのほかに空白(space)がはいることがある。空白はくぎりではないとする。) ここではそれを前提としてさきにすすむ。 もしかすると、他のOSやブラウザでは、表示されるデータの列のあいだのくぎりかたなどが ちがう (したがって、つぎのデータ読みこみ手続きを変更する必要がある) かもしれない。
Python の Pandas というパッケージをつかうと、 表形式のデータを「データフレーム」という構造の変数に読みこむことができる。 タブくぎりのテキストファイルのデータは、Pandas の read_table という関数で読める。 read_tableの中で、見出し行がないこと、データ欠損が「///」という文字列であらわされていることを指定し、 列名をつけなおした。 それから、各列の内容が浮動小数点 (実数の近似値) の数値であることを指定した。 列名は、大文字・小文字のまぎらわしさをさけるため、小文字にした。 すると、温度を T、時間を t で区別することができないので、温度は temp とした。
Python のインストールと実行のしかたの説明は、(残念ながら) ここには書ききれない。 別ページ [Python と そのパッケージの インストール と 実行のしかたについてのメモ] に 書いたが、説明不足のところもあるし、いまの目的には必要のないことがらもある。 (わたしは、Windows 上 に Anaconda を入れて、Anaconda Powershell Prompt で 「python plotz1.py」のように実行している。)
このページに置いた Python プログラム例には、日本語文字の操作はふくめなかった。 図に表示する文字は ASCII コードであらわせるアルファベット・数字などにかぎった。 ただし、コメントには日本語文字をつかっている。文字コードは UTF-8 にした。
【[注意 (2023-06-06)】 実行する計算機・Python処理系によっては、このページにあげたプログラム例の 「df[columns_list] = df[columns_list].astype(float)」 がエラーになることがある。 そのすべてではないが、場合によっては、この行が不要であることがある。 この行のあたまに「#」を入れてコメント行にしてためしてみてほしい。】
ここでは、Python の基本的なグラフィックスのパッケージである matplotlib をつかって、 風速の鉛直分布を折れ線グラフにしてみる。 この風速は、水平2次元の風速ベクトルの大きさである。
横軸に風速、縦軸に気圧をとって、すなおにグラフにしてみる。
プログラムのおわりのところで、「#画面表示」と注記してある「plt.show()」を生かすと図を画面に表示し、 「#画像ファイル」と注記してある4行を生かすと図をpngファイルに書き出すようにした。
作図例 1では実際の空間と上下が逆になるので、縦軸の上端・下端の値を指定することによって、 上下を逆にした。
縦軸を対数目盛りにした。対数目盛りでは 座標値 0 は表現できないので、縦軸の上端は 10 hPa とした。
作図例 3 では縦軸の目盛り線につけられる数値が10の何乗という形になる。 そのかわりに、目盛り線の位置を、指定気圧面にあわせて設定することにした。 ただし、軸上のせまい範囲に多数の指定気圧面があるばあいは、文字がかさならないようにまびくことにした。 目盛り線を延長した格子線も入れることにした。 縦軸の上限を、この時刻の風の観測値のあるいちばん上の指定面である 30 hPa とした。(日時によってはもっと高いところの観測値があることもあるが。)
地点や日時がちがうばあいは、 プログラムのはじめの部分の stname に地点名 (ローマ字)、 iyear, imonth, iday, ihour に年、月、日、時をあたえれば、 pd.read_table() の中の最初に書かれたファイル名、 plt.title() の中に書かれた表題文字列、imagefilename に代入されるファイル名が それにあわせてきめられるようにした。
ベクトルの東西成分と南北成分の値は、x軸を東向き、y軸を北向きにとった x-y平面でのベクトルの偏角を arg とすれば、 ベクトルの大きさに cos(arg)、sin(arg) をかければもとめられる。 ただし、多くのプログラム言語では、arg をラジアン単位であたえる必要がある。 度(°)の単位であたえられた数値に、(2 π / 360) つまり (π / 180) をかければよい。ただし π は円周率である。
ところが、「風向」は、この偏角と関係はあるが、そのものではない。
これを考慮して、風向から偏角に換算する。
[ここから 2021-06-18 追加]
換算の計算はつぎのようになる。 ここでは、風向を winddir、風速を windsp、東西成分を u、南北成分を v とした。 Python の math パッケージから、三角関数と円周率の値を呼び出している。
arg = (-90.0 - winddir) * math.pi/180.0 u = windsp * math.cos(arg) v = windsp * math.sin(arg)
風向と風速から、風の東西成分 (西風を正とする) を計算して、その鉛直プロファイルを作図する。 軸のとりかたは風速の鉛直プロファイルの作図例 4 と同様にする。
風の南北成分 (南風を正とする) をあわせて表示するには、つぎのように変更すればよい。
風速の鉛直プロファイルの作図例 4 と同様に、気温の鉛直プロファイルを作図する。
風速の鉛直プロファイルの作図例 4 と同様に、相対湿度の鉛直プロファイルを作図する。
対流圏上層から成層圏では、気温が低く、したがって比湿も小さい。 ラジオゾンデの湿度計は、そのような状況でデータ欠損 (欠測) になることが多い。
気温と相対湿度では、物理量の次元がちがう。気温は温度という量の次元をもつが、 相対湿度は、(水蒸気圧どうしの比、または比湿どうしの比なので) 無次元量 (本来の単位は「1」) である。 次元のちがう量を同じ横軸上にあらわすのはよくない。 縦軸の寸法をそろえて、別々のグラフにしたうえで、グラフどうしを横にならべて見るのがよい。
高層気象観測データの表現としてよくつかわれる「エマグラム」(emagram) では、 露点温度をつかう。露点温度は、空気塊の気圧を変えないで温度を下げたとき飽和に達する温度である。 これならば、気温と同じ横軸にのせることができ、図上で気温と露点温度の差を読みとって論じることができる。
[ここから 2023-05-15 追加]
気温の鉛直プロファイルの作図例 6 に、露点温度を破線で追加する。
ここでは、気温から飽和水蒸気圧を計算する Tetens の式 ([気候・気象学の「水の相変化、大気中の水蒸気」] のページで説明した) をつかう。 まず気温から Tetens の式で飽和水蒸気圧を計算する。 飽和水蒸気圧に相対湿度をかけて実際の水蒸気圧を計算する。 露点温度とは、実際の水蒸気圧が飽和水蒸気圧となる温度なので、 Tetensの式を変形して飽和水蒸気圧から温度を求める式にしたものに実際の水蒸気圧を入れることによって、露点温度を得る。
なお、Python プログラムでは、露点温度を pandas のデータフレームの列として追加したほうがととのった形になるが、 ここではそうせず、Numpy の配列に入れて matplotlib の plot にひきわたしている。
【これよりもさらにエマグラムらしくしようとして参考例をさがすと、それはたいてい MetPy というパッケージを利用している。 MetPy は Anaconda の常備のライブラリにはないが、conda-forge にある。ただし、わたしはまだためしていない。】