win/structure.h マニュアル

(The documentation of win/structure.h)

Last Update: 2023/8/28


win/structure.hでは winヘッダファイルパッケージで主に用いる構造体が定義されている。 各構造体の定義を以下に示す。
Structures mainly used in win header file package are defined in win/structure.h. Definitions of individual structures are shown below.

◆目次(Table of contents)



◆struct win_channelCodeList型構造体 (A struct win_channelCodeList-type structure)

チャンネルコードのリストを表現するための構造体である。 以下のメンバから成る。
A structure to represent a list of channel codes. This structure is composed of the following members.


Type
メンバ名
Name of member
メンバの意味
Meaning of member
int number チャンネル数。
The number of channels.
unsigned short ∗ code チャンネルコードを並べた配列。
An array composed of channel codes.

チャンネルコードにunsigned short型変数を用いている理由は以下の通り。 チャンネルコードは4桁の16進数であるので 4桁の2進数を4つ(計16ビット)で表現できる。 winヘッダファイルパッケージでは1バイト=8ビットと仮定されているので 16ビットは2バイトである。 C言語規格(ISO/IEC 9899:TC2)では USHRT_MAX\(\geq 2^{16}-1\)と定められているので、 どのようなコンピュータであっても必ず 2バイトのデータはunsigned short型変数で表現できることが保証される。 このような理由からunsigned short型変数を用いている。
Here unsigned short-type variables are used for channel codes because of the following reason. A channel code is given by 4 digits of hexadecimal numbers, which can thus be expressed by 4 sets of 4 digit binary numbers (16 bits in total). Throughout win header file package, 1 byte is assumed to be 8 bits; hence the length of 16 bits is equal to 2 bytes. According to the C language standard (ISO/IEC 9899:TC2), USHRT_MAX is greater than or equal to \(2^{16}-1\). Therefore the 2-byte data can be expressed with an unsigned short-type variable in any computers. For this reason, the unsigned short-type variable is used.


◆struct win_channelTableContents型構造体 (A struct win_channelTableContents-type structure)

チャンネルテーブルファイルにおける 1つのチャンネル(1つの観測点の1つの成分)の情報を 表現するための構造体である。 以下のメンバから成る。
A structure to represent the information on a channel (i.e., a component of a station) in a channel table file.
This structure is composed of the following members.


