摘 要:MapGis系統(tǒng)不僅是一個Gis基礎軟件,而且是用戶在實際應用中面向具體領域的工具,該方案是基于MapGis平臺下對油田的站數(shù)據(jù)進行及時動態(tài)更新,從而監(jiān)控油氣管道設備及檢測設備的情況,可用來管理大型的網(wǎng)狀設施,該方案具有通用性,實時性等特點,較好的滿足了管網(wǎng)狀設施在監(jiān)控方面的需求。
關鍵詞:動態(tài)監(jiān)控;數(shù)據(jù);MapGis;地理信息系統(tǒng)
中圖分類號:TP文獻標識碼:A文章編號:1672-3198(2008)12-0337-02
1 MapGis-IMS介紹
依托地理信息系統(tǒng)的動態(tài)數(shù)據(jù)監(jiān)控按照地理信息系統(tǒng)軟件工程的思路和方法,利用GIS技術,依托中地數(shù)碼成熟的GIS平臺,建立在新一代的面向網(wǎng)絡的超大型分布式地理信息系統(tǒng)基礎之上。采用面向服務的設計思想、多層體系結構,實現(xiàn)了面向空間實體及其關系的數(shù)據(jù)組織、高效海量空間數(shù)據(jù)的存儲與索引、大尺度多維動態(tài)空間信息數(shù)據(jù)庫、三維實體建模和分析等功能,并具有TB級空間數(shù)據(jù)處理能力,可以支持局域和廣域網(wǎng)絡環(huán)境下空間數(shù)據(jù)的分布式計算,支持分布式空間信息分發(fā)與共享,網(wǎng)絡化空間信息服務,能夠支持海量、分布式的空間地理信息系統(tǒng)基礎設施建設。
我們運用開發(fā)平臺是MAPGIS_IMS7.0. 它是建立在Internet 上的具有四層體系結構的WEBGIS系統(tǒng)。它的主要任務是建立WebGis 服務器,在網(wǎng)上發(fā)布地理信息,讓人們在網(wǎng)上享受更多相關的地理空間信息。
1.1 MAPGIS-IMS 基本原理
(1)首先,設計一個可以交互的Web頁(可以應用ASP.NET、ASP、JSP等),通過此Web頁,向Web服務器提交有關GIS服務的請求;
(2)此請求會包含對地圖數(shù)據(jù)的請求,包括查詢等,請求會通過Web服務器提交給GIS應用服務器;
(3)GIS應用服務器可以使用幾種技術,CGI、COM、Java Applet或者.net技術、Web Service技術,通過這些組件包裝已有的GIS軟件,獲取客戶端的請求,將用戶需求轉化為具體的操作,返回需求的數(shù)據(jù)(一般是一個地圖圖片或者查詢的數(shù)據(jù)集);
(4)Web服務器獲取了GIS應用服務器返回的圖片,然后作為一個Web頁返回給客戶。其基本原理如圖1所示:

