地学

気象観測データを作図して見る: 空間分布、時系列

前にやった [気象庁の観測データを使う (序論)][気象観測データのグラフ作成と基本的な統計処理 (Rによる) (1)]に つづいて、複数の観測点の気象データをつかって現象の空間分布をみることにする。

まえおき

[2020年度秋学期の同様な教材] では、 北関東の 2020年12月1日~19日の観測値をあつかった。 それは、2020年12月17日に、北関東の大雪のニュースがあり、 とくに、群馬県みなかみ町の藤原にある気象庁のアメダスの観測所「藤原」の降雪深が観測開始以来の記録を更新する値になったので、 そのまわりの状況をみるのがおもしろいと思ったからだ。

「降雪深」については、別記事[雪について観測されている量]も見てほしい。

その事例に関心のある人は、2020年度秋学期の教材を見てほしい。

なお、この大雪については、気象ウェブサイトのつぎのページの中に解説がある。

対象の設定

今度 (2021/2022年) の冬は、 とくに2021年12月26日ごろ、滋賀県で、彦根の降雪深が観測開始以来の記録を更新するなどの、大雪になった。 (この事例についての報道などの情報を、おって補足したい。)

そこで、時空間分布を見る対象を、この大雪の事例をふくめるように、 2021年12月16日~2022年1月15日の、滋賀県を中心とする約 150 km四方の領域にふくまれる地点の、 気象庁のアメダスの観測データとした。

図表』 186~189ページ「日本の天気」のなかでは、186ページにでてくる「冬型」や、 190~191ページ「さまざまな気象現象」のうち 190ページ[2] 「日本海側の豪雪」の状況である。 ただし、北西の季節風がとくに強くなり谷すじをぬけて滋賀県から岐阜県・愛知県まで雪がふるような条件が生じた。


気象庁の観測地点の位置の情報

観測値の空間分布を図示するためには、観測地点の位置を知る必要がある。 地球上の位置は、ふつう、緯度・経度 (および 高さ) で表現される。

前回の教材でとりあげた気象庁ウェブサイトの「過去の気象データ ダウンロード」では、 地点を選択する際に、その地点の緯度・経度がポップアップの形で表示される。 しかし、ダウンロードされたCSVファイルには緯度・経度の情報ははいっていない。 ポップアップを書きとるのはうまくない方法だ。 気象庁の観測地点の緯度・経度をふくむ一覧表をつかうべきだ。

気象庁ウェブサイトの 「知識・解説」の「気象」のうち「気象に関する観測と予報の技術の解説」のうちに「気象の観測」というリンクがある。 そのページの表題は「気象観測・気象衛星」となっている。 そのページの「地上・地域気象観測」のところに、 「地上気象観測所について」と「地域気象観測システム(アメダス)について」がある。 気象台などの(いわゆる)気象官署での観測は「地上気象観測所について」のほうに書かれているのだが、 ほとんどの気象官署はアメダスの観測点にもなっているので、 ここではアメダスのほうにしぼってみることにする。

「地域気象観測システム(アメダス)について」 http://www.jma.go.jp/jma/kishou/know/amedas/kaisetsu.html のページには、アメダスではどんな観測をしているかの解説とともに、 「観測所一覧」がある。 このうち、CSV形式の「地域気象観測所一覧 [ZIP圧縮形式]」のファイル http://www.jma.go.jp/jma/kishou/know/amedas/ame_master_20211207.zip をつかう。 2022年1月16日にダウンロードしたものを、つぎのところにコピーしておく。 ファイル形式は zip で、展開すると ame_master_20211207.csv というCSVファイル (日本語文字コードはShift_JIS)がはいっている。

このファイル (以下、ame_master.csv とよぶ) に収録された地点は、現在のアメダスの観測点である。 過去に観測していたが現在は観測していない地点のことや、観測所の移動経歴などを知りたいときは、 同じページからリンクされている「アメダス地点情報履歴ファイル」を見る必要がある。

アメダスの地点には5けたのID番号がついている。この番号は国際地点番号ではない。

地点表ファイルの組みかえ

気象庁の ame_master.csv は、そのまま表計算ソフトウェアで表として見ることもできるし、 R で read.csv で読むこともできる。 しかし、わたしがやりたい作業にとってはちょっと不便な形をしているので、あらかじめ組みかえておくことにする。

