第三章ArcGISEngine基礎(chǔ)_第1頁
第三章ArcGISEngine基礎(chǔ)_第2頁
第三章ArcGISEngine基礎(chǔ)_第3頁
第三章ArcGISEngine基礎(chǔ)_第4頁
第三章ArcGISEngine基礎(chǔ)_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第三章第三章 ArcGISArcGIS Engine Engine 基礎(chǔ)基礎(chǔ)第三章 ArcGIS Engine基礎(chǔ)礎(chǔ)l 3.1 3.1 基于基于COMCOM接口編程基礎(chǔ)接口編程基礎(chǔ)l 3.2 3.2 理解對象模型圖(理解對象模型圖(OMDOMD)l 3.3 ArcGIS3.3 ArcGIS Engine Engine的類庫結(jié)構(gòu)的類庫結(jié)構(gòu)l 3.4 ArcGIS3.4 ArcGIS Engine Engine的控件介紹的控件介紹 l 3.5 ArcGIS3.5 ArcGIS Engine Engine的開發(fā)資源的開發(fā)資源 l 3.6 3.6 基于基于ArcGISArcGIS Engine Eng

2、ine開發(fā)一個(gè)簡單的系統(tǒng)開發(fā)一個(gè)簡單的系統(tǒng)3.1 3.1 基于基于COMCOM接口編程基礎(chǔ)接口編程基礎(chǔ)l 3.1.1 COM(組件對象模型)(組件對象模型)l 3.1.2 如何使用如何使用COM類類l 3.1.3 測試一個(gè)對象的引用的常用方法測試一個(gè)對象的引用的常用方法l 3.1.4 使用使用 ESRI Object 瀏覽器瀏覽器3.1.1 COM(組件對象模型)(組件對象模型)lCOM(組件對象模型)簡介(組件對象模型)簡介lCOM的優(yōu)越性的優(yōu)越性l學(xué)習(xí)學(xué)習(xí)ArcGIS Engine需要了解的需要了解的COM內(nèi)容內(nèi)容COM(組件對象模型)簡介(組件對象模型)簡介l 連接一個(gè)軟件模型和另一個(gè)軟

3、件模型的一種協(xié)議連接一個(gè)軟件模型和另一個(gè)軟件模型的一種協(xié)議l獨(dú)立的一種語言獨(dú)立的一種語言 l二進(jìn)制規(guī)范二進(jìn)制規(guī)范l運(yùn)用界面或組件來開發(fā)、配置程序模型運(yùn)用界面或組件來開發(fā)、配置程序模型l 客戶端調(diào)用服務(wù)器并且服務(wù)給予響應(yīng)客戶端調(diào)用服務(wù)器并且服務(wù)給予響應(yīng)l 所有通訊是通過接口進(jìn)行的所有通訊是通過接口進(jìn)行的Component(Map.dll)ClientArcMapCOM(組件對象模型)簡介(組件對象模型)簡介l COM是創(chuàng)建類的一個(gè)標(biāo)準(zhǔn)是創(chuàng)建類的一個(gè)標(biāo)準(zhǔn)l COM類可以在不同的工程中重用類可以在不同的工程中重用l不依賴于具體的開發(fā)語言不依賴于具體的開發(fā)語言l 所有的所有的 ArcObjects 都

4、是都是 COM 類類l ArcObjects基于基于COM技術(shù)構(gòu)建技術(shù)構(gòu)建l對象連接與嵌入技術(shù)對象連接與嵌入技術(shù) (OLE)lOLE DB技術(shù)技術(shù)lActiveX 技術(shù)是技術(shù)是 COM 技術(shù)的一種封裝技術(shù)的一種封裝lDCOM 和和 COM+COM的優(yōu)越性的優(yōu)越性l 使得編程技術(shù)難度和工作量降低,降低開發(fā)周期和使得編程技術(shù)難度和工作量降低,降低開發(fā)周期和成本成本l 使得軟件的復(fù)用性得到提高使得軟件的復(fù)用性得到提高l 語言獨(dú)立,可以使用任何一種語言編寫語言獨(dú)立,可以使用任何一種語言編寫COM組件組件 語句面向過程面向?qū)ο髮W(xué)習(xí)學(xué)習(xí)ArcGIS Engine需要了解的需要了解的COM內(nèi)容內(nèi)容nCOMC

