win/convert.h マニュアル

(The documentation of win/convert.h)

Last Update: 2022/3/17


win/convert.hでは WINデータを他の形式に変換する関数が定義されている。 このヘッダファイル内で定義されている関数を以下に示す。 各関数の詳細は関数名をクリックしてリンク先を参照のこと。
Functions to convert WIN data to other formats are defined in win/convert.h. Functions defined in this header file are listed below. For details of individual functions, click the links.

関数名
Function name
機能・用途
Purpose
sortWinData
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
WINデータのチャンネルブロックを チャンネルテーブルにおける登場順にソートする。
Sort channel blocks of a WIN data to the order of channel table.
orderWinData
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
WINの秒ブロックを時刻順に並べ替え、 欠損がある場合はダミーデータを挿入して連続データにする。
Sort second blocks of a WIN data to the order of time, and insert dammy data for defects to make the entire data continuous.
win_eraseDifferentSamplingRateData
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
WINデータから 先頭時刻とサンプリングレートが異なるチャンネルブロックを削除する。
Remove channel blocks that have a sampling rate different from that of the beginning time from a WIN data.
wintosac
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
WINデータをSeismic Analysis Code (SAC)形式に変換する。
Convert WIN data to Seismic Analysis Code (SAC) format.
wintosac_set_header
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
SACヘッダの値を設定する。関数wintosacからの内部呼び出し用である。
Set SAC headers; a function for internal call from function wintosac.

◆補足 (Additional remarks)

このヘッダファイルはWINデータを Seismic Analysis Code (SAC)形式に変換することを 主に念頭に置いている。 WINファイルから読み込んだWINデータに対して関数 sortWinData → orderWinData → win_eraseDifferentSamplingRateData → wintosac と順に用いることでSAC形式に変換できる ( 関数wintosacのみで変換できるわけではない点に留意)。
The main purpose of this header file is to convert WIN data to Seismic Analysis Code (SAC) format. This conversion is realized by sequentially applying functions sortWinData, orderWinData, win_eraseDifferentSamplingRateData, and wintosac, in this order, to WIN data read from a WIN file. Note that the conversion is not realized by function wintosac alone.

以下、各関数の役目を例を用いて説明する。 WINデータは秒ごとに全く独立なデータの単なる集合体であるので、 秒の順番やそれぞれの秒ブロックに登場するチャンネルやサンプリングレートなどが てんでんばらばらかもしれないことが前提となる。 例えばWINファイルから読み込んだデータは以下のようなデータかもしれない。
Below, roles of individual functions are explained. First of all, keep in mind that WIN data is a simple assembly of mutually independent second blocks, meaning that the order of seconds, channels in each second block, and sampling rates of the channel blocks may not be consistent. For example, data of a WIN file may have a structure below.

秒ブロック
Second block
チャンネルブロック
Channel blocks
時刻
Time
チャンネルID
Channel ID
サンプリングレート
Sampling rate
2022/03/17 10:00:00 F002 100 Hz
F005 100 Hz
F001 20 Hz
2022/03/17 10:00:01 F004 50Hz
2022/03/17 10:00:06 F001 10 Hz
F005 60 Hz
F004 40 Hz
F002 70 Hz
2022/03/17 10:00:08 F005 100 Hz
F003 80 Hz
2022/03/17 10:00:04 F001 100 Hz
F003 25 Hz
F004 70 Hz
2022/03/17 10:00:07 F004 125 Hz
F002 100 Hz
F001 45 Hz
F003 30 Hz
2022/03/17 10:00:02 F006 50 Hz
F001 25 Hz
F004 70 Hz
2022/03/17 10:00:05 F001 20 Hz
F003 30 Hz
2022/03/17 10:00:09 F003 25 Hz

関数sortWinData では以下の処理を行う。
Function sortWinData performs the processings below.

例えば上のデータの例において、 チャンネルテーブルにチャンネルF001, F002, F003, F008が登場する場合、 関数sortWinDataを用いるとデータが下表のように整形される。
For example, the data shown above is arranged as below by function sortWinData if channels F001, F002, F003, and F008 are present in the channel table.

