基于組件GIS的應用系統開發技術 Application Programming Technologies Based on COM GIS
摘要:利用組件GIS技術和MapX組件來開發GIS應用系統是一種實用的地理信息系統開發技術。文中重點討論了MapX組件及應用MapX進行應用系統開發的關鍵技術,最后給出一個應用該技術的系統實例。
關鍵字:地理信息系統(GIS);組件;MapX;應用系統開發
Abstract: Using COM GIS technology and MapX component to develop GIS application system is a practical development technology of geographical information system. This paper Emphasized the MapX component and the key technology of developing application system by using MapX component. At the last, offered an instance which using COM GIS technology.
Keywords: GIS;Component;MapX; Application system development
1 前言
在計算機技術和應用全面普及的時代,越來越多的工作依賴計算機應用系統的支持和幫助,其中大多數的應用系統都是以數據處理為核心,這些應用要求計算機管理的信息不限于各種屬性數據,還要有空間信息。實際的空間信息,具有結構復雜、數據量大等特點,一般的圖形管理系統、數據庫系統都難以勝任,這就促使地理信息的管理成為一門單獨的課題,直接導致地理信息系統的出現。地理信息系統(簡稱GIS)是由計算機硬件、軟件、地理空間數據和管理人員共同組成的集合,以有效地獲取、存儲、更新、管理、分析和顯示各種形式的與空間有關的信息。近年來,地理信息系統的應用和發展尤為引人注目。據悉,現實生活中的85%的信息與地理信息有關,從地理空間的角度來處理屬性數據能得到意想不到的效果,例如可以提高屬性數據處理的可視化程度;可以通過GIS的空間分析工具挖掘出屬性數據間的內在規律等。GIS的應用已涉及到生活的方方面面,走入千家萬戶。
2 GIS應用系統開發技術
GIS應用的不斷深入,導致GIS應用技術的不斷發展,從目前的GIS應用系統的開發過程來看,主要存在下面三種GIS應用系統開發技術:
(1) 用專用編程工具對GIS功能平臺軟件進行二次開發,定制滿足用戶要求的應用系統。如使用MapBasic語言編寫基于GIS軟件MapInfo上的應用程序。一般為了操作的方便和功能的全面,采用集成化地圖技術(Integrated Mapping)在一些編程軟件(如Delphi)的應用程序窗口中通過OLE技術集成一個GIS地圖窗口,完成應用系統要求的地理空間數據的操作功能。這種技術已趨于成熟,但其主要缺點是不能脫離GIS平臺軟件的支持,難以滿足計算機系統網絡化發展的要求。
(2) Internet技術應用于GIS開發的WebGIS技術。GIS通過WWW功能得以擴展,真正成為一種大眾使用的工具。從WWW的任意一個節點,Internet用戶可以瀏覽WebGIS站點中的空間數據、制作專題圖,以及進行各種空間檢索和空間分析,提高了GIS的產業化和大眾化,其主要特點是信息共享和跨平臺的特性,但因其遭遇網絡應用瓶頸,理論和技術有待進一步完善。
(3) 利用組件技術來開發GIS應用系統。組件具有面向對象、語言無關等特性,把GIS的各
1
大功能模塊劃分成幾個組件,每個組件完成不同的功能,用戶可根據實際需要選擇購買和安裝所需的GIS組件。各個GIS組件之間,以及GIS組件和其它非GIS組件之間,可以方便地通過可視化開發工具集成起來,形成兼有屬性數據處理和空間數據處理的應用系統。GIS組件產品在功能上絲毫不比傳統的GIS軟件遜色,而且可以象搭積木一樣,方便地嵌入到通用的開發環境中實現GIS功能,具有適應性強,GIS功能強大,開發簡捷,使用靈活等特點,被廣泛應用于GIS應用系統開發中。
3 MapX組件
3.1 MapX簡介
MapX是具有強大地圖分析功能的組件GIS產品。由于它是一種基于Windows操作系統的標準控件,因而能支持絕大多數標準的可視化開發環境如Delphi、PowerBuilder、Visual C++、Visual Basic等。編程人員在開發過程中可以選用自己最熟悉的開發語言,輕松地將地圖功能嵌入到應用中,并且可以脫離MapInfo的軟件平臺運行。利用MapX,能夠簡單快速地在應用程序中嵌入GIS功能,增強應用系統的空間分析能力。MapX采用基于MapInfo Professional的相同的地圖化技術,可以實現MapInfo Professional具有的絕大部分地圖編輯和空間分析功能,MapX通過提供各種工具、屬性和方法,使實現這些功能非常容易。
3.2 MapX組件的模型結構
MapX組件的基本組成單元是Object(單個對象)和Collection(集合)。其中集合包括對象,是多個對象的組合。每種對象和集合負責處理地圖某一方面的功能。
圖1 MapX組件的模型結構
由圖1可以看出,位于頂層的是Map對象本身,其它均由Map對象繼承。Layers、DataSets、Annotations是Map對象下面的三個重要的分支。其中Layer主要用于操作地圖的圖層,DataSet用于訪問空間數據表,Annotation用于在地圖上增加文本或者符號。
4 應用MapX開發的關鍵技術
4.1 地圖數據綁定
數據捆綁是將不同來源的數據對應到地圖層的過程,捆綁結果會產生一個Dataset對象,Dataset對象的集合組成Datasets Collection,它定義了Map對象的數據集屬性。 你可以通過Datasets將不同來源的數據捆綁到地圖上實現圖文互動,或創建專題圖,如下例SQL Server數據的捆綁及專題分析:procedure TMapForm.ODBC1Click(Sender: TObject);
var
param: ODBCQueryInfo ;
ds: Dataset; //定義數據集
Datafields: Fields; //定義數據域
begin
param.SqlQuery := 'select * from '社區''; //選擇SQL Server數據庫中的社區表
param.DataSource := 'MapHZ'; //ODBC 數據源名
param.ConnectString := 'ODBC;'; //定義ODBC連接
Datafields.Add('NAME','NAME', miAggregationAuto,miTypeNumeric); //添加數據域NAME
ds := Map1.Datasets.Add(miDataSetODBC, param, unassigned, unassigned, unassigned, '社區', Datafields, unassigned); //將SQL Server數據捆綁到Mapinfo的社區表
ds.Themes.Add(miThemeRanged, 'NAME', 'MyTheme'); //添加一個范圍專題圖
end;
4.2 讀取屬性值
有三種方法:
(1) 由Layer對象的KeyField屬性來設立要讀取屬性值的字段名。接著,由Feature對象的KeyValue讀取此行的屬性值。
(2) 將圖層加入到Datasets,由Datasets對象的Value(x,y)屬性,通過設置行號,列號來獲得屬性值。
(3) 將圖層加入到Datasets,之后由RowValues(ftr)獲取整行的值。
4.3 操縱地圖對象
可以簡單地加載一個GeoSet文件,給Layers對象集合賦予具體的內容,隨之在Map對象中就能看到地圖顯示。GeoSet文件類似MapInfo中的工作空間,MapX有Geoset文件的編輯器GeosetMangater.exe,用戶可在編輯器中組合及設置圖層,然后保存生成一個 *.gst 文件直接調入Map對象。也可以通過Layers對象的Add 或 Remove 方法添加或移走圖層,如:
Map1.layers.Add(FileName); // 添加圖層,FileName為文件全路徑名
Map1.Layers.Remove(3); // 移走地圖第三層
Layers對象由一組Layer對象組成,通過Layer對象的Features和Selection對象集合你可以操縱(添加和刪除)和選擇圖層上的圖形目標,如:
Map1.Layers.Item(1).AddFeature(Newobj); //將新建對象Newobj添加到圖層一
4.4 原型示例系統
利用Delphi作為開發前端,嵌入MapX實現地圖操作功能,SQL Server為數據庫管理系統的銷售客戶定位的GIS應用部分的模塊界面如圖2所示。
5 結束語
本文介紹了GIS應用系統開發的主要方法,特別闡述了組件GIS技術的特點和應用。在實際的系統開發中,本著“適用的就是最好的”的道理,選擇物美價廉的組件產品來實現GIS功能,已成為中小GIS應用系統的首選方案。
圖2 小區客戶快速定位示例
評論
查看更多