顏小華 任曉東 唐曉春
水文年鑒復(fù)刊中引排水(潮)量數(shù)據(jù)的快速校核方法
顏小華任曉東唐曉春
由于歷史原因,江蘇省負(fù)責(zé)匯編刊印的5卷4冊與6卷19、20冊水文年鑒從1989~2005年根據(jù)上級要求,停止了匯編刊印。為適應(yīng)水利建設(shè)及國民經(jīng)濟(jì)發(fā)展對水文服務(wù)的需求,保持水文資料系列的連續(xù)性,江蘇省水文水資源勘測局決定對主編卷冊停刊水文年鑒進(jìn)行復(fù)刊,蘇州分局作為主編單位,承擔(dān)了6卷20冊水文年鑒匯編刊印工作。作為江蘇省特有的引排水(潮)量統(tǒng)計(jì)表,6卷20冊包含了13個水文站的數(shù)據(jù),而省局從數(shù)據(jù)庫中導(dǎo)出并提供的CSV中又沒有包含這些數(shù)據(jù),這就需要在年鑒復(fù)刊軟件中采用人工方式對引排水(潮)量過程表、旬、月、年統(tǒng)計(jì)表進(jìn)行錄入。這其中引排水(潮)量過程表的錄入及校核是一項(xiàng)繁重的工作,雖然兩人背靠背錄入方式能減少入庫錯誤的發(fā)生,但最后生成的成果表總會有意想不到的問題出現(xiàn)。通過多年來對引排水(潮)量過程表數(shù)據(jù)的檢查過程的實(shí)踐積累,嘗試將年鑒復(fù)刊軟件生成的hjs文件通過 VB.NET讀取到 Excel中,在Excel中根據(jù)引排水推流公式采用Visual Basic forApplication(以下簡稱VBA)編程方式對提取的引排水?dāng)?shù)據(jù)進(jìn)行校核。
分析hjs文件可知,采用年鑒復(fù)刊程序生成的hjs文件,是將DataSet記錄序列化后,以字符編碼為UTF-16,保存的XML文件。因此要完成引排水(潮)量數(shù)據(jù)的校核,就要首先將hjs反序列化,以下為反序列化部分代碼。
MessageBox.Show("反序列化時出錯!")
反序列化后,再將數(shù)據(jù)導(dǎo)出到Excel文件中,以下為導(dǎo)出到Excel部分代碼。
圖1為將hjs文件中的數(shù)據(jù)導(dǎo)出到Excel中后的成果表,數(shù)據(jù)導(dǎo)入到Excel后,就可以用VBA編程方式對導(dǎo)入的數(shù)據(jù)進(jìn)行校核。
江蘇沿江感潮堰閘站按潮引水或排水,采用“一潮推流法”定線推流。“一潮推流法”一般以有效波高、開閘開始水位與一次開閘的漲潮流或落潮流流量相關(guān),建立通用關(guān)系式:
式中:Q—漲潮流或落潮流流量,m3/s;
根據(jù)“一潮推流法”的定義,圖1中的第六列一潮水量由第四、五列根據(jù)公式(1)乘以第二、三列的歷時所得,最后一列一潮最大流量由第四、五列根據(jù)公式(1)計(jì)算所得。因此,校核錄入數(shù)據(jù)正確與否,就只要看由公式計(jì)算出來的結(jié)果同最后兩列的差值是否為零。具體操作步驟如下:
1.首先在Excel的N、O、P列分別輸入引排水平均流量、最大流量的K、α、β系數(shù),如圖2所示;
2.然后切換到VBA,點(diǎn)擊運(yùn)行按鈕。以下為部分計(jì)算代碼:
圖1 hjs數(shù)據(jù)到Excel表成果圖
圖2 引排水系數(shù)圖
圖3 數(shù)據(jù)檢查結(jié)果圖
3.運(yùn)行后,在Excel的I、J、K、L列得到相應(yīng)數(shù)據(jù),其中,I、K列分別為水量計(jì)算值、最大流量計(jì)算值,J、L列為計(jì)算值與人工錄入數(shù)據(jù)的差值;
4.最后再檢查J、K兩列的數(shù)值,如果結(jié)果不為零,則人工錄入數(shù)據(jù)有可能就有誤,圖3為檢查結(jié)果示例。
本文通過VB.NET將年鑒復(fù)刊軟件生成的hjs導(dǎo)出到Excel中,根據(jù)引排水量推流公式,用VBA編程的方法,計(jì)算得到水量、最大流量,實(shí)現(xiàn)了對人工錄入的引排水時間、水位、水量、流量的電算化校核,極大減輕了數(shù)據(jù)校核人員的工作強(qiáng)度,提高了工作效率,為快速查找人工錄入的引排水(潮)量過程表數(shù)據(jù)的錯誤提供了一種高效且可行的方法■
(作者單位:江蘇省水文水資源勘測局蘇州分局215000)