最近地震の悪夢を見たので地震のデータを取ってみることにした。

気象庁のページで日付をURLで指定してデータが取れるので、Rubyの配列で震源地名、緯度経度、時刻、震源の深さ、マグニチュードを返すやつを作った


quake.rb

require 'rubygems'
require 'open-uri'
require 'kconv'
require 'date'

class Quake
def self.get(date=Date.today-1)
url = "http://www.seisvol.kishou.go.jp/eq/daily_map/japan/#{date.to_s.gsub('-','')}_list.shtml"
page = open(url).read.toutf8
page.scan(/<pre>(.+)<\/pre>/im).first.first.split(/[\r\n]/).map{|i|
i.strip
}.delete_if{|i|!(i =~ /^\d+/)}.map{|i|
tmp = i.split(/[^\d\.]+/)
{
:place => i.split(/\s+/).last,
:time => Time.mktime(tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i),
:lat => tmp.shift.to_i+tmp.shift.to_f/60,
:lon => tmp.shift.to_i+tmp.shift.to_f/60,
:depth => tmp.shift.to_i,
:magnitude => tmp.shift.to_f
}
}
end
end

if $0 == __FILE__
## ruby -Ku quake.rb
## ruby -Ku quake.rb 20120102

date = ARGV.empty? ? Date.today-1 : Date.parse(ARGV.shift)
p Quake.get(date)
end


結果


とりあえず毎日、地震データを蓄積してみよう。そのうち解析する。