符鳳平,吳哲紅,高如玉,何 偉
(貴州省安順市氣象局,貴州 安順 561000)
安順市暴雨個例數據庫應用系統的設計與實現
符鳳平,吳哲紅,高如玉,何 偉
(貴州省安順市氣象局,貴州 安順 561000)
基于省—地—縣氣象光纖通信網,采用B/S軟件體系結構,建立安順市暴雨個例數據庫應用系統,實現安順市暴雨天氣個例檔案、各種物理量及歷史災情的顯示與查詢、統計與輸出等功能。系統基于Web方式,所有程序運行在服務器端,用戶端不用安裝任何程序,各部分功能設計均結合實際需求。自投入業務運行以來,在本地預報業務、氣象服務、科研與管理等方面發揮了重要作用,已成為一個實用性較強的業務服務支撐系統,有效提高了災害性天氣保障能力。
暴雨個例;ASP;SQL Server數據庫;物理量
目前,本地災害性天氣個例檔案的存儲管理主要采取人工方式,處理結果使用單一的文件格式進行存儲,缺乏統一的管理與調控,數據共享程度較低,查詢與統計效率不理想。以暴雨個例檔案為例,2014年本單位預報人員對2009年以來安順市暴雨天氣個例檔案做了歸類存檔工作,并以文件方式存放在服務器上,由于此項工作屬多人完成,造成文件存放比較分散,查詢資料不便,共享程度不高,不能充分發揮其使用效率。為解決這一現狀,立足于預報業務、服務與管理的長遠需求,建立一個屬于安順市的災害性天氣數據庫應用系統,對于提高預報業務服務現代化水平具有較為重要的意義。本研究主要以暴雨災害性天氣個例檔案為對象,實現基于B/S方式的暴雨個例資料自動化管理,提高災害性天氣歷史數據的共享程度和利用效率,成為安順市天氣預報業務、氣象服務、科研與管理等領域較為實用的一個系統。
2.1 主界面
系統主界面如圖1所示。

圖1 系統主界面Fig.1 The main interface of the system
2.2 技術方法
基于省—地—縣氣象光纖通信網和局域網,以32位Windows 7操作系統為開發平臺,后臺數據庫設計采取手工錄入和自動處理相結合的方式,通過對安順市暴雨天氣歷史數據進行整理、分類,實現暴雨資料與發生災情的自動入庫。前端應用部分采用B/S工作方式,使用ASP開發環境、VBScript腳本語言(少部分功能使用JavaScrpit語言)、SQL Server數據庫等技術,實現安順市暴雨天氣個例檔案、各種物理量及歷史災情的顯示與查詢、統計與輸出等功能,查詢方式可按日期或站名等字段分別進行查詢,查詢結果可導入Excel表格文件,方便保存或打印。
2.3 數據庫簡介
采用SQL Server 數據庫,數據庫命名為baoyu,一共包含個例檔案、假相當位溫、冷空氣特征、動力特征、暴雨災情、水汽特征、熱力特征、降雨實況、高低空急流特征等9張表,所有表內容均通過Excel文件導入,Excel文件內容為手工錄入的歷史暴雨資料與發生災情。其中,“暴雨災情”表主要存放1987—2005年安順市暴雨災情,其數據來源于安順市民政部門,包含地名、日期、日雨量、天氣現象、最大3 h雨量、連續降水最長持續時間、受災人口、倒塌房屋等29個字段,其它8張表主要存放2009—2013年安順市暴雨天氣個例檔案、各種物理量等信息,如表“個例檔案”一共包含13個字段,其結構見表1。

表1 個例檔案表結構
2.4 主要實現功能
2.4.1 暴雨歷史個例查詢
①降雨實況
分別實現按站名和日期查詢降雨實況,其數據從數據庫的降雨實況表中讀取,該表主要包含08時前后24 h雨量、20時前后24 h雨量等4個字段。按站名查詢主要實現自動查詢某站在某個暴雨發生日的具體降雨實況。網頁界面使用兩個控件,左邊控件顯示站名,右邊控件內容顯示從數據庫baoyu的降雨實況表中讀取選取站名發生暴雨的所有日期。選擇站名和日期后,即可查詢某站的降雨實況,查詢結果以表格方式在線顯示,并可導出為Excel文件。按日期查詢主要實現查詢某日所有站的具體降雨實況。
②個例檔案小結
實現按日期查詢暴雨發生日的個例檔案,如發生站數、影響系統、過程時間、過程站名、降雨量實況、天氣過程概述、實況天氣形勢、數值預報天氣形勢、個例檔案小結等資料。網頁界面使用日期控件,其內容為暴雨發生的所有日期。選擇好日期,點擊確定后,即可查詢該日的個例檔案。圖2為2009年5月17日的個例檔案小結。

