続・Python による気象解析入門

2022年12月の大雪に関連して地上気象観測値の空間分布を見る

2022年12月22~24日ごろ、日本の多くの地域で雪がふった。 とくに、ふだん積雪のない高知での積雪が話題になった。 また、北海道で、道路や鉄道の交通がとまるなどの災害になった。 ふだん積雪の多い新潟県などでも、大雪のところもあり、それほどでもないところもあった。 このときの降雪の地理的分布を見るのはおもしろそうだ。

ここでは、2022年7月の実習教材 [観測点ごとの気象データを図示する][観測点ごとの風のデータを図示する] のプログラム例を部分的に改造して、 気象庁の地上気象観測の観測値を地図上に表示してみる。


「気象官署等」の観測データ

気象庁の気象観測所のうち、気象台、測候所、 特別地域気象観測所 (かつての測候所が無人化されたもの) などの地点リストを つぎの csv ファイルに用意した。 ただし、高層気象台は「Tateno」という地点としてふくまれているが、 飛行場関係の気象台・測候所・観測所はふくまれていない。 ここにふくまれた地点には、WMOに登録された国際地点番号がついている。 (一般のアメダスの地点にはついていない。 アメダス地点番号と国際地点番号はどちらも5けたの数字だが、別々の体系である。)

この内容は、気象庁のウェブサイトの 「知識・解説 > 気象の観測 > 地上気象観測所について」とたどったところにある 「地上気象観測」のページの「地上気象観測 地点情報履歴ファイル・統計切断情報ファイル」のリンクさきにある 「地上気象観測 地点情報履歴ファイル」 smasters.index.zip (2022年7月16日ダウンロード) を 増田が編集したものである。 [観測点ごとの気象データを図示する] の教材では、jma_observatories.csv と jma_stations2.csv の2つのファイルとしたが、 ここでは1つにまとめて、国際地点番号順に整列した。

気象庁ウェブサイトの 「各種データ・資料 > 過去の気象データ・ダウンロード」から、2023年1月6日に、 上記 csv ファイルにふくまれる地点の、 2022年12月21日から2023年1月5日までの、気象要素の日別値をダウンロードした。 気象庁ウェブサイトのダウンロードのファイル容量制限の関係で、8日ごとの2つのファイルにわけた。

対象とした気象要素はつぎのとおり。

ダウンロードする際の地点の順序は、jma_stations.csv と同じにした。 【これをあわせるのは簡単でない。実際やってみたら、ぬけおちがあって、やりなおした。 実用的には、あとのアメダスの地点のばあいのように、 ダウンロードした観測値ファイルの地名を見て地点表と対応づけするほうがよさそうだ。 そちらの注意も参照。】

同じ地点について、風速・風向の時別値をダウンロードした。 こちらは、1日 (日本時間の1時から24時までの24回) をひとつのファイルとした。 【手ちがいで、ふくめる予定がなかった雲量の観測値もふくまれているが、 そのままとし、風速・風向をえらんでつかうことにした。】


気象官署等の気象要素の日別値の分布の作図

データファイルには日本全国の観測点がふくまれているが、 ひとまず、[観測点ごとの気象データを図示する] のときにつかった、 仮称「関東」 (関東甲信越と静岡県の大部分をふくむ緯度経度範囲) の地図をかき、 そこにふくまれる観測点の位置に「+」印をかき、 そこに、気象要素の日別値の数値を数字でかくプログラム例を作成した。 (観測値の「品質情報」が「8」のばあいは青字、それ以外のばあいは赤字にした。)

【「現象なし情報」は、いまのところ考慮していない。 「0.0」であっても微量の降水と無降水とを区別したければ、 「現象なし情報」を参照するようにプログラムを改造したほうがよいだろう。】

都道府県境をかくのは [日本の都道府県境をかく / 中国の「省」の境をかく] に 書いた方法によっている。 実行する計算機上で県境の地理データがあるところを shapefilepath で指定している。 luce ならば /home/masuda/mapdata/ne/ にある。 自分のパソコンで実行するばあいは、上記ページから ne_10m_admin_1_japan.zip をダウンロードして展開し、 展開されたディレクトリを指定する。