1.2 MAPGIS-IMS 數(shù)據(jù)管理
1.2.1 空間數(shù)據(jù)庫
空間數(shù)據(jù)庫是指GIS在計算機物理存儲介質上存儲的與應用相關的地理空間數(shù)據(jù)的總和,一般是以一系列特定結構的文件的形式組織在存儲介質之上的。在MAPGIS中空間數(shù)據(jù)庫的管理將利用MAPGIS空間數(shù)據(jù)引擎進行存儲,以實現(xiàn)對數(shù)據(jù)模型的定義、管理、維護和存儲。數(shù)據(jù)庫中不僅存儲地理要素的屬性數(shù)據(jù),還有描述地理要素空間分布位置的空間數(shù)據(jù)。
1.2.2 網(wǎng)絡空間數(shù)據(jù)庫
對于WEBGIS來說將使用網(wǎng)絡空間數(shù)據(jù)庫,它的建立是實現(xiàn)空間數(shù)據(jù)分布式管理的核心基礎。為了實現(xiàn)空間數(shù)據(jù)存取的設備無關性、位置無關性,MAPGIS從軟件結構上,把數(shù)據(jù)管理功能獨立成一個功能層,所有的數(shù)據(jù)存取均通過該功能層。在該功能定義了工作區(qū)的概念,并在此基礎上,定義了對空間實體相關的各種數(shù)據(jù)進行添加、刪除、更新、檢索、判斷等操作,這些概念和操作通過API函數(shù)接口反饋給上層程序。MAPGIS數(shù)據(jù)管理層向上提供工作區(qū)概念以及相關接口,向下則通過數(shù)據(jù)轉換程序對其他GIS系統(tǒng)實現(xiàn)數(shù)據(jù)交換,通過本地數(shù)據(jù)管理程序實現(xiàn)存取本地空間數(shù)據(jù)文件,通過空間數(shù)據(jù)庫引擎存取網(wǎng)絡數(shù)據(jù)。如圖3所示:
2 關鍵技術
2.1 AJAX ENGINE層
與傳統(tǒng)的Web應用開發(fā)方式比較,系統(tǒng)在瀏覽器端添加了一個層——Ajax engine,由用戶產(chǎn)生的頁面事件交由這個引擎處理,它負責向服務器發(fā)送請求,服務器傳回的是旅游信息業(yè)務數(shù)據(jù)而非HTML,引擎接受之后,進行渲染,通過瀏覽器的解析在頁面上顯示出來。也就是將事件監(jiān)聽與頁面渲染的工作交給了瀏覽器,而后臺服務器只負責業(yè)務邏輯的處理。
在Ajax engine方式下,HTTP基于請求/響應的范式仍然沒有變化,但是在有XmlHttpRequest對象(Ajax engine的核心)的支持下,由服務器解析游客的請求再進行事件發(fā)配,之后返回刷新到用的HTML頁面。在新的方式下,由于事件的監(jiān)聽和處理在瀏覽器內(nèi)部實現(xiàn),它的反應周期可以被縮短,事件的處理力度可以更方便的做到更細,而且由于支持異步方式發(fā)送Request請求和接受Response響應,用戶事件的控制有了更大的靈活性。
2.2 JavaScript技術
JavaScript是一種基于對象和事件驅動并具有安全性能的腳本語言。使用它的目的是與HTML超文本標記語言、Java小程序一起實現(xiàn)在一個Web頁面中鏈接多個對象、與Web客戶交互,從而開發(fā)客戶端的應用程序。它是通過嵌入或調入在標準的HTML語言中實現(xiàn)的。它的出現(xiàn)彌補了HTML語言的缺陷,它是Java與HTML折衷的選擇,具有簡單性、動態(tài)性、安全性和跨平臺性。
2.3 VML技術
VML的全稱是Vector Markup Language(矢量可標記語言),矢量的圖形,意味著圖形可以任意放大縮小而不損失圖形的質量,這在制作地圖上有很大用途。VML相當于IE里面的畫筆,能實現(xiàn)你所想要的圖形,而且結合腳本,可以讓圖形產(chǎn)生動態(tài)的效果。VML是微軟1999年9月附帶IE5.0發(fā)布的,在本方案的設計過程中對于鼠標交互操作的部分代碼就是用VML完成的。
VML 以最簡潔的標記代碼,在Web 頁快速繪制輸出矢量圖型(線段、圓形、矩形、圓矩形、矢量圖像、曲線、多邊形、弧型)、并修飾這些圖形的外觀效果,如邊框、陰影、填充、背景、漸變、箭頭、3D 等等。能井然有序地跟HTML 超文本緊密結合,或攙雜在HTML 標簽內(nèi),或把HTML 標簽囊括其中充當內(nèi)容。幾乎支持CSS2 樣式表所有的樣式屬性(如,寬度、高度、3D-XYZ 位置、鼠標形狀、裁剪、排版縮進、縮放等等)。
2.4 胖客戶端瘦服務器
系統(tǒng)采用強客戶端設計,大量的邏輯坐標轉換和圖片顯示拼接的計算都放在客戶端,服務器端主要處理旅游信息資源的調度,更進一步處理查詢等復雜操作,負擔大大減輕了,其承載客戶量,服務器速度和質量都有很大提升。解決了超大矢量地圖顯示慢的問題。服務器端實時地顯示一張大數(shù)據(jù)量的旅游信息矢量地圖(如上G的矢量數(shù)據(jù))肯定是很消耗資源和時間的,即使是對顯示進行了優(yōu)化,如抽稀地圖要素,
3 具體實現(xiàn)
3.1 動態(tài)注記設置
在MapGis系統(tǒng)里面,所有的信息都是以要素的數(shù)據(jù)結構來存儲的,每個要監(jiān)控的管道或設施可以看作是二維平面上的一個點,在出圖時作為一個點要素來考慮,在定義數(shù)據(jù)結構的時候,添加一個雙精度字段,來存儲監(jiān)控的值.然后在索引文件中打開這個屬性,以便于在圖中顯示.
3.2 從數(shù)據(jù)庫中讀取數(shù)據(jù)

油田管道在運行的過程中會生成海量數(shù)據(jù),而且動態(tài)更新很快,油田的行業(yè)性質決定了管道及設施的實時性要很強才能具備高度的安全性,以避免重大事故的發(fā)生,及時報警.硬件設施從測量設備中每隔30秒讀取一次數(shù)據(jù),然后寫到SQL Server商用數(shù)據(jù)庫中,主要代碼是讀取數(shù)據(jù).
3.3 利用Ajax查詢數(shù)據(jù)
Ajax技術最大的有點就是異步傳輸,異步更新數(shù)據(jù)可以避免頁面的不斷刷新,從而便于觀察,也保證數(shù)據(jù)的采集的高效性,最關鍵的減輕了服務器的負擔.主要是利用MapGis封裝好的函數(shù),關鍵代碼如下:
function HttpGetAjaxClass2(url)
{
var result;
var reqobj = new HttpRequest();
reqobj.onreadystatechange = function(){
if(reqobj.readyState == 4){
if(reqobj.status == 200)
result = reqobj.responseText;
else
result = \"請求出錯\n服務器信息:\" + reqobj.statusText;
}
else{
result = \"數(shù)據(jù)加載中……\";
}
}
reqobj.open(\"GET\",url,1);
reqobj.send(1);
return result;
}
3.4 定時更新數(shù)據(jù)
實時監(jiān)控最核心的部分是數(shù)據(jù)的及時更新,本方案提出的解決辦法是利用Ajax傳輸數(shù)據(jù)后,把點要素的地理信息讀取出來,然后把地理信息數(shù)據(jù)庫中存儲的邏輯坐標通過函數(shù)轉換成為屏幕坐標,調用更新要素函數(shù),然后再在前臺頁面調用腳本的setinterval屬性實現(xiàn)定時刷新,從而保障了數(shù)據(jù)的動態(tài)監(jiān)控.
參考文獻
[1]吳信才.地理信息系統(tǒng)原理與方法[M].北京:電子工業(yè)出版社,2002.
[2]黃杏元.地理信息系統(tǒng)概論[M].北京:高等教育出版社,2001.
[3]韓延峰.即用即查JavaScript核心對象參考手冊[M].北京:人民郵電出版社,2007.