閆春楠,劉蓬勃,李云鵬
(1.遼寧省水文水資源勘測局撫順分局,遼寧 撫順 113015;2.遼寧省水文水資源勘測局,遼寧 沈陽 110003;3.遼寧省江河流域管理局,遼寧 沈陽 110003)
遼寧省從1995年開始在MICRO-VAXⅡ機(jī)上利用ORACLE版本的數(shù)據(jù)庫建立起遼寧省基礎(chǔ)水文數(shù)據(jù)庫系統(tǒng)。1996年8月為配合全國水文數(shù)據(jù)庫的建設(shè),遼寧省把水文數(shù)據(jù)庫移植到微機(jī)上,建立了遼寧省國家基礎(chǔ)水文數(shù)據(jù)庫系統(tǒng)。
目前,遼寧省國家基礎(chǔ)水文數(shù)據(jù)庫數(shù)據(jù)系列長度為109年(1902—2010年),庫結(jié)構(gòu)依照SL324-2005《基礎(chǔ)水文數(shù)據(jù)庫表結(jié)構(gòu)及標(biāo)識符標(biāo)準(zhǔn)》標(biāo)準(zhǔn)建設(shè),數(shù)據(jù)庫共有47個表,約30萬站年的數(shù)據(jù)。數(shù)據(jù)入庫方式主要有2種:1)經(jīng)過計算機(jī)整編的水文資料轉(zhuǎn)換格式后入庫;2)刊印的水文年鑒資料(紙介質(zhì))通過人工錄入、校對存貯入庫。近年來,遼寧省水文水資源勘測局加大了基礎(chǔ)水文數(shù)據(jù)庫建設(shè)的步伐,經(jīng)過兩次大規(guī)模的校對和補(bǔ)錄,目前數(shù)據(jù)庫完整度、準(zhǔn)確度等指標(biāo)都已經(jīng)達(dá)到預(yù)期目標(biāo),數(shù)據(jù)整體質(zhì)量已經(jīng)完全達(dá)到國家要求。
自1998年以來遼寧省水文水資源勘測局自主研發(fā)了水文資料整編程序,2008年以后開始使用北方片水文資料整編程序。因此形成了格式統(tǒng)一的Excel版本的水文資料整編成果,對于統(tǒng)一格式的水文資料整編成果就需要研發(fā)相對應(yīng)的格式轉(zhuǎn)換入庫程序。目前已經(jīng)完成了所有共計27個表的轉(zhuǎn)換入庫程序,由于VB語言與Excel可以實現(xiàn)無縫鏈接,并且容易掌握,因此該程序用VB語言編寫。要實現(xiàn)VB與Excel的鏈接,首先在VB編輯器的工程中要引用Microsoft Excel類型庫:從“工程”菜單中選擇“引用”欄;選擇 Microsoft Excel 11.0 Object Library(EXCEL2003),然后選擇“確定”。表示在工程中要引用Excel類型庫;其次在通用對象的聲明過程中定義Excel對象;最后在程序中通過Excel操作的常用命令創(chuàng)建、打開、讀取、寫入、關(guān)閉、釋放等等來進(jìn)行數(shù)據(jù)轉(zhuǎn)換的實現(xiàn)。由于整編資料的站點共計有600多個,而且每個資料項目有單獨的Excel文件,最終的整編成果Excel文件有幾千個之多,所以程序必須考慮到批量處理的因素。程序的主要思路是將數(shù)據(jù)讀取到一維或二維數(shù)組中,然后進(jìn)行必要的處理,如數(shù)字與符號的分離、日期的處理、整數(shù)位的處理等等,再將處理后的數(shù)據(jù)重新寫入新建的Excel表中。目前由于整編資料中的測站編碼還有個別站與基礎(chǔ)水文數(shù)據(jù)庫中的編碼不一致,另外整編資料中難免有出錯之處,因此本程序沒有直接與數(shù)據(jù)庫連接,而是將轉(zhuǎn)換后的數(shù)據(jù)統(tǒng)一存放在新的Excel表中,經(jīng)過人工處理后再入庫,這樣可以減少非法數(shù)據(jù)無法入庫帶來的麻煩。以下主要介紹幾個典型表的程序開發(fā)過程。
1)日表類。日表中以“逐日平均水位表”最為典型,因為整編資料中會將水位整數(shù)位相同的部分省略掉,轉(zhuǎn)換程序中應(yīng)當(dāng)添加上省略的整數(shù)位。
日表類數(shù)據(jù)的處理除考慮到以上因素外,還要考慮閏年與平年2月份天數(shù)的處理,在程序中加以判斷即可。月表與年表的轉(zhuǎn)換相對來說就比較簡單了,主要考慮“連底凍”及“河干”等非數(shù)值型字段的處理情況,代碼就不一一給出了。
2)實測表類。實測表中以“實測流量成果表”為例進(jìn)行分析。由于“實測流量成果表”數(shù)據(jù)一般都會有好幾頁,并且長度不像日表中那么固定,所以在數(shù)組聲明過程中一般聲明為動態(tài)數(shù)組,然后在程序中對數(shù)據(jù)總體長度加以判斷,再重新對動態(tài)數(shù)組分配長度。
“實測流量成果表”中水位的處理與日表中的類似,另外“斷面位置”字段與“測驗方法”字段中會有省略符號,需要進(jìn)行替換。
3)摘錄表類。摘錄表中以“洪水水文要素摘錄表”為例加以分析?!昂樗囊卣洷怼迸c實測表類似,數(shù)據(jù)總體長度也不是固定的,因此在數(shù)組聲明過程中也要聲明為動態(tài)數(shù)組,然后在程序中對數(shù)據(jù)總體長度加以判斷,再重新對動態(tài)數(shù)組分配長度。
“洪水水文要素摘錄表”中水位的處理與日表中的類似,讀取數(shù)據(jù)的方式稍顯復(fù)雜,這是因為該表的數(shù)據(jù)為三列分布,每列有6個字段,讀取數(shù)據(jù)時需多層循環(huán)語句嵌套所致。
水文整編資料的轉(zhuǎn)換、處理、入庫是水文數(shù)據(jù)管理部門每年的基本工作,不僅關(guān)系到國家基礎(chǔ)水文數(shù)據(jù)庫數(shù)據(jù)更新的效率、質(zhì)量,也為防洪預(yù)報、水利規(guī)劃等工作提供了最新的數(shù)據(jù)服務(wù),因此數(shù)據(jù)轉(zhuǎn)換程序要求高效、準(zhǔn)確、穩(wěn)定。該程序經(jīng)過實踐檢驗完全滿足工作需要。
[1]SL324-2005,基礎(chǔ)水文數(shù)據(jù)庫表結(jié)構(gòu)及標(biāo)示符標(biāo)準(zhǔn)[S].