続・Python による気象解析入門 (補遺)

気象庁アメダスの観測データ (日別値) を地図表示する


[観測点ごとの気象データを図示する][観測点ごとのデータと格子点のデータをかさねて図示する] では、 気象庁の地上気象観測のうち「気象官署等」 (特別地域気象観測所をふくむ) の観測値をあつかったが、 一般のアメダス観測点 (地域気象観測所) のデータはあつかわなかった。 気象庁ウェブサイトからダウンロードした csv ファイルに含まれた観測点名と その地点の緯度・経度とをむすびつける手順を、再現可能な形で説明できなかったからである。 ようやくそれがだいたいできたので、 上記の2つのページで気象官署等の日値についてやったのと同様なことを、 アメダス観測点の日値についてやってみた。 ただし、一般のアメダス観測点では気圧を観測していないので、 気象要素の例としては日照時間をえらんだ。

【実は、アメダス観測点では、2021年3月から、 湿度の観測が (観測点ごとに開始日付がちがうが) はじまることに関連して、 日照時間は、大部分の地点で、現地観測から、衛星観測による推算にきりかえられている。 したがって残念ながら、今回しめす2023年の日照時間の分布は、 ほぼ、衛星観測からわかった値の分布をわざとあらくして見ているにすぎない。 しかし、2021年2月以前の日照時間の分布をみるのに応用すれば有効だと思う。】


観測データ (csv ファイル) のダウンロード

2023年7月31日から8月5日のあいだに、 気象庁ウェブサイトの「各種データ・資料」の 「過去の気象データ・ダウンロード」のページで、つぎのように指定して、csv ファイルをダウンロードした。 (北海道以外の全都府県についておこなった。北海道についてはこれからやる予定だが詳細未定。)

このようにして得られた (いまのところ 46 都府県それぞれの) csvファイルを、luce および hamana では /home/masuda/amedasdaily/ の下に置いた。一例をここにつける。

都道府県名をふくめたので、そうしないばあいにくらべて見出し行が1行ふえて、 最初の日時の観測値は 8行め (Python 流のかぞえかたでは第7行) にある。

各地点ごと、各気象要素ごとに、「品質情報」と「均質番号」の列がある。 また、気象官署等の降水量と日照時間には、「現象なし情報」の列もある。 したがって、1地点あたり、気象官署等のばあいは 17列、一般のアメダス地点のばあいは 15列をつかっている。


観測地点表

アメダスの観測点の情報は、気象庁ウェブサイトのつぎのページにある。

2023年 7月31日に、そのページにあった 「最新ファイル(適用日:2023年3月23日)」のうちの 「地域気象観測所一覧 [ZIP圧縮形式]」をダウンロードした。ファイル名は ame_master.zip であり、 展開すると ame_master_20230323.csv がある。日本語文字をふくんでおり、文字コードは Shift_JIS である。 これを「マスターファイル」とよぶ。

マスターファイルを LibreOffice Calc や Microsoft Excel で開いて観察し、 試行錯誤でつくった Python プログラムで変換して、つぎの地点表ファイルをつくった。 luce では /home/masuda/mapamedas 、hamana では /home/masudako/ex/mapamedas に置いた。

この表の各列の意味はつぎのとおり。

おぼえがき


プログラム例の実行のしかた

luce では、つぎのようにして例文を自分のホームディレクトリの下にコピーする。 (空白とそのあとのピリオドに注意。)

cp -r /home/masuda/mapamedas .

hamana ではつぎのようにする。

cp -r /home/masudako/ex/mapamedas .

そして「cd mapamedas」のあと、「python3 map_amedas_daily.py」と 「python3 map_contour_amedas_daily.py」をそれぞれ実行できる。

地点表は mapamedas ディレクトリにふくめてある。 観測データの csv ファイルは、/home/masuda/amedasdaily/ に置かれたものを読む。 (luce と hamana のほかの計算機で実行するときには、観測データのファイルもコピーする必要がある。)


観測地点での観測値を地図上に表示する

「気象官署等」について [観測点ごとの気象データを図示する]の 28e_map_tmpmax_kanto.py でやったのと同様に、 地点の位置に + 印をかき、その上側に数字で観測値を表示するプログラムを作成した。 (品質情報が 2~7 のばあいは数字を赤字にする。0~1 のばあいは赤字で「NA」と表示する。) 現状では、6月1日から30日までの毎日の日照時間を 1日ごとに地図上に作図し、png ファイルで書きだすようになっている。

利用の際に変更すること

気象要素を変えるには jvar にあたえる値を変えればよい。 (0:日平均気温、1:日最高気温、2:日最低気温、3:日降水量、4:日照時間)。

対象となる日付を変えるには、krecstart, krecend にあたえる値を変えればよい。 (ここにあたえる値は、2023年 6月 1日を 0 とした とおしの日付である。 calendar か datetime をつかえばもっとわかりやすくできるが、ためしにつくったままになっている。)

表示する地図の範囲を変えるには、 lonmin, lonmax, latmin, latmax にあたえる値を変える。 それとともに、対象となる地点がふくまれる都道府県も変わるので、 regionlist の内容も変える (コメント行で列挙されているものからえらぶ)。