組みかえたおもな点は、緯度・経度の単位である。 気象庁の地点表の緯度・経度は、それぞれ「度」と「分」の列にわかれている。 「度」のほうには整数値がはいり、「分」のほうには小数点下1けたまでの値がはいっている。 緯度・経度の表現は、60進法の度・分・秒 (秒よりこまかいところが必要ならば秒の10進小数)か、 度とその10進小数か、がふつうだと思うが、気象庁の地点表はどちらでもないのだ。 わたしは、「度」の単位であつかいたいので、「度」の列の値に「分」の列の値の60分の1をたして換算する。

【なお、日本国内の地点ならばすべて北緯・東経なので簡単なのだが、 世界の地点をあつかうときは南緯・西経のあつかいをきめておく必要がある。 南緯・西経を負にするならば、度の列だけでなく分の列の値も符号をかえる対象になる。】

組みかえのもうひとつは、地名のカタカナ表記である。 観測所名の表記は漢字が基本となっているが、それだけでは読みかたがわからない。 気象庁の地点表にはカタカナ表記がある。 ただし、1バイトのカタカナの文字コード (漢字の半分の幅で表示されることが多かったので「半角カナ」とよばれることが多い)が つかわれている。 その体系では、濁点・半濁点はそれがつくカナ文字とは独立した文字のようにあつかわれている。 いまでは1バイトカタカナには対応していないソフトウェアが多いので、 漢字をふくむ日本語文字コードのカタカナ(いわゆる「全角カナ」)に変換しておきたい。 ネット検索でみつけた horio さんのブログに書かれた R プログラム をつかった。 (わたしはむかし同様なプログラムを Awk 言語で書いたことがあるが、 そのときの作業かぎりのもので、汎用性はもたせなかったと思う。)

積雪深の観測地点は別の表になっているが、ame_master.csv の「備考1」の列に 積雪深の観測点としての地点IDがはいっている。 例外的に積雪深だけの観測点があるかもしれないが、積雪深を観測するアメダスの地点のほとんどはこれでわかる。 積雪深を観測していない地点は「-」(ダッシュ)がはいっているが、NA にかえておくことにする。

ame_master.csv には「所在地」の列がある。住所にあたる地名 (番地まではない) が書かれている。 それにくわえて、気象官署でもある地点のばあいは、官署名がはいっている。 (くぎり文字として「全角」の空白がはいっている。) 官署名だけ拾い出しておくことにする。

ame_master.csv には IDも地名も同じ地点が複数行ふくまれていることがある。 観測機器がちょっと離れたところにわかれて置かれているのだ。 緯度・経度・高さがちがうといってもわずかなので、さきに出てきたほうだけを残すことにする。

以上の方針で組みかえをした。

【気象庁の観測地点名には、同じ名まえのものがある。同じ都道府県内では同じにならないようにしているらしい。 地点を地点名で照合するようにプログラムをつくってしまってから、そのことに気づいた。 今回対象とする地域には、「美山」という地点が、福井県と京都府にある。 便宜上、amedas_stn.csv を手作業で編集して、京都府の「美山」の地点名を「美山@京都」に書きかえておくことにした。 (わざと気象庁が日本語の地点名につかいそうもない ASCIIコードの「@」の字を入れた。)】


地点分布を緯度・経度で表示する

観測点の空間分布を見るには、地図上に表現したほうがよい。 しかし、わたしは (地図は別のソフトウェアでかいているので) R で地図をかく応用パッケージのつかいかたを指導することが (まだ) できない。 R の maps というパッケージをつかえばよさそうだが、教室のパソコンでそれがつかえるか、まだ確認していない (これから確認し、つかえるならばそれをつかう例文もつくるつもりだが、今学期の授業にはまにあわないと思う。)

ここでは、横軸に経度、縦軸に緯度をとった x-y 平面上の位置として、観測地点の位置を表示することにする。 これも一種の地図投影方法とみなすことができ、そのばあいは「正距円筒図法」とよばれる。 【地図投影方法については、2000年ごろ地理情報学・地図学の教材としてつくった [地図投影]のページを見てほしい。】 実際の地球では、一定の経度間隔が、高緯度ほど短い距離間隔に対応する。 正距円筒図法の地図上の距離はそうなっていないことに注意する必要がある。 緯度と経度を同じ尺度で画面に表示すると、赤道に近いところ以外では、現実よりも横長になる。 つぎのプログラム例では、東西の経度幅 2度と、南北の緯度幅 1.6 度を画面で同じ長さにした。

