強震記録(.ac)ファイル

書式

強震記録ファイルは拡張子".ac"を持つASCIIテキストファイルで、行はCRLFで区切られています。ひとつのファイルに1台の強震計で得られた複数のチャネルの記録が収録されています。

最初の行はヘッダーで、以下の情報を含んでいます。

  • 1~10桁: 記録年月日(yyyy/mm/dd)
  • 12~19桁: 記録開始時刻(hh/nn/ss)。日本の標準時です。
  • 21~23桁: ファイルに含まれるチャネル数
  • 25~27桁: サンプル周波数(Hz)
  • 29~33桁: 各チャネルのサンプル数。全てのチャネルが同じサンプル数となっています。
  • 35桁~: 観測地点情報。通常は"CODE: Description"の構成です。 CODEは観測地点に付けられたユニークな略称(英数字)、Descriptionは観測地点の名称です。記号と名称の文字数は決まっていません。

2行目は最初のチャネルのヘッダーとなります。

  • 1~10桁: チャネルラベルが左寄せで書かれます。チャネルラベルは通常、ハイフン"-"で区切られた方位とセンサーラベルで構成されます。方位は3桁の数字か"UP"で表され、数字の場合は水平成分を意味し、記録の方向成分を北から時計回りに測った値(度)で示します。"UP"は上下成分です。センサーラベルはセンサーの設置場所を示します。例えば063-GLは地表のN063°E成分となります。
  • 11~20桁: そのチャネルの最大値です
  • 21~30桁: 最大値が発生するステップ数です
  • 31~40桁: 記録処理の段階で除去されたオフセット値です。
  • 41~50桁: 記録処理の段階で用いられた校正係数です。

オフセット値と校正係数は単にメモとしてファイルに残っており、収録されている加速度データは既に物理値に変換されています。

3行目以降には加速度データが書かれています。1ステップの加速度値は10桁を占め、1行に8個のデータが書かれています。Fortranで言えば(8F10.3)の書式となります。

チャネルヘッダーとデータブロックは、収録チャネルの数だけ繰り返されます。以下に例を示します。

1993/01/15 20:06:08   3 100 15700 KSR: Kushiro Local Meteorological Observatory, JMA
063-GL      -711.403      3675     0.013   3.00e-2
     0.077    -0.043     0.017     0.017     0.017    -0.043    -0.013     0.017
    -0.013     0.017    -0.013    -0.013     0.047    -0.013     0.017    -0.043
    -0.043    -0.073     0.017    -0.013     0.047    -0.043    -0.013    -0.013
    -0.043    -0.013     0.017    -0.013     0.017    -0.043     0.017     0.047
          .
          . (snipped)
          .
     1.007     0.707     0.797     1.097     0.677    -0.133    -0.403    -0.313
    -0.733    -1.243    -0.943    -0.283
153-GL      -637.240      3617     0.010   3.00e-2
     0.020     0.020    -0.010     0.020     0.020    -0.040    -0.040     0.020
    -0.010    -0.010     0.020     0.020    -0.010    -0.010    -0.010    -0.010
    -0.040    -0.010     0.020    -0.010    -0.040    -0.010    -0.010    -0.040
    -0.010    -0.010    -0.010    -0.010    -0.010     0.020    -0.010    -0.010
          .
          . (snipped)
          .
    -1.210    -1.690    -2.230    -2.260    -1.900    -1.480    -1.090    -0.610
    -0.400    -0.490    -0.370     0.110
UP-GL        363.391      3298    -0.030   3.00e-2
     0.060     0.000     0.000    -0.030     0.030     0.000    -0.030     0.060
     0.030    -0.030    -0.060     0.060     0.060     0.030     0.000    -0.030
    -0.060     0.000     0.030    -0.030    -0.030     0.000     0.030     0.060
     0.030    -0.030    -0.060    -0.060     0.030     0.030     0.000    -0.030
          .
          . (snipped)
          .
    -0.600    -0.780    -0.420     0.450     0.960     0.600    -0.210    -0.840
    -0.990    -0.810    -0.810    -0.600

サンプルプログラム

Fortran 90 で書かれたサンプルプログラムを以下に示します。

real(4), allocatable:: peak(:), acc(:,:)
character(10), allocatable:: comp(:)
integer(4):: nfrq, nstp, nch, ich, istp, i
integer(4):: iostat
real(4):: dt, offset, calib
character(10):: date, time, code
character(128):: site, fname
!
    fname='sample.ac'
    open (88, file=fname, iostat=iostat)
! read file header.
    read (88, '(a10,1x,a8,2i4,i6,a128)') date, time, nch, nfrq, nstp, site
! allocate arrays.
    allocate (comp(nch), peak(nch), acc(nstp,nch))
! read header and acceleration of each channel.
    do ich=1, nch
        read (88, '(a10,f10.3)') comp(ich), peak(ich)
        read (88, '(8f10.3)') (acc(i,ich), i=1,nstp)
    end do
! close a file.
    close (88)
! get some parameters
    dt=1/real(nfrq)
    i=index(site, ':')
    if (i.gt.0) then
        code=site(1:i-1)
        site=site(i+1:)
    else
        code=''
    endif
! output parameters.
    print '(''Acceleration filename: '',a)', trim(fname)
    print '(''             Sitecode: '',a)', trim(code)
    print '(''             Sitename: '',a)', trim(site)
    print '(''Trigger time and date:'',a8,1x,a10)', time, date
    print '(''   Number of channels:'',i6)', nch
    print '(''   Sampling frequency:'',i6,''Hz'')', nfrq
    print '(''       (Time interval:'',f6.3,''sec)'')', dt
    print '(''      Number of steps:'',i6)', nstp
    do ich=1, nch
        print '(''ch:'',i2,'' ('',a,'') peak:'',f8.2)', &
            ich, trim(comp(ich)), peak(ich)
    end do
! release arrays.
    deallocate (peak, comp, acc)
    stop
end

備考

  • 特記なき限り収録されている記録は加速度です。速度記録の場合はセンサーラベルに[V]のサフィックスが付きます。
  • 加速度記録の単位はcm/s2です。速度の場合はcm/sとなります。
  • 加速度値への変換と最初の5秒間の記録から算出したオフセットの除去以外の処理は行っていません。