luce, hamana 以外の計算機で実行するばあいは、 datapath (csvファイルが置かれたところ), imagefilepath (結果の画像ファイルが置かれるところ), shapefilepath (県境の地理データが置かれたところ) を、それぞれの計算機の事情にあわせて修正する。 地点リストファイル amedas_stn_m20230804.csv が Python プログラムとは別のディレクトリに置かれている ばあいは、それを読む pd.read_csv( ) の中のそのファイル名にパス指定を追加する。

おぼえがき

複数の CSV ファイルをつないで処理する手順は、 基本的に、[観測点ごとの気象データを図示する] のばあいと同じである。 ただし、CSVファイルの見出し行を1行でなく2行読み、都道府県名をチェックする。 また、気象官署等と一般のアメダス地点とで列の数がちがうことに対処する。

「気象官署等」のばあいにくらべて、地図の同じ範囲に表示される地点の数がふえるので、 文字の大きさは変えず、figure で設定する画面を大きくした。


観測地点での観測値と、それを空間内挿してつくった等値線を地図上に表示する

「気象官署等」の海面気圧について [観測点ごとのデータと格子点のデータをかさねて図示する]の 33a_map_interp_hourly.py で やったのと同様に、 アメダスの観測値 (の日照時間) を、そのまま数字で表示するのとかさねて、 scipy.interpolate によって緯度経度の格子点に線形内挿し、 matplotlib の contour によって等値線をひくプログラムをつくった。

利用の際に変更すること

気象要素の指定は map_amedas_daily.py と同様である。 ただし、等値線レベルをあたえる配列 levels0 と levels1 の内容は、 日照時間のためのものだけ用意しており、他の気象要素については追加する必要がある。

表示する地図の範囲の指定も map_amedas_daily.py と同様だが、 さらに、(地図の範囲とは別に) 格子点データを作成する範囲 lonming, lonmaxg, latming, latmaxg も変える必要がある。

おぼえがき

格子点間隔は、「気象官署等」のプログラム例では、緯度・経度 0.25度としたが、 今回は、緯度・経度 0.1度とした。 これは観測点の平均間隔よりはだいぶこまかく、 いわば情報の水増しになっているが、等値線を等値線らしく表示するにはこのくらいあったほうがよいと思う。

観測点でかこまれていない領域について機械的にひかせた等値線は不適切である可能性が高いが、 ここでは scipy.interpolate が計算した格子点値をそのままつかって機械的に等値線をひいていることに 注意してほしい。


1地点の観測値の時系列をグラフにする [2023-08-14 追加]

「気象官署等」のデータについて [観測点ごとの気象データを図示する (2023-07-04)] の 「[29a ~ d] ひとつの地点の観測値の時系列をグラフにする」のところでやったのと同様に、 アメダスの 1地点の日別値の時系列をグラフにするプログラムをつくった。 29d_graph_obs_ver1.py と同様に、上段に気温 (最高・平均・最低)、中段に日照時間、 下段に降水量をしめす。 ただし、version 1 では、品質情報のチェックがまだできていない。

期間については、まず syrmo にあたえる文字列 (現状では '202306') を、 データファイルにあわせて変更する。 横軸の尺度は、データファイルの内容にあるはじめの日から31日間のデータを表示できるように設定している。

地点名は、stnamesel にあたえる文字列として、ローマ字 (最初の文字だけ大文字) で指定する。 それにあわせて、region に、都府県名 (北海道は振興局名にする予定) をローマ字 (全部小文字) で指定する。

【[注 (2023-08-14)] 2023年8月4日に用意したアメダス地点表 amedas_stn_m20230804.csv をつかって 地点名 'Kumagaya' を指定してこのプログラムをうごかすと、ただしく動作しない。 原因は、地点表データのまちがいだった。(Kuma であるべき地点名も Kumagaya となっていた。 わたしがローマ字を手入力で追加した際に予測入力を修正しそこなったのだった。) 2023年8月13/14日の深夜にさしかえたので、それ以前にこの地点表ファイルをつかった人は、 luce では、自分の mapamedas ディレクトリに cd して 「/home/masuda/mapamedas/amedas_stn_m20230804.csv .」を、 hamana では同様に 「/home/masudako/ex/mapamedas/amedas_stn_m20230804.csv .」を、やりなおしてほしい。 ウェブページにある地点表ファイルをつかった人は、ダウンロードしなおしてほしい。】

【[注 (2023-11-10)] 2023年8月13/14日に改訂したアメダス地点表 amedas_stn_m20230804.csv に、 なお まちがいが残っていた。 (Nagaoka であるべき地点名が Nagoka となっていた。) 2023年11月 9/10日の深夜にさしかえたので、上記と同様に、更新してほしい。】

このプログラム例では、降水量だけを観測している地点では、 気温と日照時間のグラフは内容が空白になり、画面がもったいない。 7月4日のプログラム例のうちの 降水量だけのグラフをかく 29b_graph_obs_ver1.py と 29d とのちがいを参照すれば、今回のプログラム例を降水量だけに変更できるだろう。


2023-08-05, 2023-08-11, 2023-08-14, 2023-11-10
増田 耕一 (MASUDA Kooiti)
増田の [B, F, G 合同セミナーのページ] [立正大学用教材目次] [計算機を利用した気象分野の実習教材目次] [教材目次]