摘要:利用現代化通信手段實時收集大容量數據,并結合地理信息系統,開發出一個完整的短時預警報服務平臺,從系統需求、設計、實現三個方面進行了詳細描述,著重介紹了通信系統設計、地理信息圖層的實現,數據庫設計。該系統設計在解決同類問題中具有普遍適用性,在實際應用中發揮了較大作用,取得了很好的效果。
關鍵詞:短時預警; 系統結構; 圖層; 數據庫; 數據通信
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2007)12-0296-04
隨著我國現代化進程的發展,隨之而來的各種自然災害所產生的影響及破壞也越來越大,如長江流域的1998年7月的特大洪水造成的直接經濟損失就高達數千億元。而在所有自然災害所造成的損失中氣象災害占到了70%。在氣象災害中,暴雨、大風、雷暴等強對流天氣造成的損失就更加嚴重。而監測和預報它們的有效方法是充分利用雷達、衛星、自動氣象站和雷電系統等現代化的設備以及結合其他資料的分析處理系統的使用。目前,長江中游氣象部門的自動監測網已初步建成,利用GPRS和國家主骨干網實時收集資料,進行統一的分析處理是實現短時天氣預警報系統的主要環節也是難點。20世紀80年代開發的系統無論在數據使用還是時效方面均不能滿足現在的要求。新開發的系統分為資料收集、處理和產品生成、資料再現三大方面,通常資料再現要與地理信息結合進行分析。本文以計算機及氣象等相干領域理論知識為基礎,結合實際項目開發、詳細描述了“新一代短時天氣預報系統設計與實現”的開發過程。
1系統需求分析
武漢區域氣象中心由湖北、湖南、河南、安徽、江西五省的氣象局及附屬部門組成,有指導區域內氣象臺站業務的功能,區域內分布有數十部多普勒氣象雷達,數千計的自動氣象站和雨量站及雷電監測網。但大部分自動雨量站在鄉鎮一級,短時預報員要及時了解區域中心內的氣象實況,主要依靠雨量、雷達回波、閃電發生的次數位置以及衛星云圖等資料,并利用這些資料進行綜合分析,對有可能發生強對流天氣系統分布預警報。因此急需開發出一個集資料自動收集、整理分析的段時系統。根據預報員的實際需要短時系統應該具備如下功能。
1.1資料傳輸需求
區域內每6 min間隔的多部雷達資料傳輸,每小時自動雨量站和自動氣象站傳輸以及閃電定位系統資料的主動傳輸,每半小時一次的氣象衛星資料的收集,每天兩次數值預報產品資料收集。
1.2資料處理需求
對收集到的資料要進行實時處理,因此要求資料處理前置計算機系統具有存儲容量大,速度快的能力。對收集和處理的資料要有詳細的日志記錄情況。另外還應具備把收集的資料運用到氣象算法產生的產品上,如實時天氣系統跟蹤、預報等。對資料進行歸類存放和自動入庫功能。
1.3資料再現的需求
對資料處理系統的數據要能以電子地圖的方式進行顯示,包括二維資料、一維資料統計分析,主要表現形式是通過一定的地球投影方式進行二維平面場的等值線分析,一維資料的直方圖、餅圖、扇形圖分析,而且還具有空間三維分析。可以通過Internet對公眾分布預警報服務產品,給相關決策部門提供決策產品。以上產品具有地理信息系統的基本功能,如漫游、放大、縮小、統計、計算、測距和地理信息的查詢等。
1.4系統運行保障需求
系統應該具有穩定可靠性,能快速響應,預報員在復雜的天氣情況下對系統的快速響應有很高的要求,否則對決策不利,因為預報員要在非常短的時間內,查閱大量的信息,進行綜合分析。系統具有良好的擴充性,隨著現代化探測設備的增加,要能夠及時地在系統中反映;另外可移植性也是系統需要的,不經過(或少量)改動就可以移植到其他部門區域。
1.5用戶操作需求
用戶界面的設計具有良好的互動性,具有多種資料融合。界面操作靈活、方便實用,決定了系統使用的生命力,即滿足的功能要非常實用,設計時完全按照預報員日常習慣來進行,反復進行修改來滿足要求。對各種產品有適應性研究,即不同產品組合應反映不同的天氣系統,這些組合是按照預報員的實踐經驗提煉的。
根據以上描述可知,系統與外界進行數據交換的實體有:監測設備如雷達、自動氣象站、短時預報員、前置計算機管理人員及其他終端用戶(專業用戶和Internet用戶)。系統的數據流如圖1所示。
2總體設計
2.1系統結構設計
從需求分析可知,系統可以分為三個部分:a)前置計算機系統,處理海量數據如雷達原始的基數據和部分雷達二級數據、氣象衛星數據及數值產品數據;b)基于數據庫系統的數據,包括自動氣象站、自動雨量站、閃電和地理信息數據;c)產品顯示分布系統,分為兩種方式,即C/S和B/S,其中B/S模式產品是C/S模式產品的子集,只有部分產品的訪問權限,這樣設計是因為產品也是分級別的,有些專業產品對Internet用戶來說沒有實際意義。系統中最重要的環節是前置計算機,大部分產品均放在其上處理,而且幾乎都是后臺作業,采用日志記錄進行系統監控,Internet發布的產品也是后臺生成。工作站是對前置計算機上的數據進行分析、統計,并發布預警報信息,系統采用分布式處理方式,有效利用負載平衡方法進行實施。系統結構圖如圖2所示。
2.2系統功能層次結構
系統按照層次觀念進行細劃,系統供分為五層,每一層均有自己獨特的功能。第一層為原始數據層,可以部分供用戶顯示;第二層為原始數據衍生產品,包括了原始數據的質量控制;第三層為第二層衍生產品的進一步加工產品;第四層為預報產品,可以由第二層或第三層衍生而來;第五層為短時預報員使用的產品;第六層為決策層。系統層次圖如圖3所示。
2.3系統通信功能
大多數自動雨量站和自動氣象站分布在各鄉鎮、有的還很偏遠,交通通信不發達,因此采用中國移動的GPRS對自動雨量站進行數據傳輸,而自動氣象站一般在縣氣象局采用SDH線路用VPDN方式進行。雷達站的資料采用分布方式進行,即區域內各省負責收集本省內的雷達資料,按照規定的目錄存放,并建立FTP服務器。武漢區域氣象中心根據需要實時主動地獲取,同時區域內其他各省可以主動獲取武漢區域中心FTP服務器上原始數據和處理好的產品數據。其中雷達資料獲取主要功能是:自動以數分鐘為間隔以FTP方式從各省的FTP服務器收集參加共享的雷達基數據產品最新數據,時間間隔可根據自身機器的性能、網絡狀況進行調整;將收集到的各省各雷達站基數據與產品數據按規定的文件命名規范存放到FTP數據服務器規定的目錄中;對網絡狀態實時監測,當網絡出現故障時,及時發出告警信息;可通過軟件配置文件對需要收集的產品數據及存放地點進行靈活配置;節點名、用戶名、口令可以通過軟件配置文件靈活配置;采用多線程技術同時收集各省雷達資料以提高資料收集實效。通信結構如圖4所示。
2.4前置系統功能
前置系統是一個實時系統,它主要是對收集到的資料進行質量控制、格式轉換、產品生成等處理。處理的最小時間間隔為6 min,即6 min內必須完成本次收集到的資料,沒有完成的按丟棄處理,并在日志文件中記載。主要處理方式是按照多線程方式進行,但有兩個處理是最頂層的處理,即雷達資料的基數據質量控制和數值預報產品生成,只有它們處理完成后才能進行其他工作,并且可以并發進行。這時可以采用多線程方式進行,主要由雷達估算降水、雷達廓線、強對流天氣系統的自動跟蹤和預報產品、概念模型自動生成,區域雷達拼圖產品等模塊組成。上述模塊是由不同業務人員結合實際經驗完成的,因此在開發設計,系統集成時就要進行嚴格的定義,如輸入/輸出接口的規定。多部雷達拼圖模塊包含接口信息有:到達雷達站數、需要拼圖產品數、該產品未拿到信息、輸出產品存放位置和成功標志等。
2.5工作站及地理信息圖層實現
短時預報工作站也是系統重要的組成部分,它負責短時預報員與系統交互的接口,并具有分析功能和預警報分布功能。它在地理信息系統基礎上進行開發,全部自主開發的系統用VC從底層做起,包括地理信息系統的縮放、漫游、查詢和其他通用GIS系統數據轉換等功能。
GIS將管理信息系統與矢量圖形結合在一起,克服了管理信息系統某些方面的局限性,大大提高了系統的直觀性和可操作性,已經成為信息技術的重要組成部分。但GIS在氣象部門特別是實時業務部門應用還不多。近幾年來國際上普遍開展了研究和嘗試,收到了一定的成效。但專門針對氣象應用的成熟GIS系統仍在研制中,而且大多數均是在現有商業GIS系統的基礎上加以擴展或進行二次開發而成。比如美國NCAR正與ESRI合作研究氣象專用數據模型來擴展ArcGIS,并舉辦了針對ArcGIS的氣象數據模型專題研討會。
GIS系統的開發目前主要有三種方式:a)使用商品化的軟件;b)使用高級語言如VC等結合相應的控件如MapX等進行二次開發;c)使用高級語言從底層開發,如VC++。其中第c)開發的難度最大,但系統的靈活性、適應性和可操作性均比前兩種好,適合于有特定需求的用戶。隨著地理信息系統在各行各業中應用,專業地理信息系統在某些領域中特殊的應用也開始出現一些問題,有一些特殊功能的實現非常困難,如數據圖像在GIS中動畫的實現,特殊投影方式下圖像的精準配對等問題不容易實現。
2.5.1實現GIS系統的數據結構和方法
實現GIS系統需要一定的數學模型,這些數學模型包括概念數學模型和面向對象的數學模型 。其中面向對象的數學模型由于其從客觀世界的實體出發來研究問題,是目前研究和應用比較多的數學模型。模型完成后還需要使用一定的數據結構來描述。根據需要可以將數學模型的基本對象分為點、線、面和復雜的實體,復雜的實體是點、線、面以及圖像的組合。各對象的數據結構表示為:
點的數據結構,由空間的XYZ三個點組成。
線的數據結構,由點組成,是點的集合。
橢圓的數據結構,由橢圓中心、橢圓長短軸組成。
開發系統中圖像的數據結構由如下項目組成:識別標志、資料主類型、資料子類型、未壓縮矩陣數據標志、資料時間、投影方式、拼圖邊界方式、測站號、圖像質量控制方式、高度、仰角、水平像素點、垂直像素點、該圖像中心與拼圖中心水平距離、該圖像中心與拼圖中心垂直距離、水平分辨率、垂直分辨率、像素寬度、色彩數、每行字節數、圖像數據偏移量、圖像代碼等項目組成。在系統中大量使用圖像產品,因此這個結構比較復雜。
還有其他數據結構如地理符號,這里不再描述。
復雜實體對象的數據結構是由簡單的實體對象構成。其中包括自身的屬性和方法。在分析具體的工作實際要求和系統功能的基礎上,建立復雜實體模型,如等值線圖層對象的實現,它包括前面所述簡單數據結構的組合和類的實現方法。等值線類屬性和方法如下:
〈等值線類〉
{
〈屬性〉{第幾個資料的等值線,邊框還是等值線,以及是閉合還是不閉合的線,線的顏色,線的值,線的類型(windows type),線的個數,具體的數,分析等值線高低中心,其他屬性};
〈方法〉{增加一個新的實體,刪除一個存在的實體,存儲一個實體,顯示一個已經分析好的等值線,其他方法}}
2.5.2圖層的實現
圖層是各種矢量圖形和圖像的組合體。在進行圖層表示時,需要使用到上面的數據結構。各種矢量數據和圖像數據可以分為不同的類,筆者將不同的類對應成一個圖層。如果地理數據的邊界、河流、站點(如鄉鎮所在的地點)、特殊符號(如閃電、分析要素的高低中心的表示),分析的等值線數據可以看做不同的圖層,這種圖層的特點是圖層的信息用離散的數據并以矢量方式存儲,在對其進行操作時可以放大和縮小而不變形;另外一類是以矩陣形式存放的圖像數據,它也可以用圖層方式存放。系統共分為12類,實現的流程如圖5所示。
使用圖像類和矢量類不同地方主要表現為,在設計系統時考慮到系統大量使用圖像產品,并且要使圖像產品動畫顯示,因此把圖像產品作為一個整體進行操作,包括增加、動畫顯示和刪除等,圖像產品的名稱不在圖層名稱管理中出現。這樣的好處是減少用戶對圖像操作時的麻煩。如果這次顯示一個產品(一般情況為24幅圖),在顯示其他圖像產品時,要用鼠標進行選擇刪除,用戶操作起來就非常麻煩。
2.5.3圖像產品與地理信息的配準
不同的圖像產品均有不同的地球投影方式。在筆者使用的系統中使用的是兩種投影方式,即單部雷達極坐標方式的斜距錐面投影和多部雷達拼接在一起的蘭勃脫投影。單部雷達斜距錐面投影的公式為
要使地理信息和圖像產品正確地配準有兩種方法,一種是以圖像產品為準,將地理信息進行投影變換;另一種是以地理信息為準(一般是用經緯度方式表示)變換圖像產品。在實時顯示系統中后一種方法顯然是不適合的,因為變換需要花費大量的時間。因此本文采用第一種方法。經過變換的地理信息可以正確地配準圖像產品。其方法是用圖像產品矩形的四個角,根據投影方式的逆變換公式計算出四個角的經緯度,用MFC中函數BITBLT即可以顯示。
2.5.4工作站系統類層次結構
所有圖像的顯示必須與地理信息保持一致,實現疊加顯示。因此數據類首先包括一個地理信息設置基類,所有數據處理和顯示類均繼承該類(CMapProject)。數據類的繼承關系如圖6所示。
2.5.5圖像緩沖、顯示及多線程技術
系統顯示采用圖像緩沖技術,采用這樣的技術可以大大地提高圖像的顯示速度。其主要方法是首先分配和屏幕大小相同的內存,并在內存中建立位圖。建立完成后,所有的圖像(形)操作都在其上進行。最后用BITBLT函數進行DMA操作將圖形顯示在屏幕上。
m_pMemDC->CreateCompatibleDC(dc); //建立內存
m_pBitmap=CreateCompatibleBitmap(dc.m_hDC,lp.right,lp.bottom); //建立與屏幕大小相同的位圖
HBITMAP oldbitmap=(HBITMAP)(m_pMemDC->lectObject(m_pBitmap));//將位圖選入內存中
…
dc.BitBlt(updateRect.left,updateRect.top,updateRect.right,up-dateRect.bottom,m_pMemDC, updateRect.left,updateRect.top,SRCCOPY);//顯示在屏幕上
采用多線程技術也可以提高圖像顯示速度,在系統中有大量的圖像產品,在讀取文件時則可以采用此技術(特別是在網絡環境下受網絡速度影響非常大)。在讀取文件時派生出一個線程,采用非同步方式在視中進行顯示,這樣可以讀完一個文件顯示一個文件。同時用戶可以進行其他工作,讀取數據不受影響。
系統圖像顯示技術采用MFC下的文檔—視類技術,首先在文檔類中讀入要顯示的圖層數據并保存在相對應的圖層鏈表中,在視類中顯示。例如多個地理邊界圖層顯示就是把某一圖層對應的鏈表中的數據全部顯示。
CVectorMap*map_disp;
for(k=0;k
{
map_disp=(CVectorMap*)pDoc->m_CVectorMap.GetAt(k);
DrawMap(dc,Preject,map_disp);
}
上面提到的圖像產品在某一時刻只能顯示一類圖像產品,如何在屏幕上顯示不同種類的圖像產品,筆者采用分屏窗的方式進行。在系統中采用四分屏,每一個分屏可以同時顯示不同的圖像產品,而且是不同的地球投影方式。其方法是定義兩個全局變量隨時記住用戶操作的分屏號,根據分屏號進行不同的圖層操作。
CSplitterWnd *parent;parent=(CSplitterWnd*)GetParent();
CWnd*cw;
cw=parent->GetActivePane(row,col);//row和col為分屏號
3數據庫系統設計
系統采用SQL Server 2000數據庫系統,分為兩個數據庫,分布在兩個不同的計算機上。存放通過質量控制的數據。用ADO控件進行操作數據庫。
閃電數據庫按年進行區分,每年對應一個數據庫表,如flash2006,表包含字段為:閃電強度、位置和電荷極性等。建立了多個存儲過程,最為重要的是閃電頻數。
自動站數據庫分為多個表,主要的表有存放地理位置的表,主要包含站號(ID外關鍵字)、站名、經度、緯度和海拔高度等。其變化很小,主要用于與其他表的交叉連接查詢。自動站數據表,包含有溫度、氣壓、濕度、風向、風速、降水、云壯、云高、云量、低云量、地表溫度、地下5、10、15、20、40、80、160、320 cm處的地溫等多個要素,也構建了一些存儲過程,主要有雨量、溫度統計存儲過程。使用Access數據庫在每個客戶端本地使用地理信息系統。主要是減少網絡通信量。當然通過改變ODBC的配置,可以方便地移植到SQL Server中。
4結束語
系統支持與其他流行的圖形格式的轉換、如AutoCAD 以及MapInfo等。提供此功能主要是與現有的地理信息方便地交換信息。
系統采用C/S,B/S模式開發,前端計算機系統實時處理要分析的數據,客戶端使用TCP/IP協議讀取數據并顯示。
系統已投入使用,用戶反映好,與國內同類系統比較具有功能強、費用低、操作方便,主要的是系統從底層開發,不依賴其他系統。提供了比較豐富的圖形顯示和分析功能。系統采用面向對象的實體模型,利用VC++強大的類構造和管理能力設計。
當然本文只是根據用戶的需求開發了基本GIS功能,與國外同類系統相比還有一定的差距,這也是筆者今后努力的方向,但設計方法和開發方式是相同的。
參考文獻:
[1]周順平,于海燕,王海龍.組件技術在MapGIS中的應用[J].計算機應用研究,2002,19(12):116-118.
[2]劉清芝,胡仰棟.面向對象的軟件集成技術研究[J].計算機應用研究,2004,21(8):76-79.
[3]趙瑞金,楊洪平,郭亞田.新一代天氣雷達產品在MICAPS中顯示與調用[J].氣象,2005,31(2):31-34.
[4]周海光.新一代多普勒雷達臨近預報軟件系統[J].計算機應用研究,2006,23(2):129-130.
[5]WILHELMI O, BOEHNERT J. GIS initiative: developing an atmospheric data model for GIS[R]. USA: Unidata Seminar, 2004.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”