Type
メンバ名
Name of member
メンバの意味
Meaning of member
unsigned short channelCode チャンネルコード(チャンネルテーブルファイルの第1列)。 unsigned short型変数を用いることの妥当性については struct win_channelCodeList型構造体の説明参照。
A channel code, read from the 1st column of a channel table file. For the reason for using an unsigned short-type variable, see the description for struct win_channelCodeList-type structure.
int recordingFlag 回収フラグ(チャンネルテーブルファイルの第2列)。
A recording flag, read from the 2nd column of a channel table file.
double delayTime 回線遅延時間(チャンネルテーブルファイルの第3列)。
The delay time of a network, read from the 3rd column of a channel table file.
char stationName[strsize] 観測点コード(チャンネルテーブルファイルの第4列)。
A station code, read from the 4th column of a channel table file.
char component[strsize] 成分コード(チャンネルテーブルファイルの第5列)。
A component code, read from the 5th column of a channel table file.
int monitor_amplitude モニター波形の振幅縮率を示す指数(チャンネルテーブルファイルの第6列)。
An index to determine the stretching ratio of the amplitude of a monitor waveform, read from the 6th column of a channel table file.
int AD_convert_bit A/D変換の量子化ビット数(チャンネルテーブルファイルの第7列)。
The number of digitizing bits for an A/D conversion, read from the 7th column of a channel table file.
double sensitivity センサーの感度(チャンネルテーブルファイルの第8列)。
The sensitivity of a sensor, read from the 8th column of a channel table file.
char unit[strsize] センサーの入力振幅単位(チャンネルテーブルファイルの第9列)。
The unit of the input amplitude of a sensor, read from the 9th column of a channel table file.
double naturalPeriod 地震計の固有周期(チャンネルテーブルファイルの第10列)。
The natural period of a seismometer, read from the 10th column of a channel table file.
double damping 地震計のダンピング定数(チャンネルテーブルファイルの第11列)。
The damping constant of a seismometer, read from the 11th column of a channel table file.
double amplificationFactor センサー出力からA/D変換までの電圧増幅率 (チャンネルテーブルファイルの第12列)。
The amplification factor of a voltage from a sensor output to before an A/D conversion, read from the 12th column of a channel table file.
double digitizationStep A/D変換の1量子化ステップ幅(チャンネルテーブルファイルの第13列)。
The magnitude of the digitization step of an A/D conversion, read from the 13th column of a channel table file.
double latitude 観測点の緯度(チャンネルテーブルファイルの第14列)。
The latitude of a station, read from the 14th column of a channel table file.
double longitude 観測点の経度(チャンネルテーブルファイルの第15列)。
The longitude of a station, read from the 15th column of a channel table file.
double altitude 観測点の標高(チャンネルテーブルファイルの第16列)。
The altitude of a station, read from the 16th column of a channel table file.
double P_correction P波到着時刻の観測点補正値(チャンネルテーブルファイルの第17列)。
The station correction of P-wave arrivals, read from the 17th column of a channel table file.
double S_correction S波到着時刻の観測点補正値(チャンネルテーブルファイルの第18列)。
The station correction of S-wave arrivals, read from the 18th column of a channel table file.
struct humanTime startDateTime 有効な日時範囲の先頭 (チャンネルテーブルファイルのymaeda_opentools拡張機能における 「--start=」オプションの値)。
The start date and time of the effective period, specified by “--start=” option of an extension of ymaeda_opentools for the channel table file format.
struct humanTime endDateTime 有効な日時範囲の末尾 (チャンネルテーブルファイルのymaeda_opentools拡張機能における 「--end=」オプションの値)。
The end date and time of the effective period, specified by “--end=” option of an extension of ymaeda_opentools for the channel table file format.
unsigned int latitude_specified : 1 観測点の緯度(チャンネルテーブルファイルの第14列) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the latitude of a station, in the 14th column of a channel table file, was specified or not; 1 if specified, and 0 if not.
unsigned int longitude_specified : 1 観測点の経度(チャンネルテーブルファイルの第15列) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the longitude of a station, in the 15th column of a channel table file, was specified or not; 1 if specified, and 0 if not.
unsigned int altitude_specified : 1 観測点の標高(チャンネルテーブルファイルの第16列) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the altitude of a station, in the 16th column of a channel table file, was specified or not; 1 if specified, and 0 if not.
unsigned int P_correction_specified : 1 P波の観測点補正(チャンネルテーブルファイルの第17列) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the station correction of a P-wave, in the 17th column of a channel table file, was specified or not; 1 if specified, and 0 if not.
unsigned int S_correction_specified : 1 S波の観測点補正(チャンネルテーブルファイルの第18列) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the station correction of an S-wave, in the 18th column of a channel table file, was specified or not; 1 if specified, and 0 if not.
unsigned int startDateTime_specified : 1 有効な日時範囲の先頭(「--start=」オプション) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the start date and time of the effective period (“--start=” option) was specified or not; 1 if specified, and 0 if not.
unsigned int endDateTime_specified : 1 有効な日時範囲の末尾(「--end=」オプション) が指定されたか否かを示すフラグ。 指定された場合は1、未指定の場合は0。
A flag indicating whether the end date and time of the effective period (“--end=” option) was specified or not; 1 if specified, and 0 if not.
char fileName[strsize] 観測点名と成分名をピリオド(.)で繋いだ文字列(「観測点名.成分名」)。 WINファイルをSACファイルに変換したときの出力ファイル名に用いられる。
A string composed of station and component names connected with a period (.), i.e., “station name.component name”, which is used for an output file name when a WIN file is converted to SAC files.
double scale 整数で書かれたWINデータの振幅値を物理量に換算するための倍率。
  • \(A\): メンバdigitizationStepの値
  • \(B\): メンバamplificationFactorの値
  • \(C\): メンバsensitivityの値
としたとき\(A/10^{B/20}/C\)である。
A factor used to convert the amplitude of a WIN data, given as an integer, to that in a physical unit. This value is given as \(A/10^{B/20}/C\), where \(A\), \(B\), and \(C\) are the values of members digitizationStep, amplificationFactor, and sensitivity, respectively.


◆struct win_channelTable型構造体 (A struct win_channelTable-type structure)

チャンネルテーブルファイルで与えられる情報一式を表現するための構造体である。 以下のメンバから成る。
A structure to represent the entire information given by a channel table file. This structure is composed of the following members.


Type
メンバ名
Name of member
メンバの意味
Meaning of member
int number チャンネル数。
The number of channels.
struct win_channelTableContents ∗ contents 読み込んだ各チャンネルの情報を並べた配列。
An array composed of the information on each channel read from a channel table file.


◆struct win_channelBlock型構造体 (A struct win_channelBlock-type structure)

WINデータにおける1つのチャンネルブロックを表現するための構造体である。 以下のメンバから成る。
A structure to represent a channel block of WIN data. This structure is composed of the following members.