5、OM不是接口,也不是類,它是一種二進(jìn)制級(jí)別的組件通信不是接口,也不是類,它是一種二進(jìn)制級(jí)別的組件通信標(biāo)準(zhǔn)標(biāo)準(zhǔn)n符合符合COMCOM標(biāo)準(zhǔn)的對象稱為標(biāo)準(zhǔn)的對象稱為COMCOM對象,對象,COMCOM對象是實(shí)現(xiàn)了很多接對象是實(shí)現(xiàn)了很多接口的對象,它可以以口的對象,它可以以DLLDLL或者或者EXEEXE文件形式存在文件形式存在nCOMCOM對象必須實(shí)現(xiàn)對象必須實(shí)現(xiàn)IUnknownIUnknown, ,它負(fù)責(zé)管理對象的生命周期它負(fù)責(zé)管理對象的生命周期nQIQI,即所謂的查詢接口。它是一個(gè),即所謂的查詢接口。它是一個(gè)COMCOM對象的多個(gè)接口之間對象的多個(gè)接口之間相互轉(zhuǎn)換的方法。相互轉(zhuǎn)換的方法。n缺省接

6、口,每個(gè)缺省接口,每個(gè)COMCOM對象一個(gè)缺省接口,通常為對象一個(gè)缺省接口,通常為IUnknownIUnknown學(xué)習(xí)學(xué)習(xí)ArcGIS Engine需要了解的需要了解的COM內(nèi)容內(nèi)容n每個(gè)組件都有一個(gè)獨(dú)一無二的表示每個(gè)組件都有一個(gè)獨(dú)一無二的表示: GUID,組件的身份證。,組件的身份證。接口的接口的GUID稱為稱為IID,而組件類的,而組件類的GUID為為CLSIDn一個(gè)一個(gè)COM對象可以分為多個(gè)接口,一個(gè)接口可被多個(gè)對象可以分為多個(gè)接口,一個(gè)接口可被多個(gè)COM對象實(shí)現(xiàn)對象實(shí)現(xiàn)n接口分為兩種:內(nèi)向接口(屬性、方法)和外向接口(事接口分為兩種:內(nèi)向接口(屬性、方法)和外向接口(事件)件)nCOM

7、組件必須被注冊后才能使用組件必須被注冊后才能使用nCOM對象可在開發(fā)過程中不斷擴(kuò)充、添加新的接口。如:對象可在開發(fā)過程中不斷擴(kuò)充、添加新的接口。如:ILayer2nCOM對象編譯為對象編譯為DLL和和EXE進(jìn)行傳播進(jìn)行傳播COM 類與接口類與接口n接口模塊接口模塊 定義方法和屬性定義方法和屬性n類模塊類模塊 實(shí)現(xiàn)方法和屬性實(shí)現(xiàn)方法和屬性n客戶端模塊客戶端模塊 實(shí)例化類實(shí)例化類 使用方法和屬性使用方法和屬性ClientServerInterface3.1.2 如何使用如何使用COM類類l接口接口(Interfaces)(Interfaces)l多態(tài)多態(tài)(Polymorphism)(Polymor

8、phism)l使用接口的屬性和方法使用接口的屬性和方法接口接口(Interfaces)l類對象擁有一個(gè)或多個(gè)接口類對象擁有一個(gè)或多個(gè)接口 l接口是定義了一組方法和屬性的邏輯關(guān)系接口是定義了一組方法和屬性的邏輯關(guān)系l與對象的通信是通過接口來進(jìn)行的與對象的通信是通過接口來進(jìn)行的RaceCarAccelerateBrakeFuel??空就?空救λ俣热λ俣菼RaceIDrive垃圾車?yán)嚰铀偌铀賱x車剎車燃料燃料拾起拾起傾倒傾倒IGarbageIDrive接口接口(Interfaces)l 使用一個(gè)接口實(shí)例化一個(gè)使用一個(gè)接口實(shí)例化一個(gè)COM類類 接口名接口名 變量變量 =new 類名類名();l 接口

9、集合了屬性和方法接口集合了屬性和方法IDriveIDrive pGarbage; pGarbage = new GarbageTruck();pGarbage.Fuel = “Full”;pGarbage.Accelerate();GarbageTruckAccelerateBrakeFuelPickUpDumpIGarbageIDrive接口接口(Interfaces)l 一個(gè)組合音響的例子一個(gè)組合音響的例子l一個(gè)對象可以播放收音機(jī)、磁帶、一個(gè)對象可以播放收音機(jī)、磁帶、CDl必須使用適當(dāng)?shù)慕涌诒仨毷褂眠m當(dāng)?shù)慕涌趌如果選擇了播放磁帶的接口,則不能收聽收音機(jī)如果選擇了播放磁帶的接口,則不能收聽收