例文の現状では、12月21日から28日までの降水量を1日ずつ順にしめすようになっているが、 対象の日付を変えるには、 「dfobs = pd.read_csv ...」の文で読ませるファイル名と、 krecstart, krecend に与える値を変えればよい。 気象要素を変えるには、jcol に与える値を変えればよい。

図を画面に表示するようになっているが、画像ファイルに保存するように変えるには、 プログラムの最後の部分の「##」ではじまっている行の「##」を空白にかえて有効にすればよい。 ただし、保存さきのディレクトリ名は imagefilepath で指定している。 そのディレクトリがなければあらかじめつくっておくこと。 【[2023-01-21] プログラム例文の「##」の部分でつくるファイル名が不適切なところがあったので、修正した。】

表示する地図の領域を変えるには、基本的には、 lonmin, lonmax, latmin, latmax を変えればよい。 ただし、経線・緯線の間隔 dlon, dlat や、 文字の大きさ (ax.textsize の中の fontsize に与える値) などの 調整が必要になるかもしれない。

luce での実習では、図にふくめる文字を ASCII コードで表現できるアルファベットや数字にかぎったが、 OS と Python 処理系が対応していれば日本語文字をふくめることもできる。 MS Windows 上での方法は [日本語文字を表示する (メモ)] に書いた。

不規則に分布する数値をもとに等値線をひくアルゴリズムはあることはあるが普遍的とはいいがたいので、 ひとまず、数値をプロットした地図に手がきで等値線や降水限界・降雪限界の線をかいてみることをすすめる。


時系列のグラフ [2022-01-19 追加]

1地点をえらんで、 対象期間の毎日の 気温 (平均、最高、最低) のマーカーつき折れ線グラフ、日照時間の棒グラフ、 降水量の棒グラフをかくプログラムを用意した。 2022年7月の実習の [観測点ごとの気象データを図示する] の プログラム例 29d_graph_obs_ver1.py を、今回の事例にあうように調整したものである。

地点の指定は、jma_stations.csv に出てくる順で、 最初のもの (Wakkanai) を 0 とした通し番号でするようにしてある。 (地名または地点番号でえらべるように改良するべきである。)

品質情報を見ておらず、値が欠損値であってもそのことが表現されていない。(そこを改良したら ver2 としたい。)

積雪深、降雪深、雲量も同様に作図できるので、やってみてほしい。


気象官署等の風の時別値の分布の作図

ひとまず、[観測点ごとの風のデータを図示する] のときと同様に、 仮称「関東」の地図をかき、風向・風速の時別値を矢印で表示するプログラム例を作成した。

【[2023-01-21] プログラム例文の「##」の部分でつくるファイル名が不適切なところがあったので、修正した。】

風速の値と図上の矢印の大きさとの対応は、プログラム中の変数 arrowscale に与える値 (quiverのパラメータ scale に与える値) によって調節できる。 (残念ながらわたしはこの値の定義を理解しておらず、試行錯誤で調節している。)

地図の緯度経度範囲を変える場合は、凡例の矢印をかく位置 (地図の緯度経度で指定している) を 調節する必要がある。

風向風速を矢羽根であらわす方法や、数字でプロットする方法については、 [観測点ごとの風のデータを図示する] のプログラム例を参照してほしい。


アメダスの気象要素の日別値の作図

【[2023-02-13] この部分は、事例はちがいますが、技術的内容をいくらか改訂したものがつぎのページにあります。

[2023年2月の大雪に関連してアメダス観測値の空間分布を見る]

気象庁のアメダスの地点リストは (最新のものではないが) [気象観測データ (多地点) の空間分布と時系列の作図 (Python による試作)] の 教材ページで説明した、つぎのファイルをつかうことにする。 これは、気象庁ウェブサイトから 2020年12月19日にダウンロードしたファイルを増田が編集したものである。