Type
メンバ名
Name of member
メンバの意味
Meaning of member
unsigned short channelCode チャンネルブロック内の先頭の16ビット(2バイト)で、 チャンネルコードを表す。 unsigned short型変数を用いることの妥当性については struct win_channelCodeList型構造体の説明参照。
The first 16 bits (2 bytes) of a channel block, which represent a channel code. For the reason for using an unsigned short-type variable, see the description for struct win_channelCodeList-type structure.
int sampleSize チャンネルブロック内の17-20ビット目で、 1サンプルあたりのデータサイズを表す。 0-4の間の整数値を取る。 1-4の場合は1サンプルあたりのバイト数を表し、 0の場合は1サンプルあたり0.5バイトである。
The 17-20th bits of a channel block, which represent the size of each data sample. This is an integer between 0 and 4. The values from 1 to 4 represent the number of bytes for each sample, whereas the value of 0 means that each sample is represented by 0.5 bytes.
int samplingRate チャンネルブロック内の21-32ビット目で、 サンプリングレート(Hz)を表す。 それはまたその秒のそのチャンネルの総サンプル数でもある。
The 21-32th bits of a channel block, which represent a sampling rate (Hz). This is equal to the total number of samples for that channel during that 1 s.
int size チャンネルブロックのサイズ(バイト数)。 メンバsampleSizeとsamplingRateの値から計算される。
The size (the number of bytes) of a channel block, calculated from the values of members sampleSize and samplingRate.
long initialValue チャンネルブロック内の33-64ビット目(5-8バイト目)で、 先頭のデータ値を表す。
The 33-64th bits (5-8th bytes) of a channel block, which represent the first data value.
long ∗ data_diff チャンネルブロック内の65ビット目以降(9バイト目以降)を メンバsampleSizeで指定されたバイト数ごとに区切って並べた配列。 これは隣接するサンプル間のデータ値の差分を時刻順に並べた配列である。
An array that represent the data beginning at the 65th bit (9th byte) divided to sections of the size specified by member sampleSize. This is an array composed of the differences in data values between adjacent samples, sorted in the order of time.

メンバinitialValue, data_diffにlong型変数を用いている理由は以下の通り。 メンバinitialValueに読み込むのは5-8バイト目の4バイト分の長さのデータである。 メンバdata_diffの各配列要素には メンバsample_sizeで指定されたバイト数のデータを読み込むが、 その最大サイズが4バイトである。 したがってどちらも最大で4バイト分のデータを読み込めれば良い。 C言語規格(ISO/IEC 9899:TC2)において LONG_MIN\(\leq -(2^{31}-1)\), LONG_MAX\(\geq 2^{31}-1\) と定められているので、 どのようなコンピュータであっても必ず 4バイトのデータはlong型変数で表現できることが保証される。 このような理由からlong型変数を用いている。
Here long-type variables are used for members initialValue and data_diff because of the following reason. The value of member initialValue is read from 5-8th bytes of the data which thus have a length of 4 bytes. For each array component of member data_diff, data of length specified by member sample_size are assigned, the maximum size of which is 4 bytes. Therefore it is enough to assume at maximum 4-byte data for these members. According to the C language standard (ISO/IEC 9899:TC2), LONG_MIN is less than or equal to \(-(2^{31}-1)\) and LONG_MAX is greater than or equal to \(2^{31}-1\). Therefore the 4-byte data can be expressed with a long-type variable in any computers. For this reason, the long-type variable is used.


◆struct win_secondBlock型構造体 (A struct win_secondBlock-type structure)

WINファイルの1秒分のデータを表現するための構造体である。 win_secondBlockという名前であるが秒ブロックだけでなく その前の4バイト分(データサイズ)も含めて表現できる。 以下のメンバから成る。
A structure to represent data of a 1-s-long WIN file. Regardless of the name win_secondBlock, not only a second block but the 4 bytes before it (which represents the data size) can be represented. This structure is composed of the following members.


Type
メンバ名
Name of member
メンバの意味
Meaning of member
unsigned long size 1秒分のデータブロックの最初の4バイトで、 この1秒間のデータブロックのサイズ(バイト数)を表す。
The first 4 bytes of a data block of 1-s long, which represent the size (in bytes) of this 1-s data block.
struct humanTime time 秒ブロックの最初の6バイト(1秒分のデータブロック全体の5-10バイト目)で 日付・時刻を表す。
The first 6 bytes of a second block (i.e., 5-10th bytes of the entire data block of 1-s long), which represent the date and time.
int channelNumber 秒ブロックに含まれるチャンネルブロックの個数。 WINデータに書かれているわけではなく、 データの読み込み後にカウントして求める。
The number of channel blocks in a second block. This value is not written in a WIN data; the value is determined by counting the channel blocks after reading the data.
struct win_channelBlock ∗ channelBlock チャンネルブロックを並べた配列。
An array composed of the channel blocks.

メンバsizeにunsigned long型を用いている理由は以下の通り。 メンバsizeに読み込むのは4バイト分の長さのデータである。 C言語規格(ISO/IEC 9899:TC2)において ULONG_MAX\(\geq 2^{32}-1\) と定められているので、どのようなコンピュータであっても必ず 4バイトのデータはunsigned long型変数で表現できることが保証される。 このような理由からunsigned long型変数を用いている。
Here a unsigned long-type variable is used for the member size because of the following reason. The value of this member is read from data of 4 byte long. According to the C language standard (ISO/IEC 9899:TC2), ULONG_MAX is greater than or equal to \(\geq 2^{32}-1\). Therefore the 4-byte data can be expressed with a unsigned long-type variable in any computers. For this reason, the unsigned long-type variable is used.


◆struct win_data型構造体 (A struct win_data-type structure)

WINファイルの中身を丸ごと表現するための構造体である。 以下のメンバから成る。
A structure to represent the entire data of a WIN file. This structure is composed of the following members.


Type
メンバ名
Name of member
メンバの意味
Meaning of member
int NsecondBlocks 秒ブロックの個数。
The number of second blocks.
struct win_secondBlock ∗ secondBlocks 秒ブロックを並べた配列。
An array composed of the second blocks.