Option Explicit On Option Strict On Public Class Form1 Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click 'ListBoxのアイテムをすべて削除 ListBox1.Items.Clear() ListBox2.Items.Clear() ListBox3.Items.Clear() Label5.Text = "Work file name" 'kik-netデータのcsv化 Dim foldername As String = "" Dim fwork As String '入力フォルダ選択 FolderBrowserDialog1.Description = "フォルダを選択してください" If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then foldername = FolderBrowserDialog1.SelectedPath End If 'ListBox1へのファイルの表示(SelectionMode:MultiSimple) For Each fwork In My.Computer.FileSystem.GetFiles(foldername) ListBox1.Items.Add(fwork) Next End Sub Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click '選択ファイルのListBox2への書き込み For Each obj As Object In ListBox1.SelectedItems ListBox2.Items.Add(obj) Next End Sub Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click 'kik-netデータのcsv化 Dim icase As Integer Dim i As Integer Dim k As Integer Dim sr As System.IO.StreamReader Dim sw As System.IO.StreamWriter Dim dat As String Dim fname1 As String = "" Dim fname2 As String = "" Dim str(16, 1) As String '先頭17行の文字列格納 Dim com As String 'コメント Dim dt As Double 'サンプリングピッチ(sec) Dim ndata As Integer 'データ数 Dim nk As Integer '1行当たりデータ数 Dim acc() As Double '加速度値(gal) Dim acm As Double '全平均加速度・最大加速度(gal) Dim dirc As String = "" '地震計位置・方向 Dim sf As Double 'スケール Dim sbuf() As String Dim delim() As Char = {"/"c} For icase = 0 To ListBox2.Items.Count - 1 'ファイル名確定 fname1 = (ListBox2.Items(icase)).ToString 'テキスト入力 sr = New System.IO.StreamReader(fname1, System.Text.Encoding.Default) For i = 0 To 16 dat = sr.ReadLine() k = dat.Length str(i, 0) = (dat.Substring(0, 18)).Trim() str(i, 1) = (dat.Substring(18, k - 18)).Trim() Next Select Case str(12, 1) Case "1" : dirc = "地中NS" Case "2" : dirc = "地中EW" Case "3" : dirc = "地中UD" Case "4" : dirc = "地表NS" Case "5" : dirc = "地表EW" Case "6" : dirc = "地表UD" Case "E-W" : dirc = "(K-NET)EW" Case "N-S" : dirc = "(K-NET)NS" Case "U-D" : dirc = "(K-NET)UD" End Select com = str(0, 1) & " " & str(5, 1) & " " & dirc '地震発生時刻・観測点・方向 k = str(10, 1).Length dt = 1.0 / CDbl(str(10, 1).Substring(0, k - 2)) 'サンプリングピッチ確定 ndata = CInt(CDbl(str(11, 1)) / dt) 'データ数確定 sbuf = str(13, 1).Split(delim) k = sbuf(0).Length sf = CDbl(sbuf(0).Substring(0, k - 5)) / CDbl(sbuf(1)) 'スケール確定 ReDim acc(ndata - 1) k = 0 Do While sr.Peek() >= 0 dat = sr.ReadLine() nk = CInt(dat.Length / 9) '1行のデータ数 For i = 0 To nk - 1 acc(k) = CDbl(dat.Substring(i * 9, 9)) * sf k = k + 1 Next i Loop sr.Close() '基線調整(全平均を0とする:算定法はkik-net原データ表示に合わせる) acm = 0.0 For k = 0 To ndata - 1 acm = acm + acc(k) Next k acm = acm / CDbl(ndata) For k = 0 To ndata - 1 acc(k) = acc(k) - acm Next k '加速度最大値 acm = Math.Abs(acc(0)) For k = 0 To ndata - 1 If acm < Math.Abs(acc(k)) Then acm = Math.Abs(acc(k)) Next k '出力ファイル選定とテキスト出力 fname2 = System.IO.Path.GetDirectoryName(fname1) & "\" 'パス名 fname2 = fname2 & System.IO.Path.GetFileNameWithoutExtension(fname1) '拡張子無しファイル名 fname2 = fname2 & "_" & System.IO.Path.GetExtension(fname1).Remove(0, 1) '原拡張子のファイル名取り込み(.→_) fname2 = fname2 & ".csv" sw = New System.IO.StreamWriter(fname2, False, System.Text.Encoding.Default) dat = com & " Max.acc=" & acm.ToString("0.000") : sw.WriteLine(dat) dat = "dt," & dt.ToString("0.000") : sw.WriteLine(dat) dat = "ndata," & ndata.ToString("0") : sw.WriteLine(dat) For k = 0 To ndata - 1 dat = acc(k).ToString("0.000") : sw.WriteLine(dat) Next k sw.Close() 'ListBox3への出力ファイル名書き出し ListBox3.Items.Add(fname2) Next icase 'ListBox3の内容をworkファイルに書き出す(work.txt) fname2 = System.IO.Path.GetDirectoryName(fname1) & "\work.txt" sw = New System.IO.StreamWriter(fname2, False, System.Text.Encoding.Default) For icase = 0 To ListBox2.Items.Count - 1 sw.WriteLine(ListBox3.Items(icase)) Next icase sw.Close() Label5.Text = "出力ファイル名は" & fname2 & "に出力" End Sub End Class