10、音機(jī)ITapeITape pBBox; pBBox = new BoomBox();pBBox.FM = True;IRadioITapeICD程序會(huì)報(bào)錯(cuò)!程序會(huì)報(bào)錯(cuò)!多態(tài)多態(tài)(Polymorphism)l 許多不同的類可以支持相同的接口許多不同的類可以支持相同的接口擁有相同的所有的方法和屬性擁有相同的所有的方法和屬性可以有不同的執(zhí)行方式和擁有不同的屬性值可以有不同的執(zhí)行方式和擁有不同的屬性值IDrive燃料加速剎車多態(tài)多態(tài)(Polymorphism)l 許多許多ArcGIS的類都表現(xiàn)出多態(tài)的特性的類都表現(xiàn)出多態(tài)的特性l 所有的子類都繼承了接口所有的子類都繼承了接口lILayer: All l

11、ayer types (raster, tin, feature, etc.)lIGxFile: All ArcCatalog file types (shapefile, map, table, etc.)lIActiveView: Map (data view) and PageLayout (layout view)l。使用接口的屬性和方法使用接口的屬性和方法u定義一個(gè)指向接口的遍歷定義一個(gè)指向接口的遍歷u實(shí)例化一個(gè)對象實(shí)例化一個(gè)對象 u調(diào)用方法和設(shè)置屬性調(diào)用方法和設(shè)置屬性u只能使用定義的接口的屬性和方法只能使用定義的接口的屬性和方法Create a new RaceCar with I

12、DriveCreate a new RaceCar with IDriveIDrive pCarIDrive pCar; ;pCar = new RaceCarpCar = new RaceCar();();pCar.AcceleratepCar.Accelerate();();pCar.FuelpCar.Fuel = “Full”; = “Full”;pCar.PitStoppCar.PitStop();();RaceCarAccelerateBrakeFuelPitStopLapTimeIRaceIDrive這句代碼會(huì)報(bào)錯(cuò)!這句代碼會(huì)報(bào)錯(cuò)!使用接口的屬性和方法使用接口的屬性和方法u接口查詢

13、 (QI) 訪問其它接口的屬性和方法Create a new RaceCar with the IDriveCreate a new RaceCar with the IDrive interface interfaceIDrive pCarIDrive pCar; ;pCar = new RaceCarpCar = new RaceCar();();pCar.AcceleratepCar.Accelerate();();Switch interfacesSwitch interfacesIRace pRaceIRace pRace;pRace = pCar as IRacepRace = p