秒ブロック
Second block
チャンネルブロック
Channel blocks
時刻
Time
チャンネルID
Channel ID
データの種類とサンプリングレート
Data type and sampling rate
2022/03/17 10:00:00 F001 20 Hz
F002 100 Hz
F003 ダミーデータ
Dammy data
F008 ダミーデータ
Dammy data
2022/03/17 10:00:01 F001 ダミーデータ
Dammy data
F002 ダミーデータ
Dammy data
F003 ダミーデータ
Dammy data
F008 ダミーデータ
Dammy data
2022/03/17 10:00:06 F001 10 Hz
F002 70 Hz
F003 ダミーデータ
Dammy data
F008 ダミーデータ
Dammy data
2022/03/17 10:00:08 F001 ダミーデータ
Dammy data
F002 ダミーデータ
Dammy data
F003 80 Hz
F008 ダミーデータ
Dammy data
2022/03/17 10:00:04 F001 100 Hz
F002 ダミーデータ
Dammy data
F003 25 Hz
F008 ダミーデータ
Dammy data
2022/03/17 10:00:07 F001 45 Hz
F002 100 Hz
F003 30 Hz
F008 ダミーデータ
Dammy data
2022/03/17 10:00:02 F001 25 Hz
F002 ダミーデータ
Dammy data
F003 ダミーデータ
Dammy data
F008 ダミーデータ
Dammy data
2022/03/17 10:00:05 F001 20 Hz
F002 ダミーデータ
Dammy data
F003 30 Hz
F008 ダミーデータ
Dammy data
2022/03/17 10:00:09 F001 ダミーデータ
Dammy data
F002 ダミーデータ
Dammy data
F003 25 Hz
F008 ダミーデータ
Dammy data

これは当初よりもよく整理されたデータになっている。 下表のように書き直すと分かりやすい。
This dataset has a better organized structure than the original one. It is more comprehensive to rewrite the data structure as below.

時刻
Time
F001 F002 F003 F008
2022/03/17 10:00:00 20 Hz 100 Hz ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:01 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:06 10Hz 70Hz ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:08 ダミー
Dammy
ダミー
Dammy
80Hz ダミー
Dammy
2022/03/17 10:00:04 100Hz ダミー
Dammy
25Hz ダミー
Dammy
2022/03/17 10:00:07 45Hz 100Hz 30Hz ダミー
Dammy
2022/03/17 10:00:02 25Hz ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:05 20Hz ダミー
Dammy
30Hz ダミー
Dammy
2022/03/17 10:00:09 ダミー
Dammy
ダミー
Dammy
25Hz ダミー
Dammy

関数orderWinData ではこのデータを時刻順にソートし、 欠損がある場合はダミーデータを挿入して連続データにする。 結果は以下のようになる。 10:00:03はもともと秒ブロックが存在しなかった時刻である。
Function orderWinData sorts this data to the time order, and inserts dammy data for defects to make the entire data continuous. The result is shown below, where 10:00:03 is the time at which the second block was originally absent.

時刻
Time
F001 F002 F003 F008
2022/03/17 10:00:00 20 Hz 100 Hz ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:01 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:02 25Hz ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:03 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:04 100Hz ダミー
Dammy
25Hz ダミー
Dammy
2022/03/17 10:00:05 20Hz ダミー
Dammy
30Hz ダミー
Dammy
2022/03/17 10:00:06 10Hz 70Hz ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:07 45Hz 100Hz 30Hz ダミー
Dammy
2022/03/17 10:00:08 ダミー
Dammy
ダミー
Dammy
80Hz ダミー
Dammy
2022/03/17 10:00:09 ダミー
Dammy
ダミー
Dammy
25Hz ダミー
Dammy

関数win_eraseDifferentSamplingRateData では上記データにおいて チャンネルごとにサンプリングレートが最初の時刻と同じかをチェックし、 異なる場合はそのチャンネルブロックを削除する。 結果は以下のようになる。 太字は各チャンネルにおける最初のサンプリングレート、 水色がダミーデータで置き換わったチャンネルブロックを表す。
Function win_eraseDifferentSamplingRateData checks whether the sampling rate of each channel block is same as that in the first second; if different, the channel block is deleted. The result is as below, where bold represents the first sampling rate of each channel and blue does the channel blocks replaced by dammy data.

時刻
Time
F001 F002 F003 F008
2022/03/17 10:00:00 20 Hz 100 Hz ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:01 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:02 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:03 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:04 ダミー
Dammy
ダミー
Dammy
25Hz ダミー
Dammy
2022/03/17 10:00:05 20Hz ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:06 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:07 ダミー
Dammy
100Hz ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:08 ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
ダミー
Dammy
2022/03/17 10:00:09 ダミー
Dammy
ダミー
Dammy
25Hz ダミー
Dammy

以上の下準備の後に 関数wintosac によってSAC形式に変換されるという流れである。
After these preparations, the WIN data is converted to SAC format by function wintosac.