首页 省内新闻 外埠新闻 行业介绍 业务信息  水文测验  简报公报 水文文学 水文人物 水文法律法规 下载
当前位置: 首页 >> 水文科技动态 >> 水文技术 >> 正文

雨量自测报数据处理程序

来源:衡水水文局 文章作者:吴景峰 录入时间:08-06-26 11:27:48

水情自动测报系统的建立,提高了报汛的时效性,增加了洪水预报的有效预见期和预报精度,争取了防汛的主动性。通过水雨情自动测报系统,大大减少了人工作业量,从而可以使水文原来点多面广、分散的人力资源配置模式,改为相对集中的基地化管理模式,促进了水文生产模式的转变,为水文走站队结合之路打下了基础。

但在使用自测报资料时,遇到了报汛资料和整编资料两张皮问题: 自测报系统出来的成果与水文整编要求格式不一 。为了便于使用需将遥测雨量数据进行转换处理,因此编写了自测报数据处理程序,与大家一起分享。

采用 Visual Basic  6.0应用软件编程。首先定义两个数组(时间和雨量)和一个变量,设计三个 Command控件,属性 Caption分别改为打开文件 /保存文件退出。点击打开文件按钮,使用对话框 Commom Dialog控件的方法 showopen打开存放自测报数据的文本文件,读取时间和雨量数据至文件尾,关闭文件。然后点击保存按钮,使用方法 showsave输入文件名后保存,文件名的后缀自动生成为 .p0g。这样就生成了雨量电算表二的数据,在前面添上表一的数据在后添上表三的数据,就可用省局的水文整编程序进行降水量计算。用此程序转换衡水地区 22个雨量站计算后与自测报结果相同。

Private Sub Command1_Click()    '读取数据

Dim yrsf(5000), zcyl(5000), Wnum

 Wnum = 1

Open filename For Input As #1  

    Do While Not EOF(1)    ' 循环至文件尾。

       Input #1, yrsf(Wnum), zcyl(Wnum) ' 将数据读入两个变量。

      yrsf(Wnum) = Trim(yrsf(Wnum))

      zcyl(Wnum) = Trim(zcyl(Wnum))

      zcyl(Wnum) = Val(zcyl(Wnum))

      If zcyl(Wnum) <> 0 Then Wnum = Wnum + 1

    Loop

Close #1

Wnum = Wnum - 1

End Sub

Private Sub Command2_Click()    '保存数据

Open filename For Output As #2

Print #2, " 雨量组数: " & Wnum

        If InStr(Str(yrsf(1)), ".") = 0 And Right(yrsf(1), 2) = "00" Then

        Print #2, yrsf(1) - 0.45 - 76 & "," & "0"

        ElseIf InStr(Str(yrsf(1)), ".") = 0 Then

        Print #2, yrsf(1) - 0.45 & "," & "0"

        Else

        Print #2, yrsf(1) - 0.05 & "," & "0"

        End If

For i = 1 To Wnum - 1

If Left(zcyl(i), 1) = "." Then zcyl(i) = "0" & zcyl(i)

Print #2, yrsf(i) & "," & zcyl(i)

chz = yrsf(i + 1) - yrsf(i)

chz = Int(chz * 100 + 0.5) / 100

Select Case chz

       Case Is = 7076.45, 6976.45

            GoTo 100

       Case Is > 76.45

            If InStr(Str(yrsf(i + 1)), ".") = 0 And Right(yrsf(i + 1), 2) = "00" Then

            Print #2, yrsf(i + 1) - 0.45 - 76 & "," & "0"

            ElseIf InStr(Str(yrsf(i + 1)), ".") = 0 Then

            Print #2, yrsf(i + 1) - 0.45 & "," & "0"

            Else

            Print #2, yrsf(i + 1) - 0.05 & "," & "0"

            End If

       Case Is = 76.45

            GoTo 100

       Case Is > 0.45

            If InStr(Str(yrsf(i + 1)), ".") = 0 Then

            Print #2, yrsf(i + 1) - 0.45 & "," & "0"

            Else

            Print #2, yrsf(i + 1) - 0.05 & "," & "0"

            End If

       Case Is = 0.45

            GoTo 100

       Case Is > 0.05

            Print #2, yrsf(i + 1) - 0.05 & "," & "0"

       Case Else

End Select

100

Next i

If Left(zcyl(Wnum), 1) = "." Then zcyl(Wnum) = "0" & zcyl(Wnum)

Print #2, yrsf(Wnum) & "," & zcyl(Wnum)

Close #2

End Sub

责任编辑:alsothanks
主办单位: 河北省水文水资源勘测局 地址:石家庄市建华南大街85号
电话:0311-85696505  E-MAIL:sjzlqw@163.com
Copyright @ 2002-2005 HBSW.NET,All Rights Reserved