14、Car as IRace; ;pRace.PitStoppRace.PitStoppCar.AcceleratepCar.AcceleratepCar and pRacepCar and pRace point to the same object point to the same objectRaceCarAccelerateBrakeFuelPitStopLapTimeIRaceIDriveQ I3.1.3 測試一個(gè)對象的引用的常用方法測試一個(gè)對象的引用的常用方法uIs an object Nothing?uWhat TypeOf object is it?If (pLayer=null

15、) MessageBox.Show(圖層為空圖層為空); return;If (pLayer Is IFeatureLayer) MessageBox.Show(You selected a Feature Layer.“); else MessageBox.Show(This layer is not a Feature Layer.“); 3.1.4 使用使用 ESRI Object 瀏覽器瀏覽器u列表類、接口、屬性和方法列表類、接口、屬性和方法 位置:位置:ArcGISDeveloperKittoolsEOBrowser.exe 3.2 3.2 理解對象模型圖(理解對象模型圖(OMDOM

16、D)l3.2.1 ArcObject 的對象模型圖的對象模型圖 l3.2.2 閱讀一個(gè)對象的模型圖閱讀一個(gè)對象的模型圖類的相互關(guān)系類的相互關(guān)系類的類型類的類型l3.2.3 接口、屬性、方法的圖標(biāo)接口、屬性、方法的圖標(biāo) 3.2.1 ArcObject 的對象模型圖的對象模型圖uOMD幫助編寫代碼幫助編寫代碼uOMD 中展示每個(gè)類的接口,方法,屬性中展示每個(gè)類的接口,方法,屬性uOMD中展示各類之間的相互關(guān)聯(lián)關(guān)系中展示各類之間的相互關(guān)聯(lián)關(guān)系uAO在幾個(gè)圖表中擁有超過在幾個(gè)圖表中擁有超過 1,500個(gè)類個(gè)類u超過超過 1,600 個(gè)接口個(gè)接口 3.2.1 ArcObject 的對象模型圖的對象模型圖

17、u在哪里可以找到在哪里可以找到ArcGIS OMD圖表?圖表?Start Programs ArcGIS Developer Help簡單的、詳細(xì)的類圖簡單的、詳細(xì)的類圖PDF files軟件安裝的目錄中(如軟件安裝的目錄中(如:C:Program FilesArcGISDeveloperKitDiagrams)3.2.1 ArcObject 的對象模型圖的對象模型圖3.2.2 閱讀一個(gè)對象的模型圖閱讀一個(gè)對象的模型圖類的相互關(guān)系類的相互關(guān)系uOMD中的關(guān)系符號(hào)例子l繼承關(guān)系l組合關(guān)系l依賴關(guān)系l對應(yīng)關(guān)系 1:N * l關(guān)聯(lián)關(guān)系蛋蛋鳥鳥翅膀翅膀羽毛羽毛2AbstractClassClassCl

18、ass小雞小雞CoClassCoClass*巢巢類的類型類的類型u抽象類 (Abstract Class)u普通類 (Class)u組件類 (CoClass)抽象類抽象類 (Abstract Class)l不能創(chuàng)建一個(gè)新的對象實(shí)例不能創(chuàng)建一個(gè)新的對象實(shí)例l也不能可能從其他對象中獲取實(shí)例對象也不能可能從其他對象中獲取實(shí)例對象l只能定義接口,被子類繼承只能定義接口,被子類繼承l(wèi)OMD中中: 2D的灰色矩形的灰色矩形表示抽象類表示抽象類普通類類 (Class)l不能用于創(chuàng)建一個(gè)新的對象,即不能用不能用于創(chuàng)建一個(gè)新的對象,即不能用new關(guān)鍵字來產(chǎn)生對象關(guān)鍵字來產(chǎn)生對象lOMD中中:用用沒有陰影的沒有陰

19、影的3D矩形矩形表示普通類表示普通類l可以從其他對象中獲取對象實(shí)例可以從其他對象中獲取對象實(shí)例IRow pNewRow;pNewRow = pTable.CreateRow();生生 成成組組件類類 (CoClass)l可以直接創(chuàng)建,用可以直接創(chuàng)建,用new關(guān)鍵字關(guān)鍵字IMap pMap;pMap = new Map();l也可以從其他對象中獲取也可以從其他對象中獲取IMap pMap; pMap = pMxDocument.FocusMap;lOMD中中:用用有陰影的有陰影的3D矩形矩形表示組件類表示組件類 類和它們相應(yīng)的對象ArcObjects 對象例子對象例子MxDocumentMapL

20、ayer*FeatureLayerApplicationArcGIS Engine沒有這個(gè)層次對沒有這個(gè)層次對象象3.2.3 接口、屬性、方法的圖標(biāo)接口、屬性、方法的圖標(biāo)uInterface(接口)(接口)uProperty(屬性)(屬性)uMethod(方法)(方法)uWormholes(蟲洞)(蟲洞)u棒棒糖類型的圖標(biāo)棒棒糖類型的圖標(biāo)( )類的接口類的接口這些接口也是有效的,但是詳細(xì)的這些接口也是有效的,但是詳細(xì)的屬性和方法必須在其它地方瀏覽。屬性和方法必須在其它地方瀏覽。(e.g., Object Browser)該接口被本類使用,所有的屬性和該接口被本類使用,所有的屬性和方法都列表在類

21、圖中方法都列表在類圖中繼承接口是有效的繼承接口是有效的接口中屬性與方法接口中屬性與方法uProperty(屬性)(屬性) 啞鈴形狀的圖標(biāo)啞鈴形狀的圖標(biāo)(表示屬性是否可獲取,是否可寫入表示屬性是否可獲取,是否可寫入)uMethod(方法)(方法)Property Get(read)Property Set(write)FeatureLayer on MapLayer OMDu概念上,這是一個(gè)對象模型概念上,這是一個(gè)對象模型u事實(shí)上,被分別在幾張圖表里存放事實(shí)上,被分別在幾張圖表里存放u蟲洞表現(xiàn)了圖表與圖表間的連接關(guān)系蟲洞表現(xiàn)了圖表與圖表間的連接關(guān)系Wormholes(蟲洞)(蟲洞)Element

22、 on ArcMap OMD蟲洞蟲洞3.3 ArcGIS3.3 ArcGIS Engine Engine的類庫結(jié)構(gòu)的類庫結(jié)構(gòu)ArcGISArcGIS Engine Engine類庫類庫:SystemuSystem類庫類庫是ArcGIS系統(tǒng)結(jié)構(gòu)統(tǒng)結(jié)構(gòu)中最底層層的類庫類庫。uSystem類庫類庫的作用是給給ArcGIS的其他類庫類庫提供服務(wù)務(wù)的組組件。uSystem類庫類庫中定義義了大量開發(fā)開發(fā)者可以實(shí)現(xiàn)實(shí)現(xiàn)的接口。如AoInitializer對對象就是在System類庫類庫中定義義的。所有開發(fā)開發(fā)者必須須使用這個(gè)對這個(gè)對象來來初始化ArcGIS Engine。ArcGISArcGIS Engin

23、e Engine類庫:類庫:SystemUISystemUIu包含用戶戶界面組組件接口定義義。如:Icommand、Itool和IToolControl接口。u開發(fā)開發(fā)者使用這這些接口來擴(kuò)來擴(kuò)展UI組組件。u包含的對對象是一些實(shí)實(shí)用工具對對象,通過過使用這這些對對象來簡來簡化用戶戶界面的開發(fā)開發(fā)。ArcGISArcGIS Engine Engine類庫:類庫:GeometryGeometryu處處理存儲(chǔ)儲(chǔ)在要素類類中的要素幾何圖圖形或形狀狀或其他圖圖形元素。如:Point、MultiPoint、Polyline、Polygon等。u存儲(chǔ)構(gòu)儲(chǔ)構(gòu)成幾何要素的子要素。如:Segement、Path、

24、Ring等。u存儲(chǔ)儲(chǔ)幾何要素的空間參間參考對對象。包括:投影坐標(biāo)標(biāo)和地理坐標(biāo)標(biāo)系統(tǒng)統(tǒng)等。ArcGISArcGIS Engine Engine類庫:類庫:DisplayDisplayu用于控制地圖顯圖顯示、用戶戶交互。u包含用于顯顯示GIS數(shù)數(shù)據(jù)的對對象。u包含符號(hào)號(hào)、顏顏色等用來來控制顯顯示的對對象。u包含在顯顯示交互時(shí)時(shí)提供給給用戶戶的可視視化反饋對饋對象。ArcGISArcGIS Engine Engine類庫:類庫:ServerServeru用來連來連接并并操作ArcGIS Server。u連連接ArcGIS Server,并訪問并訪問ArcGIS Server的Server Objec

25、ts Manager對對象。u操作ArcGIS Server的ServerContext對對象。ArcGISArcGIS Engine Engine類庫:類庫:OutputOutputu用來來控制地圖圖的輸輸出u用戶創(chuàng)戶創(chuàng)建圖圖形輸輸出到打印機(jī)或者繪圖儀繪圖儀等設(shè)備設(shè)備。u輸輸出成JPG、BMP、增強(qiáng)圖圖元文件等格式。ArcGISArcGIS Engine Engine類庫:類庫:GeoDatabaseGeoDatabaseu為為GeoDatabase提供編編程API。u其中的對對象為為ArcGIS支持的所有數(shù)數(shù)據(jù)源提供了一個(gè)個(gè)統(tǒng)統(tǒng)一編編程模型。u定義義了許許多由ArcObjects架構(gòu)構(gòu)中更

26、高級(jí)級(jí)的數(shù)數(shù)據(jù)源提供者實(shí)現(xiàn)實(shí)現(xiàn)的接口。ArcGISArcGIS Engine Engine類庫:類庫:GISClientGISClientu允許開發(fā)許開發(fā)者使用Web服務(wù)務(wù)。u可以連連接到ArcIMS。u支持以無狀態(tài)狀態(tài)方式或者通過過Web目錄錄操作ArcGIS Server對對象的編編程模型。ArcGISArcGIS Engine Engine類庫:類庫:DataSourcesFileDataSourcesFileu包含用于基于文件數(shù)數(shù)據(jù)源的GeoDatabase API實(shí)現(xiàn)實(shí)現(xiàn)。u文件格式為為:Shapefile、Coverage、TIN、CAD、SDC、StreetMap和VPF。Arc

27、GISArcGIS Engine Engine類庫:類庫:DataSourceGDBDataSourceGDBu包含用于數(shù)數(shù)據(jù)庫數(shù)庫數(shù)據(jù)源的GeoDatabase API實(shí)現(xiàn)實(shí)現(xiàn)。u數(shù)數(shù)據(jù)源包括:Access、DB2、Informix、SQL Server、Oracle。 ArcGISArcGIS Engine Engine類庫:類庫:DataSourcesOleDBDataSourcesOleDBu包含用戶戶Microsoft OLE DB數(shù)數(shù)據(jù)源的Geodatabase API實(shí)現(xiàn)實(shí)現(xiàn)。u只能用在Microsoft Windows上。u這這些數(shù)數(shù)據(jù)源包括支持?jǐn)?shù)數(shù)據(jù)提供者和文本文件工作空間間