アメダスの地点のうち 北緯 34.6~36.2度、東経 135.5~137.5度の範囲にあるものの位置と 地点名を、amedas_stn.csv のデータによって、R のグラフィックス機能で表示した。

amedas_stn.png

観測している気象要素を、記号の形と色の両方でしめした。

地理的背景として、海岸線、地形、県境などをいっしょにしめすことがのぞましいのだが、残念ながら準備ができていない。 地図帳、または、国土地理院の「地理院地図」( https://maps.gsi.go.jp/, 「地学概論」の教材ページ[ウェブ上の地形図・地質図・ハザードマップを見る] に説明を書いた) などを併用して見てほしい。

ここでつかった地点表ファイルは日本全国をふくんでいるので、 これとちがった地域についての図にかえることは、 プログラムの緯度経度範囲 (xlimit, ylimit の値として与えている) を変えればすぐできる。 (ただし、図の下の凡例をしめす位置も、あわせて変える必要がある。) しかし、このあとしめす気象データは、上の図の緯度経度範囲だけダウンロードしたものなので、 他の地域についてやるには、ダウンロードからやりなおす必要がある。


対象の設定、データの取得、データ列対応表の作成

空間的にも時間的にも、広く見たい、こまかく見たいという欲求もあり、データ処理能力がかぎられているという事情もある。 ここでは、空間については、上記の図の範囲をふくむように、 福井県、京都府、大阪府、奈良県、滋賀県、三重県、愛知県、岐阜県の全部のアメダス観測点(気象官署もふくむ)のデータを取得することにした。 時間については、2021年12月16日から2022年1月15日までの日値をとりあげることにした。

前回と同じく、気象庁の「過去の気象データ ダウンロード」のサイトから CSV 形式のデータを取得した。 一度にダウンロードできるデータの量の制約はあるが、時間方向の件数がすくなければ観測地点数をふやすことができる。 地点選択では都道府県別の地図の画面で地点を指定する必要があるが、複数の都道府県の地点を指定していっしょにダウンロードすることができる。 この方法で、降水量、積雪深、降雪深 [注]、日照時間、日平均気温の、 それぞれ対象とした緯度経度範囲にふくまれる地点を指定してデータをダウンロードした。 地点数は降水量がいちばんおおく、積雪深と降雪深の地点、日照時間と気温の地点は、それぞれ、降水量の地点の部分集合にあたる。

ダウンロードしたファイル(ファイル名を data.csv からかえた)を教材ウェブサイトに置く。 気象庁サイトが混雑しないように、実習にはこれをつかってみてほしい。 (もし別の時期のデータをくわえたければ、ダウンロードしなおすのもよいが、 そのときは、下にのべる対応表づくりもやりなおす必要が生じるかもしれない。)

CSVファイルの読みとばすべき行数は、日最大積雪深のファイルでは 6行、その他の4つのファイルでは 5行である。

作業を始めてみて、このダウンロードデータの形式に由来するむずかしさにぶつかった。 観測地点と、その地点のデータがふくまれるCSVファイルの列との対応を、機械的につけることがむずかしいのだ。

対策として、ダウンロードしたCSVファイルを見て、手作業で、地点名と、CSVファイルでその地点がはいっている列番号との対応表を つくっておくことにした。 ただし、「表を見る」作業は表計算ソフトウェアでやるのが便利で、そこでは列は A~Z, AA, AB, ... とアルファベットで表示されている。 R での処理では列の番号が整数でほしいのだが、表計算の列記号から番号への変換は機械にやらせることにする。 ただし、列記号「NA」は、R で数値の欠損をあらわす表現とぶつかるので、便宜上「NNAA」と入れておくことにした。 その変換のついでに、地点表 amedas_stn.csv を読んで、地点の緯度・経度も列番号とならべて、表 (「key表」とよぶ) にしておくことにする。


毎日の観測値の分布を緯度・経度で表示する

ここまで準備すれば、ダウンロードしたデータファイルと、key 表の2つを読んで、 日ごとの観測値の空間分布を図化することができる。

図には、観測点の位置に記号(まる)をかき、その上側に数字で観測値をしめすことにした。 ただし、観測値が欠けているばあいは「NA」と表示することにした。 また、観測が不完全なばあい(「品質情報」が「8」でないばあい) は、観測値を表示する文字の色を赤にした。

図形出力先は、画面と、画像ファイル(png)とのどちらでもできるようにしたが、 ここにリンクしたプログラムは、画像ファイルに出すものにしてある。 画面に出したいときの変更点は、「png(...)」と「dev.off()」の行をコメントにする(行の頭に「#」をいれる)ことと、 コメントにしてある「par(ask=TRUE)」をいかす(行の頭にいれてある「##」などをけす)ことである。

プログラムでは31日ぶんの図をつづけてつくるが、ここではそのうちある1日ぶんの図をのせておく。あとで一覧表ページをつくる予定。

precip_20201226.png

snow_depth_20201226.png

snow_accum_20201226.png

sundur_20201226.png

temp_20201226.png

【いまのプログラムでは、表示対象の気象要素の観測がされていない地点にも記号を打って「NA」と書いている。 観測のない地点を省略することは、key表をつくりなおせばできるが、いまはまだ用意していない。】


時系列グラフ

データのあるすべての観測点についてそれぞれ、時間(ここでは日単位なので日付)を横軸、 観測値を縦軸にとったグラフをつくるプログラムを作成した。

降雪深、最大積雪深、日照時間、降水量は、数値のゼロに絶対的な意味があるので、 ゼロから観測値までの棒と、観測値の位置での 〇(まる)の両方で表示することにした。 ただし、観測が不完全な(「品質情報」が 8 でない)ばあいは、まるをかかないことにした。

気温は、℃単位のゼロは約束上の原点にすぎず絶対的な意味がないので、 棒はつかわず、二重のまるで表示することにした。 ただし、観測が不完全なばあいは、大きなまるをかかないことにした。

正方形の1画面の上下に同じ横軸のグラフを2つ配置することにした。

日降雪深と日最大積雪深、日照時間と日平均気温は、同じ地点の両要素を同じ画面に配置する。 日降水量は、画面表示のばあいは、2地点ずつ表示する。 ただし、画像ファイルにしまうばあいは、1地点ごとに地点名をつけたファイルにしたいので、 画面の上半分だけに図がある形になる。

図形出力先は、画面と、画像ファイル(png)とのどちらでもできるようにしたが、 ここにリンクしたプログラムは、画像ファイルに出すものにしてある。 画面に出したいときの変更点は、「png(...)」と「dev.off()」の行をコメントにする(行の頭に「#」をいれる)ことと、 コメントにしてある「par(ask=TRUE)」をいかす(行の頭にいれてある「#?#」などをけす)ことである。 降水量のグラフについては、1画面に2つの図を入れる指定「par(mfrow=c(2,1))」が2か所にあるが、 画面に出したいときは「par(ask=TRUE)」につづくほうを、 画像ファイルに出したいときのうち、1つのファイルの2つの図を入れたいときは「png(...)」につづくほうを 生かす (他方をコメントにする)。 どちらもコメントにすると、1つのファイルには1つの図だけがはいり、のこりは空白となる。

地点名は図の中では日本語文字 (漢字・ひらがな) ではいるようにしたが、 画像ファイル名では、ASCIIコード (いわゆる「半角」) のローマ字小文字にかぎった。 実行する計算機の OS によって、ファイル名に日本語があるとファイルがうまくできないことや、 ファイル名のうちの大文字・小文字の区別があったりなかったりすることがあるので、それによるトラブルをさけるためである。

プログラムではデータのある全地点の図をつづけてつくるが、ここではそのうち1地点の図をのせておく。降水量のグラフの画像ファイルには下に空白がある。 あとで一覧表ページをつくる予定。

snow_202112_hikone.png

sundur_temp_202112_hikone.png

precip_202112_hikone.png

【いまのプログラムでは、表示対象の気象要素の観測がされていない地点についても、事実上からっぽのグラフをつくっている。 観測のない地点を省略することは、key表をつくりなおせばできるが、いまはまだ用意していない。】


作業手順メモ

(2022-01-17 3限の授業で説明しながらPowerPointに書いた内容です。事前に用意できなくてすみませんでした。)

昨年度の教材とは、ファイル名が1字ちがいで内容が全然ちがうものもあるなど、まぎらわしくできているので、 とりちがえないように注意してください。


(2020-12-20 .. 2021-01-14) 2022-01-17
増田 耕一 (MASUDA Kooiti)
[「地学」日程と各回の内容] [今学期授業向け情報目次] [地学の教材目次] [教材目次]