これを1秒ごとにloopでぶん回せば
SignalnowExpressっぽい書式で手に入ります。
データ受信: | 01 | 37 | 00 | 110523142212 | 110523142054 | ND20110523142114 | 9 | 06 | N382 | E1423 | 010 | 52 | 665 | 14 | |
発 信 官 署 | 電 文 種 別 | 訓 練 等 の ~ | 電文発表時刻 | 地震発生時刻 | 地震ID | 発 表 状 況 | x報 | 緯度 | 経度 | 震源の深さ | M | フラグ*3 | /の有無 エリアコード |
sed, wget, jq, bcが必要です。
#!/bin/bash
EEWURL="http://www.kmoni.bosai.go.jp/new/webservice/hypo/eew/"`date "+%Y%m%d%H%M%S"`".json"
EQGET=`wget $EEWURL -q -O -`
PRMT=`echo $EQGET | jq -r .result.message`
if [ "$PRMT" = "" ]
then
EQR1=(`echo $EQGET | jq -r '.result.status, .report_time, .longitude, .is_cancel, .depth, .is_training, .latitude, .origin_time, .magunitude, .report_num, .report_id, .alertflg'`)
if [ "${EQR1[0]}" = "success" ]
then
EQR2=()
EQR2+=( 01 )
if [ "${EQR1[4]}" = "true" ]
then
EQR2+=( 3910 )
EQR2+=( `echo ${EQR1[1]}${EQR1[2]} | sed -e 's/\///g' -e 's/://g' -e 's/^..//'` )
EQR2+=( `echo ${EQR1[8]} | sed -e 's/^..//'` )
EQR2+=( `echo "ND"${EQR1[11]}"0"` )
EQR2+=( `printf %02d ${EQR1[10]}` )
EQR2+=( "///////////////////" )
else
EQR2+=( 3X00 )
EQR2+=( `echo ${EQR1[1]}${EQR1[2]} | sed -e 's/\///g' -e 's/://g' -e 's/^..//'` )
EQR2+=( `echo ${EQR1[8]} | sed -e 's/^..//'` )
EQR2+=( `echo "ND"${EQR1[11]}"0"` )
EQR2+=( `printf %02d ${EQR1[10]}` )
LATI=`echo "scale=0; ${EQR1[7]} * 10" | bc | sed s/\.[0-9,]*$//g`
EQR2+=( `echo "N"$LATI` )
LNGI=`echo "scale=0; ${EQR1[3]} * 10" | bc | sed s/\.[0-9,]*$//g`
EQR2+=( `echo "E"$LNGI` )
KM=`echo ${EQR1[5]} |sed -e "s/km//"`
EQR2+=( `printf %03d $KM` )
MAG=`echo "scale=0; ${EQR1[9]} * 10" | bc | sed s/\.[0-9,]*$//g`
EQR2+=( `printf %02d $MAG` )
if [ "${EQR1[12]}" = "警報" ]
then
EQR2+=( XXXXE )
else
EQR2+=( XXXXX )
fi
fi
echo ${EQR2[@]} | sed -e 's/ //g'
fi
fi
~
SignalNowのログをNAS上のファイルに書き出させていろいろしてたので
SignalNowの書式にしてます。
震度演算と猶予時間の計算は完成したらはっつけます…
(S波の速度を求める計算部分がまだ未完成なのでS=4.5km/sでざっくりと仮実装してます)