圖2 2009年5月17日的個例檔案小結Fig.2 The case file summary in may 17, 2009
2.4.2 關鍵物理量查詢 實現按日期查詢暴雨發生日的關鍵物理量值,物理量按照動力特征、水汽條件、高低空急流、冷空氣特征、熱力條件等進行分類,各自包含的物理量見表2。

表2 物理量分類
物理量的每一分類在數據庫baoyu中都有一張對應表,如水汽條件對應的數據庫表名為水汽特征。所有物理量讀取方法基本相同,讀取時次均為暴雨發生日當天、前后兩天的08時和20時兩個時次,僅僅是讀取字段和高度層略有不同,如動力特征部分,主要讀取暴雨發生日不同高度層的渦度、散度、垂直速度等物理量,高度層分為200 hPa、500 hPa、700 hPa、850 hPa等層次。水汽條件部分主要從數據庫水汽特征表中,讀取暴雨發生日500 hPa、700 hPa、850 hPa 3個高度層的貴陽比濕、貴陽溫度露點差、水汽通量散度等物理量。高低空急流部分主要從數據庫的高低空急流特征表中,讀取暴雨發生日200 hPa、700 hPa、850 hPa 3個高度層的貴陽風向風速、最大風向風速。而冷空氣特征部分主要從數據庫的冷空氣特征表中,讀取暴雨發生日500 hPa的貴陽溫度、蘭州溫度、貴陽蘭州溫度差、貴陽高度、福州高度、貴陽福州高度差,以及安順、遵義、貴陽、畢節等站的變壓變溫值。熱力條件部分從數據庫的熱力特征表中,讀取暴雨發生日各站的K指數、SI指數、抬升指數LI、CAPE、對流抑制能量等物理量以及700 hPa和850 hPa兩個高度的假相當位溫值,讀取的站名主要有威寧(56691)、昆明(56778)、懷化(57749)、貴陽(57816)、河池(59023)、白色(59211)等。圖3為動力特征部分散度物理量查詢顯示界面。

圖3 散度查詢界面Fig.3 The display interface for scatter query
2.4.3 暴雨災情查詢
①按站名查詢
使用兩個列表控件,左邊控件顯示站名,右邊控件顯示具體日期。當在左邊控件選擇某站名時,則自動從數據庫baoyu的暴雨災情表中讀取該站發生暴雨的所有日期,并顯示在右邊的列表控件中。選擇好站名和日期,點擊確定后后,查詢結果以表格方式在線顯示,并可導入Excel文件。圖4為1987年7月2日安順市暴雨災情查詢界面。

圖4 按站名查詢顯示界面Fig.4 The query interface according to the station name
②按日期查詢
使用列表控件,有序地顯示1987年以來安順發生暴雨的具體日期,其日期數據從數據庫baoyu的暴雨災情表中讀取,查詢語句為 “select distinct 日期 from 暴雨災情 order by 日期”,實現日期按序排列并過濾掉重復記錄[1]。當選擇某日期時,則自動從數據庫的暴雨災情表中讀取該日期發生暴雨的所有站名及部分字段情況,列表控件值的變化使用語句“onChange="javascript:location.href='zh_date.asp?rq0='+this.value"”及參數傳遞語句“request.QueryString("rq0")”獲取其值[2]。暴雨災情表包含29個字段,由于網頁界面無法完整顯示其全部字段內容,在表格最右邊添加了“內容鏈接”進行對應災情全部內容的顯示鏈接,當點擊此鏈接時,可在另一個界面中顯示該日某站發生暴雨的所有情況,在此頁界面,可以返回主界面,也可以將顯示內容導入Excel文件。圖5為1991年7月11日安順市產生暴雨的站名及部分情況。

