賈松林 王穎 薛蕾 王博
(國家氣象信息中心,北京 100081)
數(shù)據(jù)元是通過標(biāo)識、定義、表示以及允許值等一系列屬性描述的數(shù)據(jù)單元,在特定的語義環(huán)境中被認(rèn)為是不可再分的最小數(shù)據(jù)單元[1]。針對數(shù)據(jù)元的注冊管理維護(hù)問題,國內(nèi)部分行業(yè)已經(jīng)開展了數(shù)據(jù)元管理系統(tǒng)的研究和設(shè)計實現(xiàn)。交通運輸部針對交通信息基礎(chǔ)數(shù)據(jù)元已建成了交通信息基礎(chǔ)數(shù)據(jù)元管理與服務(wù)系統(tǒng)。方文亮[2]以陜西省交通信息基礎(chǔ)數(shù)據(jù)元字典編制項目為背景開展了對數(shù)據(jù)元的結(jié)構(gòu)研究,開發(fā)了基于Web的數(shù)據(jù)元管理系統(tǒng)。姚遠(yuǎn)等[3]介紹了基于網(wǎng)絡(luò)的衛(wèi)生信息數(shù)據(jù)元管理平臺設(shè)計、管理流程。文必龍等[4]給出了基于語義的石油勘探開發(fā)數(shù)據(jù)元管理架構(gòu),提出了數(shù)據(jù)元質(zhì)量控制模型、數(shù)據(jù)元分類模式、數(shù)據(jù)元搜索服務(wù)等管理技術(shù)。
氣象數(shù)據(jù)元是氣象數(shù)據(jù)中不可再分的最小數(shù)據(jù)單元,可分為33個大類,每類包含幾十到數(shù)百個數(shù)據(jù)元,每個數(shù)據(jù)元包含16個屬性。建設(shè)一套管理系統(tǒng)對這些氣象數(shù)據(jù)元進(jìn)行有效規(guī)范的管理具有重要的業(yè)務(wù)現(xiàn)實意義:該系統(tǒng)的建設(shè)將為實現(xiàn)氣象數(shù)據(jù)元在氣象業(yè)務(wù)全流程環(huán)節(jié)共享、確保數(shù)據(jù)元“全局”一致提供支撐平臺,為業(yè)務(wù)管理人員提供高效便捷的氣象數(shù)據(jù)元管理和維護(hù)工具,并為業(yè)務(wù)用戶和公眾呈現(xiàn)出直觀的數(shù)據(jù)元查閱和使用窗口。本文簡要介紹了氣象數(shù)據(jù)元的標(biāo)準(zhǔn)與分類,重點闡述了氣象數(shù)據(jù)元管理系統(tǒng)的功能結(jié)構(gòu)、技術(shù)框架和一些關(guān)鍵技術(shù)的實現(xiàn)。
我國部分行業(yè)陸續(xù)對本行業(yè)的數(shù)據(jù)元進(jìn)行了標(biāo)準(zhǔn)化研究工作,發(fā)布了一系列行業(yè)范圍內(nèi)的相關(guān)標(biāo)準(zhǔn)[5-8],建立了各自領(lǐng)域范圍內(nèi)的標(biāo)準(zhǔn)化數(shù)據(jù)元目錄,對于本行業(yè)的數(shù)據(jù)標(biāo)準(zhǔn)化及國家的數(shù)據(jù)元標(biāo)準(zhǔn)化工作發(fā)展都起到積極的推動作用。
在氣象領(lǐng)域,氣象數(shù)據(jù)元標(biāo)準(zhǔn)系列是氣象信息化標(biāo)準(zhǔn)體系中的基礎(chǔ)數(shù)據(jù)標(biāo)準(zhǔn),由34個部分組成,包括總則部分和33類數(shù)據(jù)元各自對應(yīng)的部分。氣象數(shù)據(jù)元標(biāo)準(zhǔn)用于規(guī)范相關(guān)數(shù)據(jù)元在元數(shù)據(jù)和數(shù)據(jù)格式中的統(tǒng)一標(biāo)識和表示,填補了氣象信息化業(yè)務(wù)流程中對于數(shù)據(jù)規(guī)范表示標(biāo)準(zhǔn)的缺失,可支撐氣象數(shù)據(jù)在氣象信息化系統(tǒng)中的高效流通和應(yīng)用。氣象數(shù)據(jù)元標(biāo)準(zhǔn)適用于氣象數(shù)據(jù)的采集、傳輸、分析、加工、存儲、發(fā)布、以及應(yīng)用(天氣、氣候等業(yè)務(wù)應(yīng)用、政務(wù)管理應(yīng)用)和服務(wù)(公共氣象服務(wù)等)等各業(yè)務(wù)環(huán)節(jié),以解決目前相同數(shù)據(jù)元在不同業(yè)務(wù)環(huán)節(jié)中代碼、特征值等表示規(guī)則不統(tǒng)一的問題。
國家氣象信息中心發(fā)布的“氣象數(shù)據(jù)元—第1部分:總則”(以下簡稱為“總則”)根據(jù)世界氣象組織(WMO)基本系統(tǒng)委員會發(fā)布的氣象數(shù)據(jù)通用二進(jìn)制表示格式(BUFR編碼格式)和氣象要素分類與編碼[9]將氣象數(shù)據(jù)元分為33類,其中28個類型碼與BUFR表B一致,4個是本地擴展的類型碼。具體包括測站/平臺標(biāo)識、儀器、時間、緯向水平位置、經(jīng)向水平位置、垂直位置、意義限定符、高度與氣壓、風(fēng)和湍流、溫度、濕度/降水/蒸發(fā)、輻射、大氣成分、天氣系統(tǒng)特征、天氣現(xiàn)象、雷達(dá)氣象、海洋氣象、釋放與輸送、放射性輻射、處理信息、時間(非坐標(biāo)位置)、緯向水平位置(非坐標(biāo)位置)、經(jīng)向水平位置(非坐標(biāo)位置)、地圖數(shù)據(jù)、圖像、質(zhì)量信息、數(shù)據(jù)監(jiān)測信息、衛(wèi)星氣象、空間天氣、災(zāi)害、農(nóng)業(yè)與生態(tài)氣象、大氣診斷物理量和其他。每個氣象數(shù)據(jù)元有16個屬性,包括中文名稱、代碼、英文名稱、簡稱、定義、數(shù)據(jù)類型、提交機構(gòu)、狀態(tài)、版本、計量單位、數(shù)據(jù)精度、特征值、學(xué)科種類、參數(shù)種類、參數(shù)編號和備注。上述16個氣象數(shù)據(jù)元屬性中,前9個(中文名稱等)必選,后7個(計量單位等)可選。
根據(jù)總則,氣象數(shù)據(jù)元的維護(hù)工作應(yīng)包括數(shù)據(jù)元生命周期管理、數(shù)據(jù)元的添加、刪除、更新等工作,這些工作應(yīng)由數(shù)據(jù)元注冊機構(gòu)負(fù)責(zé)。另外數(shù)據(jù)元編制完成并發(fā)布后應(yīng)能被行業(yè)用戶和公眾用戶方便地檢索發(fā)現(xiàn)和使用。據(jù)此確定了氣象數(shù)據(jù)元管理系統(tǒng)的功能模塊由數(shù)據(jù)元查詢、提交、管理和用戶管理四部分組成,具體功能劃分如系統(tǒng)功能結(jié)構(gòu)圖1所示;而用戶角色則由普通用戶、業(yè)務(wù)維護(hù)人員和系統(tǒng)管理人員三類用戶組成。

