|
水情自动测报系统的建立,提高了报汛的时效性,增加了洪水预报的有效预见期和预报精度,争取了防汛的主动性。通过水雨情自动测报系统,大大减少了人工作业量,从而可以使水文原来点多面广、分散的人力资源配置模式,改为相对集中的基地化管理模式,促进了水文生产模式的转变,为水文走站队结合之路打下了基础。
但在使用自测报资料时,遇到了报汛资料和整编资料两张皮问题:
自测报系统出来的成果与水文整编要求格式不一
致
。为了便于使用需将遥测雨量数据进行转换处理,因此编写了自测报数据处理程序,与大家一起分享。
采用
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
|