読者です 読者をやめる 読者になる 読者になる

銀の弾丸

プログラミングに関して、いろいろ書き残していければと思っております。

気象庁の「過去の気象データ検索」から10分間隔の気圧データを取り出してみた

PHP HTML / CSS 正規表現

気象庁のWEBページからは、10分間隔で気圧、降水量、気温などのデータが得られます(*1)。 やんごとなき事情により、住んでる近くの気圧や気温の急激な変化があったところを調べたくて、サイトを開いてみたのですが、気象庁のサイト、イマイチ使いにくい。データが膨大というのもあるとは思うけど・・・。


(*1) 10分データが得られるのは、2008年6月25日以降みたいです。そしてリアルタイムなデータはムリ。観測所によって得られるデータが少ない場合もあります。


てことで、とりあえず、phpで欲しいデータだけを取り出すスクリプトを書いてみた。朝書いて、夜に手直ししたり付け加えたりしたから、長くなってゴメンなさい。動かしたときの出力も下に貼ってます。

このデータでグラフを描いたり、中途半端な地点のデータも平均を取ることで補完したりできますね。もしかしたら、FFTで次の日の予測とか出来たりして(カオスー!)

話し変わるけど、気象庁のサイト、DOCTYPEがHTML5ですが、<br> とか平気で書いてあって苦笑しました。

そんで、SCRIPTタグの中身がHTML的にコメントアウトされていないので、simplexml_load_stringjavascriptをHTMLとして読んでくれて、イチイチ警告を出してくれてウザイ。それくらいわかってよね!みたいな。

他にも、hrefのURLに現れる&を「実体参照にしなさい!」とか、そらそうかもしれんけど・・・。

PHPなんで、もうちょっとゆるいほうがお好みです。なんだって、PHPですから。

そんなこんなで、全体をマジメにParseする替わりに、正規表現で必要なところだけ抜き出して処理してますよ。現実的で素敵です。PHPですもの。

以下、出力結果の抜粋です(長いのでw)

都府県・地方一覧

No. 名称
11 宗谷地方
12 上川地方
13 留萌地方
14 石狩地方
15 空知地方
16 後志地方
17 網走・北見・紋別地方
18 根室地方
19 釧路地方
20 十勝地方
21 胆振地方
22 日高地方
23 渡島地方
24 檜山地方
31 青森県
32 秋田県
33 岩手県
34 宮城県
35 山形県
36 福島県
40 茨城県
41 栃木県
42 群馬県
43 埼玉県
44 東京都
45 千葉県
46 神奈川県
48 長野県
49 山梨県
50 静岡県
51 愛知県
52 岐阜県
53 三重県
54 新潟県
55 富山県
56 石川県
57 福井県
60 滋賀県
61 京都府
62 大阪府
63 兵庫県
64 奈良県
65 和歌山県
66 岡山県
67 広島県
68 島根県
69 鳥取県
71 徳島県
72 香川県
73 愛媛県
74 高知県
81 山口県
82 福岡県
83 大分県
84 長崎県
85 佐賀県
86 熊本県
87 宮崎県
88 鹿児島県
91 沖縄県
99 南極

宗谷地方(11) 地点(ブロック)一覧

No. 名称
47401 稚内
0002 沓形
0003 浜頓別
47402 北見枝幸
0005 歌登
1051 中頓別
1054 豊富
1203 沼川
1207 船泊
1284 宗谷岬
1285 浜鬼志別
1512 本泊
1528 声問
1546 礼文
1593 幌泊
00 宗谷地方全地点
1573 幌延
1656 礼文上泊埼

(途中ですが長過ぎるので割愛します)

兵庫県(63) 地点(ブロック)一覧

No. 名称
0607 香住
0608 温泉
0609 三川山
47747 豊岡
0611 八鹿
0612 和田山
0613 生野
0614 柏原
0615 一宮
0616 笠形山
0617 佐用
0618 後川
0619 上郡
0620 的場山
47769 姫路
0622 名塩
0623 六甲山
0624 家島
0625 明石
47770 神戸
47776 洲本
0628 福良
0956 西脇
0967 大屋
0968 福崎
0969 三田
0970 郡家
0977 兎和野高原
1227 三木
1337 南淡
1448 淡路町
1449 芦屋
1450 神戸塩屋
1587 神戸空港
1588 西宮
00 兵庫県全地点

(長過ぎるので・・・)

兵庫県 姫路 2014年9月24日の10分間隔の気圧データ