圖1 氣象數(shù)據(jù)元管理系統(tǒng)功能結(jié)構(gòu)Fig. 1 Functional structure of meteorological data element administration system
數(shù)據(jù)元查詢功能為用戶提供了多種發(fā)現(xiàn)數(shù)據(jù)元的查詢方式,并可導(dǎo)出所需數(shù)據(jù)元到Excel數(shù)據(jù)文件中,包括數(shù)據(jù)元目錄導(dǎo)航、關(guān)鍵詞查詢、條件查詢、詳細(xì)信息查看、導(dǎo)出數(shù)據(jù)元到Excel文件。數(shù)據(jù)元提交功能主要為業(yè)務(wù)人員向系統(tǒng)中新增與修改氣象數(shù)據(jù)元提供方便,包括數(shù)據(jù)元新增、導(dǎo)入、更新、校驗。數(shù)據(jù)元管理功能主要供業(yè)務(wù)維護(hù)人員決定是否發(fā)布、刪除提交的數(shù)據(jù)元,并對數(shù)據(jù)元的類型和特征值進(jìn)行管理,包括數(shù)據(jù)元發(fā)布、刪除、類型管理、特征值管理。用戶管理主要用于所有用戶的注冊與登錄,并可供系統(tǒng)管理員對注冊用戶進(jìn)行審核授權(quán),包括用戶注冊、登錄與退出、用戶信息查看與修改、用戶審核與刪改。
氣象數(shù)據(jù)元管理系統(tǒng)的三類用戶根據(jù)角色權(quán)限的不同可使用的系統(tǒng)功能也不同。普通用戶是指公眾用戶和行業(yè)內(nèi)用戶,這些用戶僅能使用系統(tǒng)的數(shù)據(jù)元查詢功能,可以查詢系統(tǒng)中已發(fā)布數(shù)據(jù)元的信息,導(dǎo)出選定的數(shù)據(jù)元。業(yè)務(wù)維護(hù)人員是指氣象數(shù)據(jù)元的編制和管理人員,主要對系統(tǒng)中的氣象數(shù)據(jù)元進(jìn)行相關(guān)的提交維護(hù)工作,能夠使用系統(tǒng)中與數(shù)據(jù)元業(yè)務(wù)維護(hù)相關(guān)的查詢、提交、管理功能。系統(tǒng)管理人員負(fù)責(zé)系統(tǒng)用戶的審核管理和整個系統(tǒng)網(wǎng)站的運行維護(hù),能夠使用系統(tǒng)所有的功能。
氣象數(shù)據(jù)元管理系統(tǒng)采用B/S架構(gòu),后臺主要用Java語言開發(fā),前端主要使用jsp+js+css技術(shù),系統(tǒng)的開發(fā)框架采用Spring MVC與MyBatis的整合,數(shù)據(jù)庫根據(jù)業(yè)務(wù)需求與其他業(yè)務(wù)系統(tǒng)共用Oracle數(shù)據(jù)庫。
總體技術(shù)框架基于Spring MVC采用數(shù)據(jù)訪問層、業(yè)務(wù)服務(wù)層、控制層和視圖層分層開發(fā)的模式,具體如圖2所示。該框架縱向上采用分層的設(shè)計,橫向上則按系統(tǒng)的業(yè)務(wù)功能劃分相應(yīng)頁面、接口和類。控制層對服務(wù)層的調(diào)用以及服務(wù)層對數(shù)據(jù)訪問層的調(diào)用一方面采用了面向接口的方式而不關(guān)心具體的接口實現(xiàn),另一方面采用Spring注解注入的方式來獲取實現(xiàn)接口的實體類對象。

