C+AE開發(fā)方法_第1頁
C+AE開發(fā)方法_第2頁
C+AE開發(fā)方法_第3頁
C+AE開發(fā)方法_第4頁
C+AE開發(fā)方法_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、主講:蔡忠亮第五章第五章 Arc/Info環(huán)境下的環(huán)境下的GIS二次開發(fā)技術(shù)二次開發(fā)技術(shù)o一、基于工具型地理信息系統(tǒng)二次開發(fā)語言的軟一、基于工具型地理信息系統(tǒng)二次開發(fā)語言的軟件開發(fā)。件開發(fā)。VBAVisual Basic for ApplicationsAML ARC Macro Languageo二、基于有關(guān)地理信息系統(tǒng)的控件二、基于有關(guān)地理信息系統(tǒng)的控件(或構(gòu)件或構(gòu)件)的軟的軟件開發(fā)件開發(fā)MapObject(MO),ArcObject(AO),ArcEngine(AE)AO/AE關(guān)系關(guān)系什么是什么是AOo AO是ESRI公司ArcGIS 家族中應(yīng)用程序ArcMap, ArcCatalog

2、和 ArcScene的開發(fā)平臺,它是基于Microsoft COM技術(shù)所構(gòu)建的一系列COM組件集。到目前為止,AO還不是一個獨立的應(yīng)用產(chǎn)品, 是依附在ArcGIS DeskTop產(chǎn)品中的軟件開發(fā)包。也就是說,購買了ArcGIS Desktop的任何一個產(chǎn)品,不管是ArcView還是ArcInfo,都有了這套強大的AO組件集,利用AO提供的組件對象來進行應(yīng)用開發(fā)。AO 、AE 、MO 比較比較o AO - ArcObjects,有上千個對象和接口,可以在其基礎(chǔ)上開發(fā)出業(yè)界最強大的GIS應(yīng)用程序。完全支持空間數(shù)據(jù)引擎。但由于運行時需要安裝ArcGIS核心產(chǎn)品和開發(fā)時用到的擴展模塊產(chǎn)品,軟件發(fā)布成本

3、不菲,其下一代產(chǎn)品ArcGIS Engine則有望解決這個問題。o AE - ArcGis Engine是一個創(chuàng)建定制的GIS桌面應(yīng)用程序的開發(fā)產(chǎn)品。ArcGIS Engine包括構(gòu)建ArcGIS產(chǎn)品ArcView, ArcEditor, ArcInfo, 和 ArcGIS Server.的所有核心組件。使用ArcGIS Engine可以創(chuàng)建獨立界面版本(stand-alone)的應(yīng)用程序,或者對現(xiàn)有的應(yīng)用程序進行擴展。o MO - MapObjects,只有十多個對象,用于簡單的GIS應(yīng)用程序開發(fā),對空間數(shù)據(jù)引擎的支持度較低,但軟件發(fā)布成本很低。o AO是主流,AO的分析功能比MO強,AO支

4、持的格式更多,開發(fā)時的模式和可擴展性等強些,也復(fù)雜多了。AO 、AE 、MO 比較比較o MOMO使用簡單,也很不錯。 其實,如果非特別專業(yè)和特別要求,MOMO沒問題的。MOMO也可以連接geodatabase的,建議你采用AOAO, 因為MOMO現(xiàn)在基本上已經(jīng)沒有新版本了。o AOAO其實是一組COM接口,適用于任何語言,如VC+,VB,DELPHI等開發(fā)語言,而MOMO是一個產(chǎn)品。AOAO不能獨立存在,只要安裝成功ARCGIS就可以使用AOAO開發(fā),聽說今后arcgis的版本中AOAO可以單獨發(fā)行了。o AOAO是AEAE、ArcGIS Desktop、ArcGIS Server三者的集合

