摘要:論文介紹了目前國內廣泛應用的GIS軟件開發平臺MapInfo系列產品中的MapX組件,針對這一組件的數據結構、模型結構等方面做了深入研究。
關鍵詞:組件式GIS;MapInfo;MapX
中圖分類號:TN929.5文獻標識碼:B文章編號:1009-3044(2008)33-1492-02
Research on MapInfo-MapX
DU Wei
(Shengli Oilfield Geological Institute of Science and Technology, DongYing 207015, China)
Abstract: First of all, the thesis introduces the MapX components, which is one of MapInfo products series-popular GIS platform at present. Then it makes a deep research on MapX′s data structure, model structure and so on.
Key words: ComGIS;MapInfo;MapX
1 MapX概述
MapX是一個基于ActiveX技術的可編程控件,也是MapInfo公司的得意之作,它使用了與MapInfo Professional一致的地圖數據格式,而且還在這個遠遠小于MapInfo的控件中實現了MapInfo的大多數功能。MapX的內部提供了四十多個面向Microsoft基礎類的OLE控件,這就使得應用程序員可以使用任何支持ActiveX的程序開發環境,如VC++等,來采用嵌入MapX控件的方式,方便快捷地開發GIS應用程序。
MapInfo用工作空間(Workspace)、圖層(layer)、地物類等概念組織數據,MapX則利用自動化對象將這些概念封裝起來,相應地提供了DataSet對象、Layer對象、Feature對象等,并且考慮到數據組織中大量出現集合類型的引用的情況,對這些對象的集合也進行了封裝。與MapInfo Professional相比,MapX可以實現95%以上的MapInfo Professional的功能,但在圖形編輯編程上的開發周期可能是MapInfo Professional的3倍以上,但對于查詢和空間分析以及其它簡單的圖形編輯功能、地圖注記功能MapX在使用時是很方便的,具有系統開銷小、開發周期短、方便快捷等優點,很適合于各種中小型GIS, MIS軟件的開發。隨著COM, DCOM技術的成熟,MapX的功能將會更加完善,應用前景將會更加廣闊。
使用MapX,可以完全擁有向應用程序添加強大的地圖繪制功能的能力。可以將數據顯示為點、按主題遮蔽的區域、餅圖或條形圖等。通過在特定的半徑、矩形或特定點內組合和組織數據、執行搜索或選擇地圖圖元,可以充分發揮MapX的分析功能。
下面我們就來從空間數據結構,組件模型結構等方面詳細的分析一下MapX。
2 MapX的空間數據結構
空間數據結構,是GIS的基石,GIS就是通過這種地理空間拓撲結構建立地理圖形的空間數據模型并定義各空間數據之間的關系,從而實現地理圖形和數據庫的結合。
從橫向分析,MapX采取的空間數據結構是基于空間實體和空間索引相結合的一種結構。空間實體是地理圖形的抽象模型,主要包括點、線、面三種類型。任何點、線、面實體都可以用直角坐標點x、y來表示。點可以表示成一組坐標(x,y),對于線和面,則均被表示成多組坐標(xl,y1;x2,y2;xn,yn)。空間索引是查詢空間實體的一種機制,通過空間索引,就能夠以盡量快的速度查詢到給定坐標范圍內的空間實體及其所對應的數據。
從縱向分析,MapX的空間數據結構是一種分層存放的結構。用戶可以通過圖形分層技術,根據自己的需求或一定的標準對各種空間實體進行分層組合,將一張地圖分成不同圖層。采用這種分層存放的結構,可以提高圖形的搜索速度,便于各種不同數據的靈活調用、更新和管理。
3 MapX的組件模型結構
MapX組件的基本組成單元是Object(單個對象)和Collection(集合)。其中集合包括對象,是多個對象的組合。每種對象和集合負責處理地圖某一方面的功能。
位于頂層的是Map對象本身,其它均由Map對象繼承。Layers, DataSets, Annotations是Map對象下面的三個重要的分支。其中Layer主要用于操作地圖的圖層,DataSet用于訪問空間數據表,Annotation用于在地圖上增加文本或者符號。
4 MapX的顯著特點
1)專題地圖
將數據庫表中的特定值賦給地圖對象的顏色、圖案或符號從而創建不同的專題地圖;可創建范圍值、等級符號、點密度、獨立值、直方圖和餅圖6種方式的專題地圖;
2)可深入的地圖
通過簡單的點擊方式可瀏覽與地圖對象相連的數據信息;
3)數據綁定
地圖可通過嵌入OCX的容器與數據庫相連,并提供了幾種不同的數據綁定方式包括ZIP Code-level地理編碼法;
4)注解
可提供方向、加亮顯示特殊數據,還可加入文本、符號、表格使地圖信息更加豐富直觀;
5)圖層
顯示和控制圖層的縮放、使用或創建無縫地圖、還可支持一些特殊的應用,比如用于實時跟蹤的活動圖層和可繪制特殊圖形的用戶自定義圖層(如logo圖案);
6)柵格圖像
采用柵格圖像作為地圖的基礎圖層可使其它圖層有一個更細致的背景;
7)自動標記
自動在地圖上加入標記,同時標記屬性和顯示;
8)選擇可在地圖上拖動鼠標以在圓、矩形或特定的點上選擇一個或多個對象或記錄以供分析;
9)對象庫
可以使用FeatureFactory對象,創建、聯接或刪除點、線、區域圖形對象;
10)工具
使用MapX的標準工具或根據需要自己創建的自定義工具,用戶可通過點擊或拖拽對地圖直接進行操作;
11)地圖編輯
允許用戶添加、修改、刪除地圖上的文本、編輯區域、點等特殊對象;
12)投影與坐標系
MapX允許用戶調整地圖的顯示、用本地坐標系處理X-Y坐標數據;
13)遠程空間數據服務器
可以訪問存儲在Oracle和MapInfo SpatialWare中的遠程地圖數據。空間數據服務器如SpatialWare和Oracle等都提供了先進的查詢處理能力,提高了空間數據組織的性能。將空間數據存儲到關系型數據庫中,可以增加應用程序的靈活性,同時也要求在地圖編輯和大數據集方面做更多的工作。
5 MapX的基本屬性
1)Map
每個Map對象主要包括Datasets, Layers, Annotations三個對象集合。Map對象有一些主要的屬性,如Zoom用來設置放大級別(在地圖上顯示的大小),Rotation控制地圖的旋轉角度,CenterX和CenterY用于設置x和Y的坐標系,這要取決于地圖的投影。
Map對象的許多屬性本身又是一個對象,比如說一幅地圖由多個圖層組成,則在一個Map對象中存在一個單獨的layers集合,其中包含所有圖層的信息。
2)Layers
在MapX中,每張單獨的地圖都被表示成單獨的一個圖層,所有的圖層存儲在layers集合中。Layers集合由Layer對象組成,按順序編號為。到no Layer對象由features對象組成,features對象又是由Feature對象組成,對應于地圖中的點、線、區域或符號。
最上面一層為Layers(1), Layers(2)位于Layers(1)的下面,以次類推。最下面的圖層最先繪制,最上面的圖層最后繪制。在應用程序中,合理地安排好每層在Layers中的順序是至關重要的。比如說有兩個圖層,一層為點,一層為區域,則應將點層放到區域層的上方,否則區域會將點覆蓋。
另外,在進行地圖選擇操作時,根據要求調整圖層的順序也是十分重要的。MapX中的選擇工具總是從可選擇圖層中的最上層開始選擇,如果在地圖上的同一位置存在多個位于不同層的地圖對象,其結果是很難精確地選擇到目標對象。因此,最好將被選擇圖層提到最上層顯示。
3)GeoSets
GeoSet是在GeoManager中建立好的.GST文件,類似MapInfo中的Workspace概念,是圖層及其設置的集合,控制程序中顯示的地圖。也可以在運行階段設置GeoSet,此時將導致已經加載的所有圖層和DataSet被刪除而由GeoSet中定義的圖層所代替。如果單純地想刪除所有圖層,只需給GeoSet賦一個空字符串即可。
可以使用GeoSet Manager程序來管理GeoSet文件(*.GST)。默認情況下.GST文件存儲在...\\\\mapx\\maps目錄下,可以調用GeoDictionary Manager程序進行修改,指向用戶程序數據所在的位置。
4)Datasets
Datasets用于實現地圖與數據的綁定。舉例說明,有一個關于城市銷售情況的MS Access數據庫和一張該城市的地圖,則可以將二者綁定,在地圖上形象地顯示出各城市銷售業績的趨勢,這一點是表格數據無法做到的。建立地圖信息與屬性數據之間聯系的過程稱之為自動綁定或自動匹配(autobinding / automatching)。要實現這一過程,必須首先將地圖在GeoDictionary中注冊。
5)Annotations
Annotations集合提供了操縱地圖中文字和符號的簡單方法。Annotations位于所有其它圖層的上方并且不與任何數據連接,有點兒象MapInfo中的透明圖層。
Annotations包括以下主要的屬性與方法:AddSymbol在Annotations中增加符號,符號類型使用Map.DefaultStyle定義;AddText在Annotations中增加文本;Remove刪除特定的標注.;Type取值為miSymbolAnnotation或miTextAnnotation。
Annotations還有一個非常重要的屬性Graphic,其定義為Graphic對象,在該對象中包含了符號或文本的樣式、位置等信息,即Graphic的Caption、 Position、Style、X、Y屬性。如Annotations的Type屬性定義為miTextAnnotation,則可以定義Graphic的Caption屬性設置標注的字符串。
6)可創建對象
在MapX對象模型中,以下對象是可以被創建的:AffineTransform,BindLayer,BitmapSymbols,CoordSys,Datum,Feature,Fields,LayerInfo,Map等等。
參考文獻:
[1] 盧廷軍,黃明.基于MapInfo環境下GIS的開發研究[J].黑龍江工程學院學報,2003,17(3):27-28.
[2] 齊銳,曲韶琳.用MapX開發地理信息系統[M].北京:清華大學出版社,2003:37-39.
[3] Tony NY,MapX Developer's Guide, MapInfo Corporation.