圖2 氣象數(shù)據(jù)元管理系統(tǒng)技術(shù)框架Fig. 2 Technical framework of meteorological data element administration system
數(shù)據(jù)訪問層基于MyBatis的DAO 接口組件和SQL Mapper組件實現(xiàn):DAO接口是數(shù)據(jù)訪問接口的一系列聲明,數(shù)據(jù)服務(wù)層對數(shù)據(jù)庫的操作只是面向這些接口進(jìn)行,而不用關(guān)心這些接口的具體實現(xiàn);SQL Mapper則是DAO數(shù)據(jù)訪問接口的具體實現(xiàn),并將具體的SQL操作語句配置在XML格式的配置文件中,便于以后的維護(hù)。
如第1節(jié)所述,氣象數(shù)據(jù)元共包括33類,每個類別中包含的數(shù)據(jù)元數(shù)少則幾十多則數(shù)百,對這些數(shù)據(jù)元進(jìn)行分類管理對于數(shù)據(jù)元的存儲管理和查找發(fā)現(xiàn)都至關(guān)重要。
氣象數(shù)據(jù)元管理系統(tǒng)使用了目錄導(dǎo)航的形式對數(shù)據(jù)元進(jìn)行分類管理和檢索發(fā)現(xiàn)。系統(tǒng)使用了EasyUI的Tree組件以實現(xiàn)數(shù)據(jù)元目錄樹結(jié)構(gòu),使用Datagrid組件以實現(xiàn)數(shù)據(jù)元查詢結(jié)果列表展示和翻頁,實現(xiàn)效果如圖3所示。
具體的實現(xiàn)邏輯是:當(dāng)點擊目錄樹的非葉子節(jié)點時,后臺控制器從數(shù)據(jù)元類型表中檢索出數(shù)據(jù)元的所有類型信息,如類型標(biāo)識、名稱等,每個類型封裝成Tree組件的節(jié)點對象并轉(zhuǎn)換為JSON格式,之后由后臺控制器返回給前端Tree組件加以顯示;當(dāng)點擊目錄樹的葉子節(jié)點時,后臺控制器從氣象數(shù)據(jù)元信息表中查詢出屬于該節(jié)點類型的數(shù)據(jù)元記錄,使用MyBatis分頁插件PageHelper對查詢結(jié)果進(jìn)行分頁后封裝成JSON格式,之后由后臺控制器返回給前端Datagrid組件展示。

