2005-09-06[n年前へ]
■地震ハザード・ステーション
全国を概観した地震動予測地図(確率論的地震動予測地図)を眺めれば、きっと気分をとてもブルーにすることができる「地震ハザード・ステーション」
ちなみに、真ん中の日本地図が「30年以内に震度6弱以上の地震が起こる可能性」…そして、一番右は「30年以内に震度5弱以上の地震が起こる可能性」震度5弱以上だと、日本は真っ赤。震度6弱以上でも、私の住んでいる辺りは真っ赤っか。
2007-12-29[n年前へ]
■Thinkpadユーザで作る「地震警報システム」
何年か前から、気象庁の情報を元に地震情報をメールで送信するサービスが色々立ち上がっている。そういえば、前にThinkpadの加速度センサを使ったアプリケーションのネタ出しをした時、気象庁でなく自前の「地震警報システム」を作るのはどうか?というアイデアが出てきた。ハードディスク保護や向き検知を目的として、Thinkpadのように加速度センサが搭載されているデバイスで「○×ガル以上の加速度が検知されたら、サーバにその揺れ情報を送信するソフトウェア」を動かす。そういったデバイスが日本中(世界中)で動いていれば、自分たち自身が動かす「地震警報システム」ができるかも、というアイデアである。
Thinkpad加速度センサ取得用C++クラスのようなものを使えば、簡単に「○×ガル以上の加速度が検知されたら、特定動作をさせるソフトウェア」を作ることができる。たとえば、試しに作った ThinkpadEarthquakeDetector.exeは一定以上の大きさの揺れが生じるとフォームの色が(10秒間だけ)変わるアプリケーションだ。このアプリケーションの場合、わかりやすく色を変えるだけだが、実際にはサーバに加速度・揺れ方向情報などを送れば良いだろう。
サーバを立ち上げ、PCユーザからの情報をもとに、リアルタイムで全国の震度情報をリアルタイムでマッピングするサービスなど、簡単に作ることができそうだ。
2011-03-11[n年前へ]
■2011年3月8日3時〜3月11日19時までの日本列島震度分布
下の動画は、2011年3月8日3時から3月11日19時までの間に、日本列島で起きた地震の震度分布マップです。一体どの辺りで地震が起きて、どの辺りの人たちが地面の揺れを感じ、そして、そんな場所が時間を追ってどのように変化して行くのを知りたくて、揺れが続く中で作った動画です。
動画で10秒過ぎに起きる地震が、今日の14時46分頃に起きた地震です。それまでは、比較的近い場所を震源とする地震が多いけれど、それ以降は、広い範囲で大きな地震が起き続けています。
また、2011年3月8日3時〜3月12日15時までの日本列島震度分布も下に貼り付けておきます。この震度分布時系列では、東北地方太平洋沖地震は約4秒時点になります。
北米プレートと太平洋プレート、さらには、フィリピン海プレートが入り交じりあう日本では、不安や不便がいつまで続くのでしょうか。
道の上で、不安そうに空を見上げる年上の人たちと話します。足下を見ると靴下だけだったり、上着も着ていないままだったり…。
一人暮らしの年配者たちは、たとえば、どんなものがあったら心細さがなくなるのだろうか?と考えます。
2011-03-15[n年前へ]
■2011年03月8日から3月15日までの地震震源&震度分布動画
2011年03月8日から一週間、3月15日23時までの「日本での地震震源&震度分布動画」です。動画でいうと最後のフレームが、3月15日22時過ぎに富士宮近辺で起きた地震になります。日本列島周りのプレートは、一体どんな風に動き、そして歪みを受けているんでしょうか。
2011-04-14[n年前へ]
■「Ruby+Thinkpad」で作る地震震度計
地震が続く今日この頃、めまいと地震を区別できない…というシチュエーションのために、昨日は「お手軽な地震検知器」を作ってみました。今日は、その続きとして、Ruby(とIBM産ノートPCを使って)で地震検知器を作ってみることにしました。
地震の震度は、大雑把に言えば、加速度と揺れ動く時間とその周波数で決まります。以前、ノートPCで作る地震警報システムを作ろうとしたことがあります。加速度センサを備えた機器は多いわけですから、身の回りにある機器で地震の震度を算出する…なんていうことは、実に簡単に「できる」ものです。
今日は、以前作った「Ruby版 Thinkpad 加速度センサ類取得クラス」を使って、「地震の震度スクリプト」を書いてみました。ノートPC(Thinkpad)の内蔵センサからの加速度を得て、その上で「揺れ動く時間」と「その周波数」というパラメータを適当にネグった上で(=無視した上で)適当に加速度から揺れ動く(地震の)震度を近似計算するスクリプトを書いてみたのです。このスクリプトは、語句単純に「ruby hoge.rb "スクリプトを走らせる秒(s)数"」という風に走らせることで、100ms毎に検知した加速度から震度を計算し続けて、もしも地面が揺れていると判断された時には、地震の震度を一秒に一回づつ、たとえば、
3 5 (=震度5弱) 5.5 (=震度5強) …といったように表示する、というものになります。そのRubyコードは下のようになります。「Ruby版 Thinkpad 加速度センサ類取得クラス」を、このスクリプトと同じディレクトリにでも置いた上で、このスクリプトを実行させれば、上に示した例のように動きます。
require 'accelerometer' include Math waitSec=0.01 # = each 100ms averageNum=(1.0/waitSec).to_i def send si puts si end def process(gxy) si=nil si=1 if gxy> 0.5 si=2 if gxy> 2 si=3 if gxy> 5 si=4 if gxy> 20 si=5 if gxy> 40 si=5.5 if gxy> 100 si=6 if gxy> 140 si=6.5 if gxy> 200 si=7 if gxy> 400 send(si) if si&&si>3 end class Array def average val=0.0 self.length.times{|i| val+=self[i] } return val/self.length.to_f end end period=ARGV[0].to_i*(1.0/waitSec).to_i acc=Accelerometer.new gdatum=Array.new(averageNum) {|i| 0.0 } gi=0 period.times do |i| gx,gy=acc.getAccelerometerData.map{|v| 980.0*tan((v.to_f)/50.0*22.5/360.0*6.28)} gdatum[gi]=sqrt(gx*gx+gy*gy) gi=gi+1 if gi==averageNum process gdatum.average gi=0 end sleep waitSec end
Thinkpad(やそれと似た同類の危機)に搭載されている加速度センサでは、震度1とか2程度の震度を正確に検知することはできません(その理由は後ほど書きます)。…その一方で、「日本全国の机の上に置かれていて(スマートフォンは、残念ながら、机の上には置かれていないのです)、さらに、その機器を使って”震度”を算出することができる値を刻々計ることができる計測器」というものが、ノートPCほどちまたに溢れているわけでもありません。
今日は、そんな貴重な道具を使ったスクリプトを書いてみました。こんなスクリプト、手元のPC向けのクライアント用スクリプトだけでなく ネットワークに接続しているたくさんの人たちが動かしたら一体どうなるか、ということについては、また明日にでも書いてみたいと思います。