時刻 現地気圧 海面気圧
00:10 1014.0 1018.7
00:20 1014.0 1018.7
00:30 1013.9 1018.6
00:40 1014.0 1018.7
00:50 1013.8 1018.5
01:00 1013.8 1018.5
01:10 1013.8 1018.5
01:20 1013.7 1018.4
01:30 1013.6 1018.3
01:40 1013.6 1018.3
01:50 1013.5 1018.2
02:00 1013.4 1018.1
02:10 1013.3 1018.0
02:20 1013.2 1017.9
02:30 1013.1 1017.8
02:40 1012.9 1017.6
02:50 1012.8 1017.5
03:00 1012.7 1017.4
03:10 1012.5 1017.2
03:20 1012.3 1017.0
03:30 1012.3 1017.0
03:40 1012.2 1016.9
03:50 1012.2 1016.9
04:00 1012.1 1016.8
04:10 1012.2 1016.9
04:20 1012.2 1016.9
04:30 1012.1 1016.8
04:40 1012.0 1016.7
04:50 1012.0 1016.7
05:00 1011.9 1016.6
05:10 1011.9 1016.6
05:20 1011.9 1016.6
05:30 1011.9 1016.6
05:40 1011.8 1016.5
05:50 1011.8 1016.5
06:00 1011.7 1016.4
06:10 1011.6 1016.3
06:20 1011.5 1016.2
06:30 1011.6 1016.3
06:40 1011.6 1016.3
06:50 1011.6 1016.3
07:00 1011.4 1016.0
07:10 1011.3 1015.9
07:20 1011.3 1015.9
07:30 1011.1 1015.7
07:40 1011.1 1015.7
07:50 1011.1 1015.7
08:00 1011.0 1015.6
08:10 1010.9 1015.5
08:20 1010.9 1015.5
08:30 1010.8 1015.4
08:40 1010.8 1015.4
08:50 1010.8 1015.4
09:00 1010.8 1015.4
09:10 1010.7 1015.3
09:20 1010.7 1015.3
09:30 1010.7 1015.3
09:40 1010.6 1015.2
09:50 1010.5 1015.1
10:00 1010.6 1015.2
10:10 1010.4 1015.0
10:20 1010.2 1014.8
10:30 1010.1 1014.7
10:40 1010.0 1014.6
10:50 1010.0 1014.6
11:00 1009.7 1014.3
11:10 1009.5 1014.1
11:20 1009.3 1013.9
11:30 1009.0 1013.6
11:40 1008.9 1013.5
11:50 1008.8 1013.4
12:00 1008.4 1013.0
12:10 1008.4 1013.0
12:20 1008.2 1012.8
12:30 1007.9 1012.5
12:40 1007.7 1012.3
12:50 1007.5 1012.1
13:00 1007.3 1011.8
13:10 1007.2 1011.7
13:20 1007.0 1011.5
13:30 1006.7 1011.2
13:40 1006.6 1011.1
13:50 1006.6 1011.1
14:00 1006.4 1010.9
14:10 1006.4 1010.9
14:20 1006.1 1010.6
14:30 1005.7 1010.2
14:40 1005.8 1010.3
14:50 1005.8 1010.3
15:00 1005.7 1010.2
15:10 1005.5 1010.0
15:20 1005.4 1009.9
15:30 1005.3 1009.8
15:40 1004.9 1009.4
15:50 1004.9 1009.4
16:00 1005.0 1009.5
16:10 1004.8 1009.3
16:20 1004.7 1009.2
16:30 1004.5 1009.0
16:40 1004.5 1009.0
16:50 1004.5 1009.0
17:00 1004.4 1008.9
17:10 1004.3 1008.9
17:20 1004.3 1008.9
17:30 1004.3 1008.9
17:40 1003.9 1008.4
17:50 1003.8 1008.3
18:00 1003.6 1008.1
18:10 1003.4 1007.9
18:20 1003.6 1008.1
18:30 1003.8 1008.3
18:40 1003.5 1008.0
18:50 1003.5 1008.0
19:00 1003.5 1008.0
19:10 1003.6 1008.1
19:20 1003.6 1008.1
19:30 1003.5 1008.0
19:40 1003.6 1008.1
19:50 1003.5 1008.0
20:00 1003.6 1008.1
20:10 1003.5 1008.1
20:20 1003.3 1007.8
20:30 1003.4 1007.9
20:40 1003.3 1007.8
20:50 1003.1 1007.6
21:00 1003.1 1007.6
21:10 1002.7 1007.2
21:20 1002.6 1007.1
21:30 1002.4 1006.9
21:40 1002.4 1006.9
21:50 1002.2 1006.7
22:00 1002.0 1006.5
22:10 1001.7 1006.2
22:20 1001.9 1006.4
22:30 1002.2 1006.8
22:40 1001.7 1006.3
22:50 1001.5 1006.1
23:00 1001.4 1006.0
23:10 1001.1 1005.7
23:20 1000.8 1005.3
23:30 1000.6 1005.1
23:40 1000.3 1004.8
23:50 1000.2 1004.7
24:00 1000.1 1004.6