28、的所有OLE DB。ArcGISArcGIS Engine Engine類庫:類庫:DataSourcesRasterDataSourcesRasteru包含用于柵柵格數(shù)數(shù)據(jù)源的GeoDatabase API實(shí)現(xiàn)實(shí)現(xiàn)。u這這些數(shù)數(shù)據(jù)源包括ArcSDE支持的關(guān)關(guān)系型數(shù)數(shù)據(jù)庫庫管理系統(tǒng)統(tǒng):DB2、Informix、SQL Server、Oracle。以及其支持的RDO柵柵格文件格式。ArcGISArcGIS Engine Engine類庫:類庫:GeoDatabaseDistributedGeoDatabaseDistributedu提供地理數(shù)數(shù)據(jù)庫導(dǎo)庫導(dǎo)入和導(dǎo)導(dǎo)出工具。u可以支持對對企業(yè)級(jí)業(yè)級(jí)地

29、理數(shù)數(shù)據(jù)庫庫的分布式訪問訪問。ArcGISArcGIS Engine Engine類庫:類庫:CartoCartou包含操作2D地圖圖的對對象。u支持2D地圖圖的創(chuàng)創(chuàng)建和顯顯示。u提供Map和PageLayout等基礎(chǔ)對礎(chǔ)對象。u提供MapDocument對對象來來操作地圖圖文檔檔。ArcGISArcGIS Engine Engine類庫:類庫:LocationLocationu包含支持地理編碼編碼和操作路徑徑事件的對對象。u提供線線性參參考功能。ArcGISArcGIS Engine Engine類庫:類庫:NetworkAnalysisNetworkAnalysisu提供用于在地理數(shù)數(shù)據(jù)庫

