基於MapX的GIS動態操作與實現
摘要:分析了GIS和MapX的基本技術,提出了GIS資訊顯示系統中地圖對象動態添加、刪除以及地圖整體顯示效果適時變化的實現方法。結合基於MapX的電力網路設定顯示系統來說明這些技術。
關鍵詞:GIS MapX 動態操作 添加 刪除
地理資訊系統GIS(Geographic Information System)是收集、管理、查詢、分析、操作以及表現與地理相關的資料資訊的電腦資訊系統,能夠為分析、決策提供重要的支援平台。近年來,GIS廣泛應用於基礎設施(道路、電力等)的規劃、自然資源的開發和利用、城市的發展規劃、人口遷移與安置以及交通工具有定位導航和定位等複雜的地區開發,並取得了良好的效益。
隨著GIS的迅猛發展,GIS越來越多地應用於資訊顯示系統的設計和實現,在資訊顯示系統中動態資訊互動顯示是一個重要內容。例如在地區電力網路的管理方面,一個單獨的變電站可以滿足一定地區的供電需求。某個地區是否需要增加一個變電站以滿足該地區電力供應的需求,增加這個變電站後整個電力網路的覆蓋範圍達到什麼水平,都可以通過動態GIS類比實現,達到輔助決策的效果。
本文以地區電力設施配置顯示系統的設計為背景,說明如何?電力設施的添加、刪除以及操作完成後適時顯示系統的整體態勢資訊。
1 MapX簡介
MapX是MapIofo公司向使用者提供的具有強大地圖分析功能的32位OCX控制項。編程人員在開發過程中可以選用自己最熟悉的可視化開發環境,輕鬆地將地圖功能嵌入到應用中,並且可以脫離MapInfo的軟體平台運行。同時,MapX採用基於MapInfo Professional的相同地圖化技術,可以實現MapInfo Professional具有絕大部分地圖編輯和空間分析功能;MapX提供了各種工具、屬性和方法,非常容易實現這些功能,因此近年來得到了迅猛發展。
1.1 MapX的空間資料結構
空間資料結構是GIS的基石。GIS通過這些地理空間拓撲結構建立地理圖形的空間資料模型並定義各空間資料之間的關係,從而實現地理圖形和資料庫的結合。1所示,地理資訊系統採用分層管理的方法管理地圖資料,同一類型的空間對象存放在相同圖層中。
1.2 MapX物件模型
MapX控制項採用物件導向的方法處理地理資訊系統,對地理資料的操作實際上是對各類對象的操作。MapX的基本組成單元是Object(單個對象)和Collection(集合)。其中集合包括對象,是多個對象的組合,每種對角與集合負現處理地圖某一方面的功能。MapX主要包括以下對象:
(1)Map
Map是MapX的頂層屬性,每個Map對象主要包括Datasets、Layers、Annotations三個對象集合。
Map對象包括一些主要的屬性,如Zoom用來設定放大層級(在地圖上顯示的大小),Rotation控制地圖的旋轉角度,CenterX和CenterY用於設定地圖顯示視窗的中心座標。
(2)Layers
在MapX中,地理資訊按照圖層的集合(Layers Collection)表示,每張單獨的地圖都被表示成單獨的圖層,所有的圖層儲存在Layers集合中。Layer對象由Features對象組成,Features對象又是由Feature對象組成,Feature對應於地圖中的點、線、面以及符號等地圖實體。
(3)GeoSet
GeoSet是在GeoManager中建立的。GST檔案,類似MapInfo中的WorkSpace概念,是圖層及其設定的集合,用於控製程序中顯示的地圖。
(4)Datasets
在MapX中,屬性資料的操作主要通過資料繫結實現,Datasets用於實現地圖與資料的綁定。資料繫結的資料來源可以是DAO、ADO、ODBC資料來源、RDO、MapInfo Table檔案,還可以是一個規定了格式的文字檔。要綁字一個資料來源,首先要指定所綁定的圖層,然後需要指定與圖層中地圖對象相匹配的關鍵字段。
(5)Annotations
Annotations集合提供了操縱地圖中文字和符號的簡單方法。Annotations位於所有其它圖層的上方並且不與任何資料連線。
圖2 對象添加
2 對象動態添加
在地區電力網路設定顯示系統中,一個單獨的變電站可以滿足一定地區的供電需求。某個地區是否需要增加一個變電站,以滿足該地區供電需求,增加了這個變電站後整個電力網路的覆蓋範圍達到什麼水平。所以在系統中添加了某一型號的變電站後,要求該變電站的作用範圍與整個地區存的電力覆蓋範圍結合起來,形成並動態顯示整個地區的電力網路覆蓋範圍,以此判定該變電站建設的必要性以及該地區的電力網路覆蓋範圍是否能夠滿足供電需求。
變電站的建設表現在GIS顯示系統中就是在地圖上增加一個具有某些屬性的地圖對象。系統首先把各型號變電站績效參數存入資料庫中,使用者在系統介面上可以選擇需要修建的變電站型號,系統串連資料庫,讀取相應的屬性資訊,然後採用按一下滑鼠的形式把所選對象安裝在按一下滑鼠的位置,並利用MapX計算顯示地區電力覆蓋範圍。
該功能的實現採用重畫的方式。即系統首先刪除地圖上現存變電站的整體作用範圍,然後讀取資料庫中需要添加對象的基本屬性和地圖上現存變電站的屬性資料,這些資料為依據把地圖上現存的以及需要安裝的進行合并;合并後的整體作用範圍添加到對應圖層並在對應位置添加標示即可。最後在圖上顯示的就是地區電力網路的整體覆蓋範圍。
系統採用臨時圖層lyrobj存放安裝對象(變電站)以及對象的整體作用範圍,用Num存放臨時圖層上電站的數目(即地區現存變電站的數目,obj(i)表示第I個對象),對象pt(i)存放第I個電站的名稱、作用距離、地理座標等屬性資訊。實現地圖對象添加的演算法2所示。
3 對象動態刪除
一個單獨的變電站可以滿足一定地區的供電需求,對於實際的某些電站,如果遭遇自然災害或者根據需要予以拆除,那麼表現在地圖上就是該地圖對象(電站)會被刪除,刪除了該電站後,整個地區的電網覆蓋範圍將隨之發生變化。電力管理部門可以此確定在發生意外的情況下,整個電力網路是否仍可以滿足供電需求。
圖3 對象刪除
整個實現過程採用臨時圖層lyrobj存放安裝對象(變電站)以及對象的整體作用範圍,用Num存放臨時圖層上電站的數目(obj(i)表示第i個對象),對象pt(i)存放第i個電站的名稱、作用距離、地理座標等屬性資訊。
該功能的實現:首先判斷選中的需要刪除的地圖對象(變電站)obj(k),並刪除數組pt()和obj()中對應需要刪除的項;然後刪除需要拆除的電站的標示以及本地區所有電站的覆蓋範圍;隨後讀取數組pt()中對應電站的屬性值,重畫除需要刪除的對象以外所有電站的覆蓋範圍,把各個對象的作用範圍進行合并,並把合并後的整體作用範圍添加到對應圖層,在對應位置添加標示。這樣就會得到拆除一個電站後本地區電力供應的覆蓋範圍。實現地圖對象刪除的演算法3所示。
在實際的GIS資訊顯示系統中,對象的動態操作是一個重要方面。利用本文介紹的這種方法開發的電力網路設定顯示系統效率高、即時性強,為地區電力網路的高效配置提供了方便快捷的保障。本系統雖然基於MapX實現,但其實現地圖對象動態互動操作的思路對WebGIS以及其他領域中地圖對象的動態操作也有很強的借鑒意義。