アメダスのなるべく多くの観測点のデータをつかうためには、 気象庁ウェブサイトの 「各種データ・資料 > 過去の気象データ・ダウンロード」の 「地点を選ぶ」で都道府県 (北海道のばあいはそれを分割した地区) の地図を表示させたうえで その左上にある「..県全地点」を選択するのがよさそうだ。

こころみに、新潟県全地点の降水量、積雪深、降雪深の 2022年12月21日から2023年1月5日までの日別値をダウンロードしてみた。 (ファイル名には便宜上、最初の日付と県名をいれてある。)

このファイルのなかみには、観測点名はあるが、観測点の緯度経度も、地点番号もふくまれていない。 (前にダウンロードしたものには都道府県名がふくまれていたという記憶があるが、 2023年1月16日にダウンロードしたものにはそれもふくまれていなかった。) 緯度経度を知るには、地点リストとつきあわせる必要がある。 観測値ファイルに観測点が出現する順序は、地点リストと同じではない。 なお、アメダスの地点名は、日本全国で一意的ではなく、同じ名まえのことがある。 都道府県内では一意的にきまる。 そこで、ひとまず、amedas_stn.csv から新潟県の地点 (アメダス地点番号の上位2けたが「54」) だけをぬきだしたファイルをつくり (いちばん上の見出し行は残した)、 それと照合することにした。

また「気象官署等」とされる地点はアメダス地点でもあるが、その地点のデータには「現象なし情報」の列がある。 それ以外のアメダス地点のデータには「現象なし情報」の列がない。 そこで、1地点あたりの列の数をかぞえておくことにする。 観測値ファイルと地点リストとの地点の照合をこころみたプログラムがつぎのものである。

新潟県のアメダス地点の降水量、積雪深、降雪深 (の いずれか) の 日別値を、 ひとまず (他の都道府県のところが空白になって変ではあるが) まえの例と同じ仮称「関東」の地図に表示するプログラム例をつくった。

【観測値がはいった 1つのファイルについて read_csv を 2回実行している。 1回めは地点名を読んで上の chkstn.py と同様な処理をするため、 2回めは観測値を読むためである。】

【降水量のデータ欠損は一時的なものとおもわれるので「NA」と表示することにしたが、 積雪深・降雪深のデータ欠損は、ほとんどが積雪深計が設置されていないところなので 地点の表示もしないことにした。】

複数の都道府県にまたがる分布をみることは、 気象庁サイトからデータをダウンロードすればできるので、各自こころみてほしい。 地図の範囲も興味に応じて変えてほしい。

データのダウンロードの際に、複数の都道府県について、それぞれ全地点を指定することもできる。 ただし、ダウンロードサイトのファイルサイズの制限があるので、 一度にダウンロードする地点数をふやすと、時刻数をへらさないといけない。 それでできる範囲ならば、このプログラム例を大きく変更しなくてよいだろう。

別々にダウンロードして read_csv で読みこんでデータフレームにしてから結合する方法もある。 まだ、わたしの理解が、説明を書くのにじゅうぶんなところに達していない。

対象となる地点と同名の別の地点があるばあいは、 あらかじめ、同名の地点を、照合でつかう地点リストからはずすか、 地点リスト上の地点名文字列を変更しておく必要がある。 (これまでに気づいた例は「府中」「美山」がある。)

また、ダウンロードのサイトでつくられるcsvファイルに書かれる地点名と、 地点リストの地点名の文字列が同じでないところも、あらかじめ対策が必要である。 これまでに気づいた次の2地点 (いずれも「気象官署等」でもある) については、 csvファイルの地点名の「(」【いわゆる「全角」のかっこ】よりも前だけを 地点リストと照合すればよい。 しかし、照合を前方一致にしてしまうと、ほかのところでまちがいが生じる。

amedas_stn.csv の 地点名気象庁からダウンロードされた csvファイル の 地点名jma_stations.csv の 地点名
つくばつくば(館野)Tateno
奥日光奥日光(日光)Nikko

2023-01-07, 2023-01-19, 2023-01-23
増田 耕一 (MASUDA Kooiti)
増田の [セミナーのページ] [立正大学用教材目次] [計算機を利用した気象分野の実習教材目次] [教材目次]