圖3 氣象數(shù)據(jù)元目錄Fig. 3 Catalog of meteorological data elements
根據(jù)第1節(jié)所述,氣象數(shù)據(jù)元屬性共16個,總則對這些屬性的編制規(guī)則做了具體規(guī)定,通過管理系統(tǒng)的導(dǎo)入和增加功能提交的數(shù)據(jù)元應(yīng)確保符合這些規(guī)定。為此,對這些屬性編制規(guī)則進(jìn)行總結(jié)并確定出便于程序校驗實現(xiàn)的正則表達(dá)式如表1所示,并針對導(dǎo)入和增加兩種不同的提交方式,相應(yīng)采用了兩種不同的屬性校驗方法。

表1 氣象數(shù)據(jù)元屬性編制規(guī)則及對應(yīng)正則表達(dá)式Table 1 Rules and regular expressions of attributes of meteorological data elements
由于導(dǎo)入功能是基于數(shù)據(jù)元Excel數(shù)據(jù)文件的上傳和解析,所以其檢驗方式是通過java后臺代碼實現(xiàn)。具體主要是通過實現(xiàn)Spring的Validator接口進(jìn)行的,首先實現(xiàn)了該接口的函數(shù)public boolean supports(Class clazz)以支持要校驗的數(shù)據(jù)元類DataElement,然后實現(xiàn)該接口的函數(shù)public void validate(Object target,Errors errors)以利用表 1總結(jié)的正則表達(dá)式依次校驗數(shù)據(jù)元類對象各個屬性的格式。
而增加功能是基于網(wǎng)頁的交互式提交方法,因此其校驗方式主要是通過js前端代碼實現(xiàn)。具體主要是通過jQuery Validate校驗插件進(jìn)行的,對于數(shù)據(jù)元屬性簡單規(guī)則的校驗直接使用了該校驗插件提供的檢驗規(guī)則,如required:true以校驗必選屬性、range:[0,4]以校驗狀態(tài)屬性取值、digits:true和rangelength:[5,5]以校驗代碼屬性取值等。而對于格式要求復(fù)雜的數(shù)據(jù)元屬性的校驗,如簡稱、版本,則采用js單獨編寫校驗函數(shù)并嵌入到j(luò)Query Validate校驗插件中進(jìn)行校驗。
另外對氣象數(shù)據(jù)元唯一性的校驗則主要是在入庫前根據(jù)代碼和版本判斷數(shù)據(jù)庫中是否已存在相同代碼和版本的記錄,如果已存在則不能入庫,否則正常入庫存儲。
通過以上校驗方法的實現(xiàn)確保了用戶提交到管理系統(tǒng)的氣象數(shù)據(jù)元的格式正確性和在數(shù)據(jù)庫中的唯一性。
如第2節(jié)所述,氣象數(shù)據(jù)元管理系統(tǒng)的用戶分三類:普通用戶、業(yè)務(wù)維護(hù)人員和系統(tǒng)管理人員,這三類用戶訪問系統(tǒng)的權(quán)限是不同的,因此應(yīng)對不同用戶的訪問做權(quán)限控制。具體的權(quán)限控制可分為對于前端JSP頁面的顯示控制和對于URL的訪問控制。在實施這兩種權(quán)限控制方式之前,應(yīng)對三類用戶分配不同的權(quán)限代碼,并在用戶登錄的時候在會話Session變量中記錄用戶名和權(quán)限代碼。
對于前端JSP頁面的顯示控制是通過JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSTL)的if標(biāo)簽獲取Session變量存儲的用戶信息,并根據(jù)用戶信息對象是否為空及用戶的權(quán)限代碼值來決定該用戶是否能夠訪問相應(yīng)內(nèi)容。
對于URL訪問的控制是通過使用攔截器結(jié)合權(quán)限注解的方式進(jìn)行的。具體實現(xiàn)邏輯是:創(chuàng)建一個權(quán)限注解FireAuthority,該注解包含一個整型int的屬性authorityType,該屬性的取值應(yīng)分別對應(yīng)系統(tǒng)三類用戶的權(quán)限代碼。在要控制訪問URL請求映射的控制器方法上進(jìn)行權(quán)限注解,以確定該URL允許什么角色的用戶訪問。創(chuàng)建一個權(quán)限注解攔截器AuthorityAnnotationInterceptor以攔截該URL請求,該攔截繼承自HandlerInterceptorAdapter,并重寫其中的方法preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)throws Exception,在該方法中獲取handler的權(quán)限注解對象FireAuthority和Session中的登錄用戶對象,通過判斷登錄用戶對象的角色與注解對象FireAuthority的屬性值是否相符決定是否允許用戶訪問該URL。
通過以上兩種方式的權(quán)限控制使得同一頁面被不同角色的用戶訪問時能夠顯示不同的內(nèi)容,特定的URL只能被有相應(yīng)權(quán)限的用戶訪問,從而對氣象數(shù)據(jù)元管理系統(tǒng)的用戶訪問做了有效的權(quán)限控制。
目前,通過氣象數(shù)據(jù)元管理系統(tǒng)提交發(fā)布的氣象數(shù)據(jù)元包括溫度、緯向水平位置、經(jīng)向水平位置、氣壓、降水等,通過該系統(tǒng)實現(xiàn)了這些數(shù)據(jù)元在氣象業(yè)務(wù)全流程環(huán)節(jié)中的共享,確保了這些數(shù)據(jù)元的“全局”一致。對于要新增的氣象數(shù)據(jù)元,可通過系統(tǒng)提供的“數(shù)據(jù)元增加”功能逐條地錄入,也可以通過“批量導(dǎo)入”功能快捷地批量導(dǎo)入數(shù)據(jù)元到系統(tǒng)中。
該系統(tǒng)的建設(shè)完成為業(yè)務(wù)管理人員提供了高效便捷的氣象數(shù)據(jù)元管理和維護(hù)工具,并為業(yè)務(wù)用戶和公眾呈現(xiàn)了直觀的數(shù)據(jù)元查閱和使用窗口。但該系統(tǒng)也有待改進(jìn)之處:雖然系統(tǒng)基本功能都已開發(fā)完成,但系統(tǒng)界面設(shè)計仍有進(jìn)一步美化改善的地方;另外,隨著以后各個數(shù)據(jù)元標(biāo)準(zhǔn)的編寫和發(fā)布,相應(yīng)的數(shù)據(jù)元數(shù)據(jù)需要及時導(dǎo)入到系統(tǒng)中以便管理和服務(wù)。
[1]中國標(biāo)準(zhǔn)化研究中心. 信息技術(shù)數(shù)據(jù)元的規(guī)范與標(biāo)準(zhǔn)化(GB/T18391). 北京: 中國國家標(biāo)準(zhǔn)化管理委員會, 2003.
[2]方文亮. 數(shù)據(jù)元結(jié)構(gòu)研究及其管理系統(tǒng)的設(shè)計與實現(xiàn). 西安: 長安大學(xué)碩士學(xué)位論文, 2009.
[3]姚遠(yuǎn), 李林, 馮丹. 數(shù)據(jù)元管理及其網(wǎng)絡(luò)化管理平臺的設(shè)計. 中國衛(wèi)生信息管理雜志, 2012, 9(1): 59-61.
[4]文必龍, 肖波, 陳新榮. 石油勘探開發(fā)數(shù)據(jù)元管理技術(shù). 大慶石油學(xué)院學(xué)報, 2012, 36(1): 83-88.
[5]中國標(biāo)準(zhǔn)化與信息分類編碼研究所. 用于行政、商業(yè)和運輸業(yè)電子數(shù)據(jù)交換的數(shù)據(jù)元目錄(GB/T 17699—1999). 北京: 國家質(zhì)量技術(shù)監(jiān)督局, 1999.
[6]科學(xué)數(shù)據(jù)共享工程辦公室.公用數(shù)據(jù)元目錄(SDS/T 2131—2004).北京: 中國科學(xué)技術(shù)部基礎(chǔ)研究司, 2004.
[7]中國標(biāo)準(zhǔn)化研究院. 電子政務(wù)數(shù)據(jù)元—第1部分: 設(shè)計和管理規(guī)范(GB/T 19488.1—2004). 北京: 中國國家標(biāo)準(zhǔn)化管理委員會, 2004.
[8]中交水運規(guī)劃設(shè)計院. 交通基礎(chǔ)數(shù)據(jù)元—第1部分:總則(JT/T 697.1—2007). 北京: 中華人民共和國交通部, 2007.
[9]國家氣象信息中心. 氣象要素分類與編碼(QX/T 133-2011). 北京:中國氣象局, 2011.
Advances in Meteorological Science and Technology2018年1期