アメダスから気象情報を取得して蓄積する

超趣味的なお話です。


以前、京都市の気象情報を取得してデータ化するというのをやっていたのですが、スクレイピングの対象がYahoo!天気だったためにページが頻繁に更新されてメンテナンスが面倒で、なおかつ正確性も微妙ということでそのうちメンテナンスしなくなってしまいました。

が、最近、データをグラフ化することに凝っていて、そうだもう一回やってみればいいんじゃね?アメダスの情報を収集するのを思いつきました。そうだそうだ。気温と降水量のシンプルなグラフで良いから。





今日・昨日のアメダス

始めはライブドアの提供しているRSSを利用しようと思ったのですが、ライブドアのアメダスはページは毎時更新であるもののRSSは3時間に1度ほどしか更新されずデータが取得できません。

アメダス(詳細) – 京都府 – 京都 – livedoor 天気情報


なので結局スクレイピングする必要があるんですが、どうせスクレイピングするんだったら気象庁のデータでよくね?その方が更新も早いし正確だしと言うことで、気象庁の以下のページをスクレイピングすることに。

気象庁 | アメダス | 今日のデータ – 京都(キョウト) 毎正時の観測データ
気象庁 | アメダス | 昨日のデータ – 京都(キョウト) 毎正時の観測データ


気象庁のURLは引数がいろいろとくっつくことが多いんですが、基本的には非常にシンプルにまとめられます。アメダスのURLも、

http://www.jma.go.jp/jp/amedas_h/today-(観測地点コード).html

で今日のアメダスが、

http://www.jma.go.jp/jp/amedas_h/yesterday-(観測地点コード).html

で昨日のアメダスが取得できます。シンプル。
ライブドアのページだと年が取得できないので、年をまたいだときの処理が必要なんですが、気象庁なら年月日が取得できるのでちょっとだけ便利です。


注意点

注意点としては、時間が0時から23時ではなく、1時から24時になっている点。
年月日と合わせてプログラムに投げれば大抵よしなにしてくれるはずですが(PHPの場合、5/24 24時は、5/25 0時と解釈してくれます)、出来ない場合は何らかのフォローが必要です。



過去のアメダス

というわけで、現在のデータを蓄積していくのは出来ましたが、そうなると過去のデータも欲しくなったりします。「過去のアメダス」と言うデータはないのですが、気象庁の過去の気象統計にて特定日の1時間ごとのデータが公開されているので、そこから根気よく取得していけばデータを作成できそうです。

例えば2010年5月1日の毎時データはここで。

気象庁 | 1時間ごとの値

引数を取り除いたあとのURLの構造は、

http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_s1.php?block_no=(観測地点コード)&year=(年)&month=(月)&day=(日)

となっていてこちらもシンプル。観測地点コードが先ほどのモノと違うのだけ注意です。



ちなみに過去の気象統計で、毎時の気温が記録されているのは1990年4月1日以降、毎時の気圧が記録されているのは1990年4月21日以降になっているようです。2008年6月25日からは10分ごとのアメダスデータも記録されているようですが…さすがにそれは要らんな(笑)


実際のグラフについては、またおいおい。