符鳳平,吳哲紅,高如玉,何 偉
(貴州省安順市氣象局,貴州 安順 561000)
安順市暴雨個例數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計與實現(xiàn)
符鳳平,吳哲紅,高如玉,何 偉
(貴州省安順市氣象局,貴州 安順 561000)
基于省—地—縣氣象光纖通信網(wǎng),采用B/S軟件體系結(jié)構(gòu),建立安順市暴雨個例數(shù)據(jù)庫應(yīng)用系統(tǒng),實現(xiàn)安順市暴雨天氣個例檔案、各種物理量及歷史災(zāi)情的顯示與查詢、統(tǒng)計與輸出等功能。系統(tǒng)基于Web方式,所有程序運(yùn)行在服務(wù)器端,用戶端不用安裝任何程序,各部分功能設(shè)計均結(jié)合實際需求。自投入業(yè)務(wù)運(yùn)行以來,在本地預(yù)報業(yè)務(wù)、氣象服務(wù)、科研與管理等方面發(fā)揮了重要作用,已成為一個實用性較強(qiáng)的業(yè)務(wù)服務(wù)支撐系統(tǒng),有效提高了災(zāi)害性天氣保障能力。
暴雨個例;ASP;SQL Server數(shù)據(jù)庫;物理量
目前,本地災(zāi)害性天氣個例檔案的存儲管理主要采取人工方式,處理結(jié)果使用單一的文件格式進(jìn)行存儲,缺乏統(tǒng)一的管理與調(diào)控,數(shù)據(jù)共享程度較低,查詢與統(tǒng)計效率不理想。以暴雨個例檔案為例,2014年本單位預(yù)報人員對2009年以來安順市暴雨天氣個例檔案做了歸類存檔工作,并以文件方式存放在服務(wù)器上,由于此項工作屬多人完成,造成文件存放比較分散,查詢資料不便,共享程度不高,不能充分發(fā)揮其使用效率。為解決這一現(xiàn)狀,立足于預(yù)報業(yè)務(wù)、服務(wù)與管理的長遠(yuǎn)需求,建立一個屬于安順市的災(zāi)害性天氣數(shù)據(jù)庫應(yīng)用系統(tǒng),對于提高預(yù)報業(yè)務(wù)服務(wù)現(xiàn)代化水平具有較為重要的意義。本研究主要以暴雨災(zāi)害性天氣個例檔案為對象,實現(xiàn)基于B/S方式的暴雨個例資料自動化管理,提高災(zāi)害性天氣歷史數(shù)據(jù)的共享程度和利用效率,成為安順市天氣預(yù)報業(yè)務(wù)、氣象服務(wù)、科研與管理等領(lǐng)域較為實用的一個系統(tǒng)。
2.1 主界面
系統(tǒng)主界面如圖1所示。
圖1 系統(tǒng)主界面Fig.1 The main interface of the system
2.2 技術(shù)方法
基于省—地—縣氣象光纖通信網(wǎng)和局域網(wǎng),以32位Windows 7操作系統(tǒng)為開發(fā)平臺,后臺數(shù)據(jù)庫設(shè)計采取手工錄入和自動處理相結(jié)合的方式,通過對安順市暴雨天氣歷史數(shù)據(jù)進(jìn)行整理、分類,實現(xiàn)暴雨資料與發(fā)生災(zāi)情的自動入庫。前端應(yīng)用部分采用B/S工作方式,使用ASP開發(fā)環(huán)境、VBScript腳本語言(少部分功能使用JavaScrpit語言)、SQL Server數(shù)據(jù)庫等技術(shù),實現(xiàn)安順市暴雨天氣個例檔案、各種物理量及歷史災(zāi)情的顯示與查詢、統(tǒng)計與輸出等功能,查詢方式可按日期或站名等字段分別進(jìn)行查詢,查詢結(jié)果可導(dǎo)入Excel表格文件,方便保存或打印。
2.3 數(shù)據(jù)庫簡介
采用SQL Server 數(shù)據(jù)庫,數(shù)據(jù)庫命名為baoyu,一共包含個例檔案、假相當(dāng)位溫、冷空氣特征、動力特征、暴雨災(zāi)情、水汽特征、熱力特征、降雨實況、高低空急流特征等9張表,所有表內(nèi)容均通過Excel文件導(dǎo)入,Excel文件內(nèi)容為手工錄入的歷史暴雨資料與發(fā)生災(zāi)情。其中,“暴雨災(zāi)情”表主要存放1987—2005年安順市暴雨災(zāi)情,其數(shù)據(jù)來源于安順市民政部門,包含地名、日期、日雨量、天氣現(xiàn)象、最大3 h雨量、連續(xù)降水最長持續(xù)時間、受災(zāi)人口、倒塌房屋等29個字段,其它8張表主要存放2009—2013年安順市暴雨天氣個例檔案、各種物理量等信息,如表“個例檔案”一共包含13個字段,其結(jié)構(gòu)見表1。
表1 個例檔案表結(jié)構(gòu)
2.4 主要實現(xiàn)功能
2.4.1 暴雨歷史個例查詢
①降雨實況
分別實現(xiàn)按站名和日期查詢降雨實況,其數(shù)據(jù)從數(shù)據(jù)庫的降雨實況表中讀取,該表主要包含08時前后24 h雨量、20時前后24 h雨量等4個字段。按站名查詢主要實現(xiàn)自動查詢某站在某個暴雨發(fā)生日的具體降雨實況。網(wǎng)頁界面使用兩個控件,左邊控件顯示站名,右邊控件內(nèi)容顯示從數(shù)據(jù)庫baoyu的降雨實況表中讀取選取站名發(fā)生暴雨的所有日期。選擇站名和日期后,即可查詢某站的降雨實況,查詢結(jié)果以表格方式在線顯示,并可導(dǎo)出為Excel文件。按日期查詢主要實現(xiàn)查詢某日所有站的具體降雨實況。
②個例檔案小結(jié)
實現(xiàn)按日期查詢暴雨發(fā)生日的個例檔案,如發(fā)生站數(shù)、影響系統(tǒng)、過程時間、過程站名、降雨量實況、天氣過程概述、實況天氣形勢、數(shù)值預(yù)報天氣形勢、個例檔案小結(jié)等資料。網(wǎng)頁界面使用日期控件,其內(nèi)容為暴雨發(fā)生的所有日期。選擇好日期,點(diǎn)擊確定后,即可查詢該日的個例檔案。圖2為2009年5月17日的個例檔案小結(jié)。
圖2 2009年5月17日的個例檔案小結(jié)Fig.2 The case file summary in may 17, 2009
2.4.2 關(guān)鍵物理量查詢 實現(xiàn)按日期查詢暴雨發(fā)生日的關(guān)鍵物理量值,物理量按照動力特征、水汽條件、高低空急流、冷空氣特征、熱力條件等進(jìn)行分類,各自包含的物理量見表2。
表2 物理量分類
物理量的每一分類在數(shù)據(jù)庫baoyu中都有一張對應(yīng)表,如水汽條件對應(yīng)的數(shù)據(jù)庫表名為水汽特征。所有物理量讀取方法基本相同,讀取時次均為暴雨發(fā)生日當(dāng)天、前后兩天的08時和20時兩個時次,僅僅是讀取字段和高度層略有不同,如動力特征部分,主要讀取暴雨發(fā)生日不同高度層的渦度、散度、垂直速度等物理量,高度層分為200 hPa、500 hPa、700 hPa、850 hPa等層次。水汽條件部分主要從數(shù)據(jù)庫水汽特征表中,讀取暴雨發(fā)生日500 hPa、700 hPa、850 hPa 3個高度層的貴陽比濕、貴陽溫度露點(diǎn)差、水汽通量散度等物理量。高低空急流部分主要從數(shù)據(jù)庫的高低空急流特征表中,讀取暴雨發(fā)生日200 hPa、700 hPa、850 hPa 3個高度層的貴陽風(fēng)向風(fēng)速、最大風(fēng)向風(fēng)速。而冷空氣特征部分主要從數(shù)據(jù)庫的冷空氣特征表中,讀取暴雨發(fā)生日500 hPa的貴陽溫度、蘭州溫度、貴陽蘭州溫度差、貴陽高度、福州高度、貴陽福州高度差,以及安順、遵義、貴陽、畢節(jié)等站的變壓變溫值。熱力條件部分從數(shù)據(jù)庫的熱力特征表中,讀取暴雨發(fā)生日各站的K指數(shù)、SI指數(shù)、抬升指數(shù)LI、CAPE、對流抑制能量等物理量以及700 hPa和850 hPa兩個高度的假相當(dāng)位溫值,讀取的站名主要有威寧(56691)、昆明(56778)、懷化(57749)、貴陽(57816)、河池(59023)、白色(59211)等。圖3為動力特征部分散度物理量查詢顯示界面。
圖3 散度查詢界面Fig.3 The display interface for scatter query
2.4.3 暴雨災(zāi)情查詢
①按站名查詢
使用兩個列表控件,左邊控件顯示站名,右邊控件顯示具體日期。當(dāng)在左邊控件選擇某站名時,則自動從數(shù)據(jù)庫baoyu的暴雨災(zāi)情表中讀取該站發(fā)生暴雨的所有日期,并顯示在右邊的列表控件中。選擇好站名和日期,點(diǎn)擊確定后后,查詢結(jié)果以表格方式在線顯示,并可導(dǎo)入Excel文件。圖4為1987年7月2日安順市暴雨災(zāi)情查詢界面。
圖4 按站名查詢顯示界面Fig.4 The query interface according to the station name
②按日期查詢
使用列表控件,有序地顯示1987年以來安順發(fā)生暴雨的具體日期,其日期數(shù)據(jù)從數(shù)據(jù)庫baoyu的暴雨災(zāi)情表中讀取,查詢語句為 “select distinct 日期 from 暴雨災(zāi)情 order by 日期”,實現(xiàn)日期按序排列并過濾掉重復(fù)記錄[1]。當(dāng)選擇某日期時,則自動從數(shù)據(jù)庫的暴雨災(zāi)情表中讀取該日期發(fā)生暴雨的所有站名及部分字段情況,列表控件值的變化使用語句“onChange="javascript:location.href='zh_date.asp?rq0='+this.value"”及參數(shù)傳遞語句“request.QueryString("rq0")”獲取其值[2]。暴雨災(zāi)情表包含29個字段,由于網(wǎng)頁界面無法完整顯示其全部字段內(nèi)容,在表格最右邊添加了“內(nèi)容鏈接”進(jìn)行對應(yīng)災(zāi)情全部內(nèi)容的顯示鏈接,當(dāng)點(diǎn)擊此鏈接時,可在另一個界面中顯示該日某站發(fā)生暴雨的所有情況,在此頁界面,可以返回主界面,也可以將顯示內(nèi)容導(dǎo)入Excel文件。圖5為1991年7月11日安順市產(chǎn)生暴雨的站名及部分情況。
圖5 按日期查詢界面Fig.5 The query interface according to the date
3.1 將Excel表文件內(nèi)容導(dǎo)入SQL Server數(shù)據(jù)庫時,出現(xiàn)提示“對于所指定的緩沖區(qū)來講太大”,造成數(shù)據(jù)導(dǎo)入失敗[3]
3.1.1 問題分析 SQL Server數(shù)據(jù)庫導(dǎo)入Excel表數(shù)據(jù)時主要工作流程如下:事先在SQL Server數(shù)據(jù)庫中創(chuàng)建目標(biāo)表,然后把Excel數(shù)據(jù)寫入緩沖區(qū),再把緩沖區(qū)數(shù)據(jù)寫入目標(biāo)表。此問題出現(xiàn)在創(chuàng)建目標(biāo)表和寫入緩沖區(qū)這兩個環(huán)節(jié),SQL Server會根據(jù)Excel文件中的數(shù)據(jù)格式寫入緩沖區(qū)和創(chuàng)建目標(biāo)表,比如Excel文件中有一列為編號,內(nèi)容為數(shù)字類型,SQL Server就會在目標(biāo)表里創(chuàng)建命名為“編號”的一列,其數(shù)據(jù)類型為float,而對于Excel文件中內(nèi)容為文字的列,通常SQL Server會事先計算Excel文件中前8行該列的最大長度,如果這8行里某列的最大長度大于255,則目標(biāo)列和緩沖區(qū)的數(shù)據(jù)類型就會建立成ntext型。如果Excel文件前8行文字列的長度都小于255,則目標(biāo)表和緩沖區(qū)被建立為varchar類型(雖然目標(biāo)表的字段類型可以修改,但緩沖區(qū)長度或類型無法修改),如果第8行以后某列長度超過了255,則SQL Server往緩沖區(qū)里寫數(shù)據(jù)的時候,會提示“數(shù)據(jù)對于指定的緩沖區(qū)來講太大”,造成數(shù)據(jù)導(dǎo)入失敗。
3.1.2 處理方法 針對此現(xiàn)象,主要有以下3種處理方法:
①把某列內(nèi)容較長的行移到Excel表的前第8行。
②修改注冊表鍵值。SQL Server數(shù)據(jù)庫導(dǎo)入Excel數(shù)據(jù)時,Jet引擎根據(jù)注冊表中“TypeGuessRows”選項值代表的行數(shù)判斷導(dǎo)入內(nèi)容的數(shù)據(jù)類型,其默認(rèn)值為8,SQL Server數(shù)據(jù)庫根據(jù)前8行內(nèi)容判斷數(shù)據(jù)類型,將其修改成0后,SQL Server數(shù)據(jù)庫則會對每行內(nèi)容進(jìn)行判斷。具體操作步驟如下:
在注冊表的“HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel”下雙擊右邊的“TypeGuessRows”選項,將“數(shù)值數(shù)據(jù)”改成0,然后重新啟動計算機(jī)。
③事先將Excel數(shù)據(jù)導(dǎo)入到Access,然后再導(dǎo)入到SQL Server數(shù)據(jù)庫。
為避免使用以上第2種方法可能會影響SQL Server數(shù)據(jù)庫性能,以及使用第3種方法會延長將Excel數(shù)據(jù)導(dǎo)入SQL Server數(shù)據(jù)庫所花費(fèi)的時間,本研究使用第1種方法,將暴雨個例Excel數(shù)據(jù)文件中內(nèi)容較長的行移到Excel表的前8行后,在SQL Server數(shù)據(jù)庫中成功導(dǎo)入Excel數(shù)據(jù)時,未再產(chǎn)生此錯誤提示。
3.2 日期格式問題[4]
正常情況下,SQL Server數(shù)據(jù)庫中的日期字段通過網(wǎng)頁顯示時應(yīng)為YYYY-MM-DD格式,如果顯示為YYYY/M/D格式,可通過以下兩種方法解決:①在控制面板—日期時間格式中修改短日期格式;②修改注冊表鍵值,具體操作步驟如下:將注冊表“HKEY_USERS。DEFAULTControl PanelInternational”中的sDate鍵值改為“-”,sShortDate鍵值改為“yyyy-MM-dd”,然后重啟計算機(jī)即可。
3.3 前端網(wǎng)頁顯示時,有的字段為NULL
在將SQL Serve數(shù)據(jù)庫內(nèi)容進(jìn)行前端網(wǎng)頁顯示時,有的字段顯示內(nèi)容為NULL。檢查SQL Server表內(nèi)容發(fā)現(xiàn),導(dǎo)入Excel數(shù)據(jù)后,有的內(nèi)容為空,說明導(dǎo)入時個別數(shù)據(jù)未成功導(dǎo)入。檢查Excel文件,將其顯示內(nèi)容為NULL的單元格格式與SQL Server表字段數(shù)據(jù)類型修改為一致后,網(wǎng)頁端顯示恢復(fù)正常。
系統(tǒng)本著業(yè)務(wù)需要而設(shè)計,利用較為分散的暴雨歷史資料,基于B/S方式,通過對安順市暴雨災(zāi)害性天氣個例檔案的整理分類,結(jié)合預(yù)報業(yè)務(wù)、服務(wù)與管理需求,建立一個基于Web方式的暴雨天氣個例數(shù)據(jù)庫應(yīng)用系統(tǒng),最終實現(xiàn)對安順市暴雨天氣個例檔案、各種物理量及歷史災(zāi)情的顯示與查詢、統(tǒng)計與輸出等功能。系統(tǒng)開發(fā)完成后,可擴(kuò)充運(yùn)用于對其它類型災(zāi)害性天氣如冰雹、干旱、大霧等個例檔案的數(shù)據(jù)庫應(yīng)用研究。自投入業(yè)務(wù)應(yīng)用以來,系統(tǒng)運(yùn)行穩(wěn)定,數(shù)據(jù)準(zhǔn)確無誤,尤其在預(yù)報業(yè)務(wù)方面發(fā)揮了重要作用,便于業(yè)務(wù)人員及時了解與查詢本地暴雨天氣個例歷史情況,對提高暴雨天氣預(yù)報質(zhì)量起到有效的促進(jìn)作用,較大地滿足了預(yù)報業(yè)務(wù)服務(wù)和管理需求。
[1] 符鳳平,吳哲紅,高如玉.精細(xì)化預(yù)報的自動檢驗與技巧評分系統(tǒng)[J].貴州氣象,2015,39(5):14-18.
[2] 羅銳韌.ASP網(wǎng)頁程序設(shè)計[M].北京:清華大學(xué)出版社,2005.
[3] http://www.cnblogs.com/emanlee/archive/2009/07/28/1532878.html.
[4] http://blog.sina.com.cn/s/blog_53befb7b0102uyd4.html.
The design and implementation of the rainstorm casedatabase application system in Anshun City
FU Fengping,WU Zhehong,GAO Ruyu,HE Wei
(Anshun Meteorological Bureau of Guizhou Province,Anshun 561000, China)
The system was developed based on the meteorological optical fiber communication network,using B/S software architecture, establishing the database application system for the rainstorm case in Anshun City, realizing the display and query, the statistics and output,and so on for the rainstorm weather case archives, all kinds of physical quantity and the historical disaster in Anshun city. The system is based on Web mode, all programs run on the server side, users do not need to install any program, each part of the functional design is combined with the actual need. Since having been put into the business operation, it has played an important role in the local forecast business, the meteorological service, the scientific research and the management, having become a support system with high practicality for the meteorological business and service, effectively improving the protection ability for the disaster weather.
rainstorm case; ASP; SQL server database; physical quantity
1003-6598(2017)01-0059-05
2016-08-12
符鳳平(1969—),女,副高,主要從事信息網(wǎng)絡(luò)與技術(shù)保障工作,E-mail:836755434@qq.com。
TP311.52
B