30、庫中加載網(wǎng)絡(luò)數(shù)載網(wǎng)絡(luò)數(shù)據(jù)的對對象。u提供對對象用于分析加載載到地理數(shù)數(shù)據(jù)庫庫中的網(wǎng)絡(luò)網(wǎng)絡(luò)。ArcGISArcGIS Engine Engine類庫:類庫:ControlsControlsu用來構(gòu)來構(gòu)建或擴(kuò)擴(kuò)展具有ArcGIS功能的應(yīng)應(yīng)用程序。u提供一系列的開發(fā)開發(fā)控件。通過過封裝ArcObjects提供粗顆顆粒度的API來簡來簡化開發(fā)過開發(fā)過程。u提供HookHelper對對象,簡簡化命令操作的創(chuàng)創(chuàng)建。ArcGISArcGIS Engine Engine類庫:類庫:GeoAnalystGeoAnalystu包含支持核心空間間分析功能的對對象。u這這些功能用于SpatialAnalyst和3DA

31、nalyst兩個(gè)類庫兩個(gè)類庫中。ArcGISArcGIS Engine Engine類庫:類庫:3DAnalyst3DAnalystu包含操作3D場場景的對對象。u主要對對象為為:Scene。u運(yùn)運(yùn)行時(shí)時(shí)使用該該模塊塊需要3D許許可選項(xiàng)選項(xiàng)ArcGISArcGIS Engine Engine類庫:類庫:GlobeCoreGlobeCoreu包含操作Globe數(shù)數(shù)據(jù)的對對象。u主要對對象為為:Globe。u運(yùn)運(yùn)行時(shí)時(shí)需要3D許許可選項(xiàng)選項(xiàng)。ArcGISArcGIS Engine Engine類庫:類庫:SpatialAnalystSpatialAnalystu包含在柵柵格數(shù)數(shù)據(jù)和矢量數(shù)數(shù)據(jù)上執(zhí)執(zhí)