5、,按功能AOAO大于AEAE大于MOMO,AOAO面向桌面擴展開發(fā),需要有desktop支持,不能開發(fā)出獨立發(fā)布的程序AEAE不需要desktop支撐,包括了AOAO中的大部分庫,可以開發(fā)出獨立發(fā)布的應(yīng)用程序,MOMO功能簡單,主要面向小型的系統(tǒng)開發(fā)如地圖瀏覽,查詢系統(tǒng)等等,或結(jié)合MIS系統(tǒng)運行。AE編寫的代碼可以在同版本的AO環(huán)境下運行, AO環(huán)境下編寫的一部分對象在AE下可能無法使用?;诨贏E的的GIS二次開發(fā)(二次開發(fā)(AE+C#)o 一、安裝一、安裝C環(huán)境環(huán)境(VS2005)o 二、安裝二、安裝AE環(huán)境環(huán)境o 三、基于三、基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)AE環(huán)境配置環(huán)境配置o

6、 1 、安裝、安裝ArcGIS Engine Runtime(9.2)o 2 、安裝、安裝ArcGIS Engine Developer Kit( 9.2 )Developer Kit內(nèi)容內(nèi)容Help - 包含開發(fā)幫助文件:AODev.chm, ArcObjects.chm等 Kits - 附加的開發(fā)者素材諸如投影引擎頭文件,類別ID文件和ESRI 示例命令的源代碼 (在最新的9.2版本中,該代碼位置有所變化) Object Model Diagrams - 包括所有的PDF格式對象模型圖Samples - 包含所有示例工程文件的源代碼Utilities - 包含ESRI 對象瀏覽器等工具安裝

7、安裝ArcGIS Engine Developer Kit基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o 新建C#工程(選擇ARCGIS/Enginge工程)基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o 選擇需要引入的庫(也可以在向?qū)瓿珊笫謩右?基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o 完成后在窗口插入AE控件基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o C#中設(shè)置MapControl初始值基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o 設(shè)計器中預(yù)覽設(shè)置控件屬性Size:在NET環(huán)境下,可以直接設(shè)置控件的anchor屬性

8、(例如left,top,right,bottom),不需要寫Resize事件中調(diào)整控件位置。代碼編寫 C #的語言風(fēng)格與C+相似,IDE與VB6.0下相似,大大簡化了開發(fā)過程。一般來說,C#開發(fā)過程比VC簡單,初學(xué)者容易上手,功能上比VB強大很多。C#語言風(fēng)格1.變量類型及定義方式與C+相似。例如:int i=0;double d=0.00;2.不使用指針,改用委托。System.Drawing.Point pt = new System.Drawing.Point();3.不需要delete釋放。4.事件使用委托。m_MapView.SelectFeatureEvent += new Map

9、View.SelectFeatureEventHandler(SelectFeature);基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o C#開發(fā)環(huán)境(屬性編輯)基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o C#開發(fā)環(huán)境(對象事件)基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)o C#開發(fā)環(huán)境開發(fā)環(huán)境(對象事件對象事件)private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)/處理地圖鼠標

10、事件 switch (m_CurMapEventStyle)/判斷地圖時間類型,地圖瀏覽or編輯or分析 case MapEventStyle.MapView: m_MapView.MapEvent(e); break; case MapEventStyle.MapEdit: m_MapEditor.MapEvent(e); break; case MapEventStyle.MapAnalysis: break; default: break; AE支持的數(shù)據(jù)格式支持的數(shù)據(jù)格式基于文件的數(shù)據(jù)集基于文件的數(shù)據(jù)集 1.Coverages 2.Shapefiles 3.柵格柵格 4.不規(guī)則三角網(wǎng)

11、(TIN)5.影像(多種各式) 6.矢量產(chǎn)品的格式文件 7.計算機輔助設(shè)計文件(多種格式) 8.地理標志性語言(很多的概述) 9.表(很多的格式) 10.直接讀取100+矢量和柵格柵格格式 11.可擴展標示語言(XML) AE支持的數(shù)據(jù)格式支持的數(shù)據(jù)格式Geodatabase 數(shù)據(jù)集1.帶有其特殊類型的DB2 2.具有其特殊類型的Informix 3.結(jié)構(gòu)化查詢語言SQL Server 4.Oracle 5.Oracle with Spatial or Locator 6.個人Geodatabase(Microsoft Access) AE支持的數(shù)據(jù)格式支持的數(shù)據(jù)格式o常用數(shù)據(jù)類型介紹1.Sh

12、apefile:一種基于文件方式存儲GIS數(shù)據(jù)的文件格式。至少由.shp,.dbf,.shx三個文件作成,分別存儲空間,屬性和前兩者的關(guān)系。是GIS中比較通用的一種數(shù)據(jù)格式。 2.Coverage:一種拓撲數(shù)據(jù)結(jié)構(gòu),一般的GIS原理書中都有它的原理論述。數(shù)據(jù)結(jié)構(gòu)復(fù)雜,屬性缺省存儲在Info表中。目前ArcGIS中仍然有一些分析操作只能基于這種數(shù)據(jù)格式進行操作。 3.Geodatabase:ArcInfo發(fā)展到ArcGIS時候推出的一種數(shù)據(jù)格式,一種基于RDBMS存儲的數(shù)據(jù)格式,其有兩大類:1.Personal Geodatabse 用來存儲小數(shù)據(jù)量數(shù)據(jù),存儲在Access的mdb格式中。2.A

13、rcSDE Geodatabse 存儲大型數(shù)據(jù),存儲在大型數(shù)據(jù)庫中Oracle,Sql Server,DB2等。可以實現(xiàn)并發(fā)操作,不過需要單獨的用戶許可。 基于基于AE二次開發(fā)二次開發(fā)GIS系統(tǒng)系統(tǒng)(AE+C#)AE能實現(xiàn)的功能能實現(xiàn)的功能通過AE可完成絕大部分的GIS功能: 1.空間數(shù)據(jù)的顯示、查詢檢索、編輯和分析;2.創(chuàng)建各種專題圖和統(tǒng)計報表;3.高級的制圖和輸出功能;4.空間數(shù)據(jù)管理和維護;AE主要模塊主要模塊1 3D Analyst Extension -用于3D可視化和表面建模的組件對象;2 Application Framework -讓開發(fā)者在ArcMap和ArcCatalong

14、中通過程序來定制用戶界面。3 ArcCatalog - 能夠讓開發(fā)者擴展數(shù)據(jù)對象模型并集成定制對象和視圖到ArcCatalog應(yīng)用框架中。4 ArcMap - 提供了ArcMap應(yīng)用程序的核心功能,用于操作和顯示地圖文檔。AE的主要模塊的主要模塊5 ArcMap Editor- 包括了對象編輯器擴展組件對象,要做編輯開發(fā)來這吧。6 Display - GIS的一個重要應(yīng)用就是數(shù)據(jù)表現(xiàn),對國內(nèi)的許多最終用戶更是熱衷于此,利用這里包含的對象可以完成諸如地圖符號顯示、圖形編輯反饋軌跡、坐標轉(zhuǎn)換和屏幕控制等功能。7 Geocoding - 主要用于創(chuàng)建和管理地理編碼服務(wù)等。AE的主要模塊的主要模塊8

15、Geodatabase- AE開發(fā)中一個不可或缺,畢竟GIS的應(yīng)用都是圍繞數(shù)據(jù)展開的,所以有關(guān)的GIS數(shù)據(jù)創(chuàng)建、加載、管理和存儲等都是通過這里的對象進行的。9 Geometry- 不管是要素還是圖形,涉及到空間信息的獲取和應(yīng)用來這兒找吧。10 IMS -提供了連接到ArcIMS服務(wù)器并訪問ArcIMS圖象和要素服務(wù)的功能。11 NetWork- 提供了網(wǎng)絡(luò)創(chuàng)建、管理和完成分析操作等功能,打算定制和開發(fā)特定網(wǎng)絡(luò)應(yīng)用可以利用NetWork對象。AE的主要模塊的主要模塊12 OutPut -有入就有出,如果想把制作好的地圖輸出怎么辦,通過這里提供的對象來完成吧。13 Raster - 用于訪問和管理

16、柵格數(shù)據(jù)的AO對象。14 Spatial Reference- 用于完成空間參考的設(shè)置。15StreetMap USA Extension-這個和國內(nèi)的用戶關(guān)系不大。AE核心組件庫核心組件庫o System庫Sysytem庫是ARCGIS框架中最底層的庫,提供一些可以被其他組件庫使用的組件,如數(shù)組(Array)、集合(Sets)等。o SystemUI庫SystemUI庫定義了一些被ARCGIS用戶界面組件所使用的對象,如(ICommand,ITOOL)。o Geometry庫Geometry庫包含了核心的幾何形體對象,如點、線、面。還包含了空間參考對象,如幾何坐標系統(tǒng)、投影坐標系統(tǒng)和地理變換

17、對象。AE核心組件庫核心組件庫o Display庫 Display庫主要包含了輸出在設(shè)備上圖形所需要的組件對象,包含Display、Color、Symbol等對象。o DisplayUI庫DisplayUI提供具有可視化界面的對象用于輔助圖形顯示,如(Property Page和StyleGalleryCalss對象)。o Carto庫 Carto庫包含為了數(shù)據(jù)顯示和服務(wù)的各種組件對象。如(MapElements、Layers)。AE核心組件庫核心組件庫o DataSourceFile庫DataSourceFile庫的對象用于打開文件格式的地理數(shù)據(jù),通過使用特定的WorkSapceFactor

18、y(工作空間工廠)對象打開數(shù)據(jù)。o DataSourceRaster庫 DataSourceRaster庫的對象昂用于獲取保存在多種數(shù)據(jù)源中的柵格數(shù)據(jù)。o GeoDataBase庫GeoDataBase庫包含的對象用于操作地理數(shù)據(jù)庫的。包含(WorkSpace)、DataSet,還包括幾何網(wǎng)絡(luò)、拓撲、TIN、版本對象、數(shù)據(jù)轉(zhuǎn)化等。AE接口編程接口編程oAO是基于COM的 。oCOM的概念:對象類,對象,接口,方法等。在OMD(對象模型圖)中有三類class,分別是抽象類(AbstractClass)、組件類(CoClass)和普通類(Class)。抽象類的主要目的是為它的子類定義公共接口,一個

19、抽象類將把它的部分或全部實現(xiàn)延遲到子類中,因此,一個抽象類不能被實例化。一個組件類對象可以被直接創(chuàng)建,普通類對象雖然不能直接創(chuàng)建,但它可以作為其它類的一個屬性或者從其它類的實例化來創(chuàng)建。AO中的Dataset或Geometry classes是抽象類的示例,一個Geometry類型對象不能被創(chuàng)建,但是一個Polyline可以被創(chuàng)建。這個Polyline對象實際上在抽象類的基礎(chǔ)上實現(xiàn)了Geometry中定義的接口,因此在基類對象中被定義的接口可以從coclass來訪問。AE接口編程接口編程在OMD中的關(guān)系類型主要有類型繼承(Type inheritance)、創(chuàng)建(Instantiation)、

20、組成(Composition)以及關(guān)聯(lián)(Associations)等。類型繼承類似于c+的繼承機制,實際上就是繼承完全繼承了超類的接口,這點可以利用AO對象瀏覽器工具清楚的看到,而組成關(guān)系指的是對象間的主次關(guān)系,也就是說主體的生命存在與否決定著次體的存在與否。AE接口編程(接口編程(C#代碼)代碼)IMap pMap =New MapClass(); pM =”地圖名稱為-Tour”. pMap.ClearLayers(); pMap.Clear();/ Error AE接口編程(接口編程(C#代碼)代碼)o 在COM中對對象的訪問是通過接口來完成,因此不能象許多可視化控件那樣,

21、可以直接通過其名稱來調(diào)用屬性或執(zhí)行其方法。那么這句其實就是定義了一個接口變量(準確地講應(yīng)該是一個指向接口的指針變量才對,C#不使用指針。)有了這個接口變量還不行,因為接口是定義在對象上的,那么下來的步驟應(yīng)該是產(chǎn)生一個對象,而對象來自類。AE接口編程(接口編程(C#代碼)代碼)IMap pMap =New MapClass(); 在這句中不單純只是實例化出一個Map對象,并且將上句的pMap接口變量做為了該對象的缺省接口??梢酝ㄟ^這個接口來對地圖名進行修改,或者調(diào)用ClearLayer方法來刪除掉該地圖中的所有圖層了。代碼最后一句的執(zhí)行情況會出錯,原因很簡單,不同的接口中的方法或?qū)傩灾荒芡ㄟ^其接口來訪問,而Clear方法屬于Map類的另外一個接口IActiveView所有。AE接口編程(接口編程(C#代碼)代碼)可以通過查詢接口(Query Interface)來切換到IActiveView上。代碼如下:IActiveView pView=pM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論