圖5 按日期查詢界面Fig.5 The query interface according to the date
3.1 將Excel表文件內容導入SQL Server數據庫時,出現提示“對于所指定的緩沖區來講太大”,造成數據導入失敗[3]
3.1.1 問題分析 SQL Server數據庫導入Excel表數據時主要工作流程如下:事先在SQL Server數據庫中創建目標表,然后把Excel數據寫入緩沖區,再把緩沖區數據寫入目標表。此問題出現在創建目標表和寫入緩沖區這兩個環節,SQL Server會根據Excel文件中的數據格式寫入緩沖區和創建目標表,比如Excel文件中有一列為編號,內容為數字類型,SQL Server就會在目標表里創建命名為“編號”的一列,其數據類型為float,而對于Excel文件中內容為文字的列,通常SQL Server會事先計算Excel文件中前8行該列的最大長度,如果這8行里某列的最大長度大于255,則目標列和緩沖區的數據類型就會建立成ntext型。如果Excel文件前8行文字列的長度都小于255,則目標表和緩沖區被建立為varchar類型(雖然目標表的字段類型可以修改,但緩沖區長度或類型無法修改),如果第8行以后某列長度超過了255,則SQL Server往緩沖區里寫數據的時候,會提示“數據對于指定的緩沖區來講太大”,造成數據導入失敗。
3.1.2 處理方法 針對此現象,主要有以下3種處理方法:
①把某列內容較長的行移到Excel表的前第8行。
②修改注冊表鍵值。SQL Server數據庫導入Excel數據時,Jet引擎根據注冊表中“TypeGuessRows”選項值代表的行數判斷導入內容的數據類型,其默認值為8,SQL Server數據庫根據前8行內容判斷數據類型,將其修改成0后,SQL Server數據庫則會對每行內容進行判斷。具體操作步驟如下:
在注冊表的“HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel”下雙擊右邊的“TypeGuessRows”選項,將“數值數據”改成0,然后重新啟動計算機。
③事先將Excel數據導入到Access,然后再導入到SQL Server數據庫。
為避免使用以上第2種方法可能會影響SQL Server數據庫性能,以及使用第3種方法會延長將Excel數據導入SQL Server數據庫所花費的時間,本研究使用第1種方法,將暴雨個例Excel數據文件中內容較長的行移到Excel表的前8行后,在SQL Server數據庫中成功導入Excel數據時,未再產生此錯誤提示。
3.2 日期格式問題[4]
正常情況下,SQL Server數據庫中的日期字段通過網頁顯示時應為YYYY-MM-DD格式,如果顯示為YYYY/M/D格式,可通過以下兩種方法解決:①在控制面板—日期時間格式中修改短日期格式;②修改注冊表鍵值,具體操作步驟如下:將注冊表“HKEY_USERS。DEFAULTControl PanelInternational”中的sDate鍵值改為“-”,sShortDate鍵值改為“yyyy-MM-dd”,然后重啟計算機即可。
3.3 前端網頁顯示時,有的字段為NULL
在將SQL Serve數據庫內容進行前端網頁顯示時,有的字段顯示內容為NULL。檢查SQL Server表內容發現,導入Excel數據后,有的內容為空,說明導入時個別數據未成功導入。檢查Excel文件,將其顯示內容為NULL的單元格格式與SQL Server表字段數據類型修改為一致后,網頁端顯示恢復正常。
系統本著業務需要而設計,利用較為分散的暴雨歷史資料,基于B/S方式,通過對安順市暴雨災害性天氣個例檔案的整理分類,結合預報業務、服務與管理需求,建立一個基于Web方式的暴雨天氣個例數據庫應用系統,最終實現對安順市暴雨天氣個例檔案、各種物理量及歷史災情的顯示與查詢、統計與輸出等功能。系統開發完成后,可擴充運用于對其它類型災害性天氣如冰雹、干旱、大霧等個例檔案的數據庫應用研究。自投入業務應用以來,系統運行穩定,數據準確無誤,尤其在預報業務方面發揮了重要作用,便于業務人員及時了解與查詢本地暴雨天氣個例歷史情況,對提高暴雨天氣預報質量起到有效的促進作用,較大地滿足了預報業務服務和管理需求。
[1] 符鳳平,吳哲紅,高如玉.精細化預報的自動檢驗與技巧評分系統[J].貴州氣象,2015,39(5):14-18.
[2] 羅銳韌.ASP網頁程序設計[M].北京:清華大學出版社,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—),女,副高,主要從事信息網絡與技術保障工作,E-mail:836755434@qq.com。
TP311.52
B