32、行空間間分析的對對象。u通常是直接使用類庫類庫中的對對象,不做擴(kuò)擴(kuò)展。u運(yùn)運(yùn)行時(shí)時(shí)需要空間間分析選項(xiàng)許選項(xiàng)許可。3.4 ArcGIS3.4 ArcGIS Engine Engine的控件介紹的控件介紹 ArcGISArcGIS Engine Engine控件:MapControluMapControl對應(yīng)對應(yīng)了ArcMap桌桌面程序的“數(shù)數(shù)據(jù)視圖視圖”。u主要用于地圖數(shù)圖數(shù)據(jù)的顯顯示、瀏覽瀏覽、查詢查詢、編輯編輯、修改、分析和地圖圖表現(xiàn)現(xiàn)。ArcGIS Engine控件:PageLayoutControl u對應(yīng)對應(yīng)了ArcMap桌桌面應(yīng)應(yīng)用程序的“布局視圖視圖”。u主要用于地圖圖的布局和打印

33、。p包含了可創(chuàng)創(chuàng)建的布局類類p在一個(gè)視圖個(gè)視圖上繪繪制多個(gè)個(gè)元素(elements)p用來創(chuàng)來創(chuàng)建布局和打印ArcGIS EngineEngine控件:3D控件uSceneControlp對應(yīng)與桌對應(yīng)與桌面的ArcScene桌桌面應(yīng)應(yīng)用程序的三維視圖維視圖。擁擁有導(dǎo)導(dǎo)航功能,允許許用戶戶三維維地顯顯示地圖數(shù)圖數(shù)據(jù)。uGlobeControl p對應(yīng)與桌對應(yīng)與桌面的ArcGlobe桌桌面應(yīng)應(yīng)用程序的三維視圖維視圖。擁擁有導(dǎo)導(dǎo)航功能,允許許用戶戶三維維地顯顯示地圖數(shù)圖數(shù)據(jù)。ArcGIS Engine控件:TOCControlu需要和一個(gè)伙個(gè)伙伴控件協(xié)協(xié)同工作。u用來顯來顯示圖層圖層的內(nèi)內(nèi)容以及圖層

34、圖層的表現(xiàn)現(xiàn)方式等等。ArcGIS Engine控件:ToolbarControlu需要和一個(gè)伙個(gè)伙伴控件協(xié)協(xié)同工作。u為伙為伙伴控件提供命令、工具和菜單單功能。3.5 ArcGIS3.5 ArcGIS Engine Engine的開發(fā)資源的開發(fā)資源 uOMD圖圖uArcGIS Developer Help3.5 ArcGIS3.5 ArcGIS Engine Engine的開發(fā)資源的開發(fā)資源 uSamplesuUser forums: pESRI: http:/ pESRI中國國:http:/bbs.esrichina- ESRIuESRI Developer Networku http:/

35、 3.6 基于基于ArcGISArcGIS Engine Engine開發(fā)一個(gè)簡單的系統(tǒng)開發(fā)一個(gè)簡單的系統(tǒng)u3.6.1 控件加載載u3.6.2 加載載地圖圖文檔檔u3.6.3 地圖圖操作基本功能實(shí)現(xiàn)實(shí)現(xiàn)3.6.1 控件加載載(1)新建一個(gè)項(xiàng)個(gè)項(xiàng)目l啟動(dòng)啟動(dòng)Visual Studio.NET,在【文件】菜單單中選擇選擇【新建項(xiàng)項(xiàng)目】,在“新建項(xiàng)項(xiàng)目”對話對話框中選擇項(xiàng)選擇項(xiàng)目類類型為為“Visual C#”,模板為為“Windows應(yīng)應(yīng)用程序”,選擇選擇“位置”,點(diǎn)擊擊“確定”保存該項(xiàng)該項(xiàng)目3.6.1 控件加載載(2)添加選項(xiàng)選項(xiàng)卡l在“工具箱”的空白處單擊處單擊鼠標(biāo)標(biāo)右鍵鍵,在彈彈出的快捷菜單

