郝振榮 王小蘭
摘 要:根據氣象數據空間分布的特點,基于B/S架構,采用Map Server地理信息服務器、Oracle Spatial空間信息管理組件和Post GIS,Open Scales等開源WEBGIS軟件完成了山西省氣象探測數據顯示系統。該系統實現了氣象觀測站、雷達、閃電和衛星云圖等多種氣象數據的集成顯示,為天氣預報、氣象服務等業務應用提供了數據支持,全面提高了氣象數據的共享應用能力。
關鍵詞:WEBGIS;氣象探測;顯示系統;數據
中圖分類號:P208 文獻標識碼:A 文章編號:2095-6835(2014)06-0144-03
隨著氣象業務服務需求的牽引和技術發展的推動,氣象觀測業務已從低時空分辨率有限視野的定時常規監測向遙感、遙測、連續、自動的高時空分辨率綜合觀測方向發展。綜合探測系統所提供的多元化監測信息是進行大氣環境分析、天氣預報和氣候預測重要的基礎資料。如何將收集到的各種氣象探測數據以準確、合理、多樣化的方式展現出來,增強對氣象預報、預測和公共氣象服務業務的科技支撐,已成為迫切需要解決的問題。
WEBGIS作為地理信息系統基于Web的實現方式,與傳統的桌面GIS相比,它具有以下特點:獨立于操作系統,部署便捷;容易實現大范圍的共享訪問;客戶端共同采用服務端數據,保證了數據的一致性,避免產生信息孤島;業務用戶不必花費大量的經費采購昂貴的GIS軟件。對訪問空間性和時間性顯著、數據量巨大的數據,WEBGIS具有很大的優勢。氣象數據在空間和時間上連續分布的特性使得地理信息系統成為解決上述問題的可行方法之一。
1 系統分析與設計
1.1 系統分析
按照GIS劃分的數據類型,主要有矢量數據和柵格數據。它可將氣象探測數據與GIS數據相對應,即以站點觀測組織的要素數據,比如氣溫、氣壓、濕度、降水和雷電等為矢量數據;以面或多維空間組織的雷達和衛星云圖等資料為柵格數據。氣象探測每天產生大量的數據,并且需及時、有效地進行數據共享,以滿足對極端天氣監測和預警的需求。以往比較成功的GIS軟件應用主要采用了桌面GIS軟件,而桌面GIS應用存在的突出問題是影響數據共享,即只能服務于單個或部分終端用戶,無法覆蓋整個局域網內的所有用戶。該系統基于WEBGIS,利用最新的RIA技術,在實現復雜的桌面GIS功能的同時,憑借Web2.0技術和FLEX技術的優勢,重點實現了海量氣象探測數據的瀏覽和檢索。
1.2 系統模型
為了便于快速開發、部署和功能擴展,該系統采用WEBGIS三層模型結構。系統的邏輯結構如圖1所示。
系統從邏輯結構上劃分為瀏覽器、應用服務器和數據服務器三層。各層次相互關聯,相互依賴,即下一層是上一層的基層,上一層依賴于下一層而實現。
1.2.1 數據服務器層
該層包含基礎地理信息數據庫、氣象要素數據庫、衛星云圖數據庫、雷達拼圖數據庫和閃電資料數據庫。其中,基礎地理信息數據庫包含系統所需的地圖數據和氣象觀測站點的位置數據;氣象要素數據庫用于存儲各類自動氣象站的氣象探測數據,系統功能中的數據收集、存儲模塊在這層實現。數據服務器為整個系統提供數據支持。
1.2.2 應用服務器層
這一層既要考慮通過數據庫接口實現數據的操作,又要提供標準的服務結構,方便瀏覽器層的調用。為了便于實現,又將本層劃分為數據接口和應用發布兩個子層。其中,數據接口子層是地理信息服務器和網站服務器用于調用數據服務器層中的數據。應用發布子層通過全局數據訪問視圖和統一的數據服務接口對外發布WMS,WFS和JSON等數據服務,為瀏覽器層提供用于展現的數據。
1.2.3 瀏覽器層
該層通過GIS客戶端、網頁表格空間和網頁圖表等工具實現GIS操作界面和氣象探測數據的可視化。
上述三層都依賴于外部IT資源支撐系統。這一外部層為系統提供網絡、磁盤陣列、高性能服務器和終端等硬件支撐。
1.3 功能設計
為了便于開發和部署,將系統功能劃分為地理信息服務、地圖操作、要素顯示、空間分析、時間序列顯示、閃電定位數據顯示、雷達拼圖顯示和衛星云圖顯示八個功能模塊。具體如圖2所示。
1.3.1 地理信息服務發布模塊
通過在數據庫中建立視圖的方式,將基礎地理信息數據和氣象數據結合在一起。地理信息服務器通過數據庫接口訪問這些視圖。它將這些視圖通過OGC定義的Web服務標準WMS和WFS發布出去,供客戶端訪問。
1.3.2 地圖操作功能模塊
在用戶界面上實現基本的GIS數據瀏覽訪問功能,包括導航、圖層管理、漫游定位、距離測量、繪制定制圖案、截圖和打印等功能。
1.3.3 氣象要素顯示模塊
氣象要素顯示模塊由定時數據查詢模塊和統計數據查詢模塊兩個部分組成。
1.3.3.1 定時數據查詢模塊
用戶選擇需要查詢的數據類型和數據的觀測時間提交系統,系統接受用戶請求,在客戶端上參照天氣填圖樣式顯示符合查詢條件的數據。
1.3.3.2 統計數據查詢模塊
用戶選擇需要查詢的數據類型和時間區間提交系統,系統接受用戶的請求,按照氣象數據統計規定,在客戶端上參照天氣填圖樣式顯示統計數據??蛻舳松巷@示符合查詢條件的所有站點觀測的氣象要素,并可按照要素類別進行升序和降序的排序,結果以表格形式顯示出來。
1.3.4 氣象要素空間分析模塊
采用等值線算法,將查詢結果按照不同的樣式以等值線的方式繪制在客戶端的地圖上。
1.3.5 氣象要素時間序列顯示模塊
依據選擇的查詢站點,返回這個站點多個氣象要素的時間序列圖。時間序列圖的樣式有曲線圖、直方圖等。endprint
1.3.6 閃電定位數據顯示模塊
選擇時間區間,在地圖上標注顯示這個時間區間內所有的閃電定位數據。
1.3.7 雷達拼圖顯示模塊
選擇時間區間,返回這個時間段內所有的雷達拼圖數據,選擇其中一張符合需求的雷達拼圖數據在客戶端的地圖上顯示。
1.3.8 衛星云圖顯示模塊
其功能和雷達拼圖顯示模塊類似,顯示內容為所選擇的衛星云圖。
1.4 數據流程的設計
數據流程主要包括數據處理、數據加工、數據存儲、數據服務和數據展示等五個子流程,各子流程間采用時間和事件觸發等調度機制,實現數據在各功能模塊間的處理、加工、管理和服務。系統數據流程如圖3所示。
1.5 數據庫設計
按照存儲數據的類型數據庫邏輯上劃分為基礎地理信息數據庫、氣象要素數據庫、衛星云圖數據庫、雷達拼圖數據庫和閃電監測數據庫。其中,基礎地理信息數據庫包含系統所需的地圖數據和氣象站點的位置數據;氣象要素數據庫用于存儲自動氣象站的觀測數據。圖4為系統數據庫邏輯結構。
數據庫必須能夠支持地理信息數據的存儲,大容量數據的管理和存儲,能夠承擔高頻次的并發訪問。結合目前實際情況,自動氣象站、閃電定位數據存儲在Oracle數據庫中,站點信息也存儲Oracle數據庫中的一個表里。新建PostgreSQL用于存儲系統地圖用到的基礎地理信息、雷達拼圖和衛星云圖等數據。系統數據庫的邏輯層和物理層的對應關系如圖5所示。
2 系統實現
2.1 氣象數據的存儲
按照地理信息特征劃分,將氣象數據分為點對象和面對象。點對象包括站點位置,溫度、氣壓、風速、降水、濕度和閃電等數據;面對象包括雷達拼圖、衛星云圖等數據。氣象信息數據的空間結構如圖6所示。
利用Oracle 和 PostGIS的空間信息管理模塊共同管理這些空間數據和屬性數據,同時,利用不同的數據庫查詢語句,實現數據的檢索和分析。
系統中Oracle Spatial使用SQL數據類型SDO_GEOMETRY在Oracle數據庫存儲包含矢量信息的氣象數據。數據庫中空間信息存儲在SDO_GEOMETRY列,利用標準Oracle實用程序SQL * Loader的導入和導出。
PostGIS在對象關系型數據庫PostgreSQL上增加了存儲管理空間數據的能力,相當于Oracle的Spatial部分。PostGIS通過一種新的數據類型片,提供對大的柵格數據對象的存儲。片由以下幾個部分組成:包裹矩形框、SRID、類型和一個字節序列。系統利用raster2pgsql程序將柵格型數據轉換為SQL語句,通過psql將SQL數據導入PostgreSQL數據庫。
2.2 站點數據顯示模塊的實現
數據庫中的氣象要素表中并沒有包含地理信息數據。因此,需要建立視圖,將站點信息表和氣象要素表相結合。地理信息服務器MapServer直接訪問這個視圖就可以完成氣象要素數據的獲取,通過PHP的MapServer擴展向外發布WFS和WMS服務。此外,為了增加數據服務的靈活性,使其可以根據用戶的查詢實時生成所需的服務,這就需要在視圖中添加參數來完成此功能。氣象要素發布SQL視圖代碼如下:
SELECT VALUEDATA.IIIII,VALUEDATA.SNAME,VALUEDATA.TEMP,miss.GISDATA.geom from (SELECT
MISS.STATION.IIIII,MISS.AWS_REG.TEMP,MISS.STATI
ON.SNAME FROM MISS.STATION
INNER JOIN MISS.AWS_REG ON MISS.AWS_REG.IIIII = MISS.STATION.IIIII WHERE MISS.STATION.IIIII LIKE 'B%' and MISS.AWS_REG.OBSTIME
= TO_DATE('%OBSTIME%','YYMMDDHH24MI')
AND MISS.AWS_REG.TEMP<>999.9) VALUEDATA
left join miss.GISDATA on valuedata.IIIII=miss.GISDATA.IIIII
2.3 雷達拼圖顯示模塊的實現
雷達拼圖數據服務通過WMS方式在MapServer上發布。系統通過使用Mapfile文件配置MapServer。Mapfile文件是MapServer的標準文件,它是集成了空間數據、屬性數據和三維影像數據的接口函數,實現了MapServer核心庫對這些數據文件的訪問。Mapfile定義了MapServer中各個對象的相互關系,指明MapServer的數據源和數據的繪制樣式。Mapfile中諸多的關鍵字端構成了一個完整的Map對象。
DATA關鍵字是用來描述數據源的詳細信息。雷達拼圖的數據源是PostgreSQL數據庫中的raster數據類型。根據PostgreSQL數據庫的詳細信息,DATA關鍵字代碼如下:
DATA "PG:dbname=rad host=*.*.*.* user=**** password=***** port=5432 table=radnew where='rid=20130418001800' mode=1".
CLASS關鍵字是用來描述數據繪制的樣式。根據氣象部門對雷達拼圖樣式的定義,由多個CLASS關鍵字定義雷達的樣式,代碼如下:
CLASS
EXPRESSION ([pixel] >= 66 AND [pixel] < 76)endprint