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