36、單中選擇選擇“添加選項(xiàng)選項(xiàng)卡”,然后在新增選項(xiàng)選項(xiàng)卡上輸輸入“ESRI控件”作為選項(xiàng)為選項(xiàng)卡標(biāo)簽標(biāo)簽3.6.1 控件加載載(3)添加ArcGIS Engine控件l右鍵鍵點(diǎn)擊擊“ESRI控件”標(biāo)簽標(biāo)簽,從從快捷菜單單中選擇選擇“選擇項(xiàng)選擇項(xiàng)” 3.6.1 控件加載載(3)添加ArcGIS Engine控件l在彈彈出的“選擇選擇工具項(xiàng)項(xiàng)”對話對話框中選擇選擇“.NET Framework 組組件”選項(xiàng)選項(xiàng)卡,選選中”AxMapControl”、“AxTOCControl”、“AxToolbarControl”和“AxPageLayoutControl”等復(fù)選復(fù)選框,單擊單擊“確定”按鈕鈕,將將所

37、選擇選擇的控件添加到工具欄欄中3.6.1 控件加載載(3)添加ArcGIS Engine控件l在項(xiàng)項(xiàng)目菜單單中選擇選擇“添加引用”,在彈彈出的“添加引用”對話對話框中添加以下常用的類庫類庫引用:pESRI.ArcGIS.CartopESRI.ArcGIS.DisplaypESRI.ArcGIS.GeometrypESRI.ArcGIS.SystempESRI.ArcGIS.SystemUI3.6.1 控件加載載(4)在窗體中嵌入ArcGIS Engine控件l雙擊雙擊工具箱中的“ESRI”標(biāo)簽欄標(biāo)簽欄中的AxMapControl、AxTOCControl、AxToolbarControl、Ax

38、LicenseControl控件,將將它們它們都添加到窗體上,并調(diào)并調(diào)整好大小和位置。3.6.2 加載載地圖圖文檔檔l1)利用控件屬屬性加載載地圖圖文檔檔或圖層圖層l2)通過過代碼碼加載載地圖圖文檔檔1)利用控件屬屬性加載載地圖圖文檔檔或圖層圖層l(1)右鍵單擊鍵單擊MapControl控件,在彈彈出的對話對話框中選擇選擇【屬屬性】1)利用控件屬屬性加載載地圖圖文檔檔或圖層圖層l(2)在彈彈出的屬屬性頁頁窗體中添加地圖圖文檔檔或圖層圖層添加地圖文檔添加地圖文檔添加圖層添加圖層1)利用控件屬屬性加載載地圖圖文檔檔或圖層圖層l(3)右鍵單擊鍵單擊TOCControl控件,在彈彈出的菜單單中選擇選擇

39、【s屬屬性】,在彈彈出的對話對話框中點(diǎn)擊擊【Buddy】下拉菜單單,選擇選擇要綁綁定的地圖圖控件“axMapControl1”1)利用控件屬屬性加載載地圖圖文檔檔或圖層圖層l(4)運(yùn)運(yùn)行程序,顯顯示結(jié)結(jié)果2)通過過代碼碼加載載地圖圖文檔檔 private void Form1_Load(object sender, EventArgs e) String sFilename; sFilename = d:dataMyMap.mxd; if (axMapControl1.CheckMxFile(sFilename) axMapControl1.LoadMxFile(sFilename); axT

40、OCControl1.SetBuddyControl(axMapControl1); 3.6.3 地圖圖操作基本功能實(shí)現(xiàn)實(shí)現(xiàn)l1)利用控件屬屬性實(shí)現(xiàn)實(shí)現(xiàn)地圖圖基本操作功能l2)通過過代碼實(shí)現(xiàn)碼實(shí)現(xiàn)地圖圖基本操作功能1)利用控件屬屬性實(shí)現(xiàn)實(shí)現(xiàn)地圖圖基本操作功能l(1)右鍵單擊鍵單擊ToolbarControl控件,在彈彈出的菜單單中選擇選擇【屬屬性】,在彈彈出的對話對話框中點(diǎn)擊擊【Buddy】下拉菜單單,選擇選擇要綁綁定的地圖圖控件axMapControl11)利用控件屬屬性實(shí)現(xiàn)實(shí)現(xiàn)地圖圖基本操作功能l(2)點(diǎn)擊屬擊屬性頁頁的【Items】標(biāo)簽標(biāo)簽1)利用控件屬屬性實(shí)現(xiàn)實(shí)現(xiàn)地圖圖基本操作功能l(3)在【Items】標(biāo)簽頁標(biāo)簽頁中,單擊單擊【Add】按鈕鈕,添加工具按鈕鈕,本示例中選擇選擇【Toolsets】標(biāo)簽頁標(biāo)簽頁中的【MapNavigatio

溫馨提示

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

最新文檔

評論

0/150

提交評論