追記 2015/06/10
SACとはIRISが配布してる地震波の解析をするためのツール。
http://www.iris.edu/software/sac/manual.html
簡単にプロットしたいときとかフィルターとか、地震波に限らずいろいろ便利だから、アスキーファイルとの変換について。
SAC ファイルのフォーマットは上のページで公開されてるから、それにしたがって単純にファイルの読み書きをするファイルを java で作ってみた。
その jar ファイル。
SacTool.jar
参考までに使い方は
.bashrc とかに
SACTOOL={ダウンロードしたSacTool.jarのフルパス}
alias sac2ascii='java -cp $SACTOOL SacToAscii'
alias ascii2sac='java -cp $SACTOOL AsciiToSac'
と記述する。
source .bashrc
と設定を有効にしたのちに、SAC からアスキーへは
sac2ascii {SAC ファイル名} {変換後のアスキーファイル名}
アスキーから SACへは
ascii2sac {アスキーファイル名} {変換後の SAC ファイル名}
とする。
ちなみに、SAC からアスキーに変換するとき3つ目の引数に整数値を指定すると、その数に1つの割合でしか値を変換しないようにする。
これは、GMT とかでプロットするためだけに SAC からアスキーに変換したいけど、重くなるから間引いてプロットしたい場合に役立つ。
ただし、デシメーションフィルタはかけずにそのまま間引いてるので、処理する際には注意が必要。。
sac2ascii {SAC ファイル名} {変換後のアスキーファイル名} {間引きの間隔}
例えば間引きの間隔を 4 にすると、データサイズは4分の1になる。
追記 2015/06/10 ----
GMT の psxy コマンドはバイナリファイルが読めることを知ったので、
sac からpsxy用バイナリに変換するプログラムを追加した。
単精度で書き出しているので、psxy を使う際に "-biS" オプションを付ける。
現在、使用可能なクラスは
・アスキー → sac
AsciiToSac <asciiFileName> <sacFileName>
・KiK-netアスキー → sac
KiknetToSac <KiknetFileName> <SacFileName>
・sac → アスキー
SacToAscii <sacFileName> <asciiFileName> (sampleStep)
・sac → アスキー(0位相バタワース型バンドパスフィルタをかける)
SacToAsciiBP <sacFileName> <f1> <f2> <order> <asciiFileName> (sampleStep)
・sac → アスキー(バンドパスフィルタ適用後、2乗エンベロープにする)
SacToAsciiEnv <sacFileName> <f1> <f2> <order> <asciiFileName> (sampleStep)
・sac → バイナリ(単精度)
SacToBin <sacFileName> <binaryFileName> (sampleStep)
・sac → バイナリ(0位相バタワース型バンドパスフィルタをかける)
SacToBinBP <sacFileName> <f1> <f2> <order> <binaryFileName> (sampleStep)
・sac → バイナリ(バンドパスフィルタ適用後、2乗エンベロープにする)
SacToBinEnv <sacFileName> <f1> <f2> <order> <binaryFileName> (sampleStep)
(sampleStep) はオプション(省略は 1 と等価)。
----