ArcEngine二次開發(fā)入門介紹_第1頁
ArcEngine二次開發(fā)入門介紹_第2頁
ArcEngine二次開發(fā)入門介紹_第3頁
ArcEngine二次開發(fā)入門介紹_第4頁
ArcEngine二次開發(fā)入門介紹_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ArcEngine二次開發(fā)入門介紹第1頁/共44頁內(nèi)容簡介ArcGIS產(chǎn)品體系A(chǔ)rcObject簡介ArcEngine概況簡單的ArcEngine開發(fā)實例開發(fā)資源第2頁/共44頁ArcGIS產(chǎn)品體系

第3頁/共44頁ArcObject簡介

AO是ESRI公司ArcGIS家族中應(yīng)用程序的開發(fā)平臺它是基于Microsoft?COM技術(shù)所構(gòu)建的一系列COM組件集。AO是隨ArcGIS產(chǎn)品一同發(fā)布的,要使用AO必須購買ArcGISDesktop,才能利用AO提供的組件對象來進行應(yīng)用開發(fā)。在ArcGIS9中發(fā)布了一個新的產(chǎn)品:ArcGISEngine,ArcGISEngine基于AO,并且實現(xiàn)了更好的封裝,是一個獨立的產(chǎn)品。第4頁/共44頁AO的功能

通過AO你可完成以下GIS功能:空間數(shù)據(jù)的顯示、查詢檢索、編輯和分析;創(chuàng)建各種專題圖和統(tǒng)計報表;高級的制圖和輸出功能;空間數(shù)據(jù)管理和維護;……第5頁/共44頁AO編程基礎(chǔ)COMCOM是ComponentObjectModel的縮寫它不僅定義了組件程序之間進行交互的標(biāo)準(zhǔn),而且也提供了組件程序運行所需要的環(huán)境。COM本身要實現(xiàn)一個稱為COM庫(COMlibrary)的API,它提供諸如客戶對組件的查詢,以及組件的注冊/反注冊等一系列服務(wù)。一般來說,COM庫由操作系統(tǒng)加以實現(xiàn),我們不必關(guān)心其實現(xiàn)的細節(jié),COM主要應(yīng)用于MicrosoftWindows操作系統(tǒng)平臺上。COM通常的發(fā)布形式是:以win32動態(tài)鏈接庫(DLL)或可執(zhí)行文件(EXE)的形式發(fā)布。第6頁/共44頁COM的目標(biāo)和特性建立在二進制代碼級上的可重用性;語言無關(guān)性,只要其能生成符合COM規(guī)范即可;對使用COM對象的客戶程序而言的進程透明性;第7頁/共44頁龐大的COM組件集合EnumStructInterfaceCOMTotalArcGIS9.2110640482438479817ArcGIS9.3

1194515206404910500ArcGIS9.2與9.3間的類型(接口、COM類、枚舉、結(jié)構(gòu))變化列表備注:不包括類型庫中隱藏或受限制的類型.

第8頁/共44頁理解對象模型圖(OMD)OMD是基于OMT(ObjectModelingTechnique)的表示方法,先來看看OMD能幫我們做些什么?1.該類支持哪些接口;

2.完成任務(wù)需要哪些對象;

3.如何使用該類的對象;

4.是否可以直接實例化類;

5.接口有哪些方法和屬性;

6.是否有其它類也支持該接口;

7.對象間的關(guān)系。第9頁/共44頁在哪里可以找到ArcGISOMD圖表Start>Programs>ArcGIS>DeveloperHelp簡單的、詳細的類圖PDFfiles軟件安裝的目錄中

一般在安裝目錄\DeveloperKit\Diagrams下電子書籍光盤中第10頁/共44頁解析對象模型圖OMD中的類有:抽象類(AbstractClass):不能用于創(chuàng)建對象,但可以用來指定子類。(通過類型繼承)。組件類(CoClass):可以直接創(chuàng)建對象。普通類(Class):不能直接創(chuàng)建對象,但可以作為另一個類的屬性或者通過另一個類的實例化來創(chuàng)建對象。在OMD中的關(guān)系類型主要有:類型繼承(Typeinheritance)創(chuàng)建(Instantiation)組成(Composition):對象間的主次關(guān)系關(guān)聯(lián)(Associations)A和B為普通類對象,C為組件類對象,D為一普通類,如下面代碼:

A=B.writeA()A=C.writeA()A=NewD()X普通類不能通過New方法產(chǎn)生A的生命周期是由產(chǎn)生它的對象B和C控制的第11頁/共44頁ArcObjectsUML關(guān)系符號組件類抽象類實例化類繼承關(guān)聯(lián)組成第12頁/共44頁ArcObjectsUML關(guān)系符號例子繼承組成用來創(chuàng)建對應(yīng)關(guān)系1:N聯(lián)合*_____蛋鳥翅膀羽毛2AbstractClassClassClass小雞CoClass巢CoClass*第13頁/共44頁類和他們相應(yīng)的對象ArcObjects對象例子MxDocumentMapLayer**FeatureLayerApplication第14頁/共44頁不能創(chuàng)建或?qū)嵗橄箢愑肋h不能有實例為子類定義了泛化(general)子類集成了抽象類的接口抽象類的OMD符號:2維陰影矩形抽象類(AbstractClass)第15頁/共44頁可以創(chuàng)建:使用New關(guān)鍵字

IMap

pMap=new

MapClass()實例化:從其它對象獲得IMap

pMap=pMxDocument.FocusMap()可創(chuàng)建類的OMD符號:3維陰影矩形組件類(CoClass)第16頁/共44頁類(Class)不能直接創(chuàng)建的類不能使用New關(guān)鍵字來創(chuàng)建從其它對象處獲得實例

IRowpNewRow=pTable.CreateRow()實例化類的OMD符號:3維沒有陰影的矩形生成第17頁/共44頁屬性和方法的符號屬性啞鈴形狀的圖標(biāo)方法PropertyGet(read)PropertySet(write)第18頁/共44頁屬性傳值:大部分ArcObjects的屬性屬性保存了一個對象的值或者一個拷貝不需要使用Set關(guān)鍵字屬性傳引用:一些ArcObjects的屬性屬性保存了一個對象的引用必須使用Set關(guān)鍵字如果引用對象發(fā)生了變化,對象的屬性將同步受到影響設(shè)置屬性pLayer.Name="PortMoresby"'NoSetkeywordSetpLayer.FeatureClass=pMoresbyData'MustuseSet!第19頁/共44頁接口棒棒糖類型的圖標(biāo)()查找接口這些接口也是有效的。但是詳細的屬性和方法必須在其它地方瀏覽。(e.g.,ObjectBrowser).該接口被本類使用.所有的屬性和方法都列表在類圖中.繼承接口是有效的第20頁/共44頁FeatureLayeronMapLayerOMD概念上,這是一個對象模型事實上,被分別在幾張圖表里存放蟲洞表現(xiàn)了圖表與圖表間的連接關(guān)系A(chǔ)rcObjectsOMD圖表上的蟲洞ElementonArcMapOMD蟲洞第21頁/共44頁例子:MxDocument>Map>layer從當(dāng)前的文檔中取得聚焦的Map(activedataframe)MxDocument可以包含一些Maps(*)從一個Map中取得圖層對象圖層對象有多種的類型()IMxDocumentpMxDoc=LoadMxdDoc(@"c:\Temp\test.mxd");IMappMap=pMxDoc.FocusMap;ILayerpLayer=pMap.get_Layer(1);//IspLayeraFeatureLayer?if(pLayerisIFeatureLayer){MessageBox.Show("Yes!,it’safeaturelayer");}MxDocumentMapFeatureLayerLayer**Others第22頁/共44頁

ArcEngine概況

ArcGIS9新的開發(fā)產(chǎn)品從核心的ArcObjects組件構(gòu)建創(chuàng)建獨立應(yīng)用或者集成到第三方系統(tǒng)第23頁/共44頁第24頁/共44頁ArcEngine功能讀取所有支持的ESRI數(shù)據(jù)格式,包括geodatabase地圖制作(創(chuàng)建和編輯MXD)ArcGIS級別的繪圖查詢和分析地理編碼簡單編輯……第25頁/共44頁AO與AE的聯(lián)系與區(qū)別

聯(lián)系:

1.ArcEngine包括核心ArcObjects的功能,是對AO中的大部分接口、類等進行封裝所構(gòu)成的嵌入式組件。

2.AE中的組件接口、方法、屬性與AO是相同的。區(qū)別:

1.開發(fā)環(huán)境:ArcObjects必須依賴ArcGISDesktop桌面平臺,即購買安裝了ArcGISDesktop的同時,安裝ArcObjects,才能利用AO進行開發(fā);ArcEngine是獨立的嵌入式組件,不依賴ArcGISDesktop桌面平臺,直接安裝ArcEngineRuntime和DeveloperKit后,即可利用其在不同開發(fā)語言環(huán)境下開發(fā)。

2.功能:AO的功能更強大,AE的功能相對弱些,AE不具備AO的少部分功能。

ArcEngine具有簡潔、靈活、易用、可移植性強等的特點。

第26頁/共44頁ArcGISEngine擴展模塊GeodatabaseUpdateSpatial3DWithGlobalVisualization

Engine開發(fā)包包括了高級的Engine擴展模塊第27頁/共44頁ArcGISEngine組成兩個產(chǎn)品:Engine開發(fā)包是創(chuàng)建自定義的GIS和制圖應(yīng)用的工具包Engine運行時是為了運行自定義的Engine應(yīng)用的可分發(fā)的ArcObjects.第28頁/共44頁ArcGISEngine開發(fā)包組件,APIs,工具的集合,開發(fā)人員可以用來創(chuàng)建高級的GIS應(yīng)用組件

Engine庫:制圖,繪制,選擇,編輯等

Control庫:地圖控件,布局空間,工具條等APIsCOM,.NET,JAVA,C++工具

ArcGISDeveloperKitDocumentationDeveloperUtilities第29頁/共44頁ArcGISEngine類庫體系結(jié)構(gòu)第30頁/共44頁System類庫:System類庫是ArcGIS體系結(jié)構(gòu)中最底層的類庫。System類庫包含構(gòu)成ArcGIS的其他類庫提供服務(wù)的組件。System類庫中定義了大量開發(fā)者可以實現(xiàn)的接口。開發(fā)者不能擴展這個類庫,但可以通過實現(xiàn)這個類庫中包含的接口來擴展ArcGIS系統(tǒng)。SystemUI類庫:SystemUI類庫包含用戶界面組件接口定義,這些用戶界面組件可以在ArcGISEngine中進行擴展。包含ICommand、ITool和IToolControl接口。開發(fā)人員可以通過使用這些對象簡化用戶界面的開發(fā)。Geometry類庫:Geometry類庫包含了核心的幾何形體對象,如點、線、面等,即在AO中的要素和圖形元素的幾何形體都可以在這個組件庫中尋找到。除此之外,這個庫還包含了空間參考對象,包括GeographicCoordinateSystem(地理坐標(biāo)系統(tǒng))、ProjectedCoordinateSystem(投影坐標(biāo)系統(tǒng))GeoTransformations(地理變換)對象等。Display類庫:Display類庫包含用于顯示GIS數(shù)據(jù)的對象。它包括Display對象、Color對象、ColorRamp對象、DisplayFeedback對象、RubberBand對象、Tracker對象、Symbol對象。第31頁/共44頁Output類庫:

Output類庫包含了AO中的所有輸出對象:打印輸出對象Printer和轉(zhuǎn)換輸出對象Export。前者可以將視圖上的地圖通過打印機進行輸出,而后者包含的豐富對象,可以將地圖轉(zhuǎn)換為多種格式的矢量或者柵格形式的數(shù)據(jù),如EMF、PDF、JPEG、TIFF等。Framework類庫:arcgis程序存在一個內(nèi)在的框架,所有的ao組件對象都在這個框架中扮演了不同的角色,它的協(xié)作可以完成arcgis提供的gis功能。這個框架中的某些核心對象被放置在Framework庫中。

Framework庫提供了arcgis程序的某些核心對象和可視化組件對象。這個庫中的一些對象可以讓arcgis程序擴展他們的定制環(huán)境,以改變arcgis程序的外觀界面。同時,這個庫也提供了諸如ComPropertySheet、ModelessFram和MouseCursor等對象,它們是一些對話框,用于在arcgis上實現(xiàn)用戶的交互。Carto類庫:Carto庫包含了為數(shù)據(jù)顯示服務(wù)的各種組件對象,如:MapElements(包含Map對象的框架容器);Map和PageLayout(地理數(shù)據(jù)和圖形元素顯示的兩個主要對象);MapSurrouds(一個與Map對象相關(guān)聯(lián)的用于修飾地圖的對象集);MapGrids(地圖網(wǎng)格對象,用于設(shè)置地圖的經(jīng)緯網(wǎng)格或數(shù)字網(wǎng)格,起到修飾地圖的作用);Renderers(著色對象,用于制作專題地圖),Labeling,Annotation,Dimensions(標(biāo)注對象;用于修飾在地圖上產(chǎn)生文字標(biāo)記以顯示信息),Layers(圖層對象,用于傳遞地理數(shù)據(jù)到Map或PageLayout對象中去顯示),MapServer,ArcIMSLayers、GPSSupport等。第32頁/共44頁CartoUI類庫:CartUI庫中的對象也是為了數(shù)據(jù)顯示服務(wù)的,在ao中所有以UI結(jié)尾的庫中的對象都具有可視化的界面。CartoUI庫中包含諸如IdentifyDiaLog、SQLQueryDialog、QueryWizard等對象,這些對象都以一個對話框的形式出現(xiàn)。Controls類庫:Controls庫包含了在程序開發(fā)中可以使用的可視化組件對象,如MapControl、PageLayoutControl等,Controls庫分以下7個子庫:MapControl,PageLayoutControl,TocControl,ToolbarControl,ControlCommands,ReaderControl,LicenseeControl。DisplayUI類庫:DisplayUI庫提供了具有可視化界面的對象用于輔助圖形顯示,它包括propertypages(屬性頁)對象和StyleGalleryClass對象,前者可以用于設(shè)置Symbol對象,后者則可以用于管理和獲取Style和Symbol(符號)對象。GeoDatabase類庫:

GeoDatabase庫中包含的COM對象是用于操作地理數(shù)據(jù)庫的。這個庫中的對象包括核心地理數(shù)據(jù)對象,如Workspace(工作空間)、DataSet(數(shù)據(jù)集)等;它也包含了幾何網(wǎng)路、拓撲、TIN數(shù)據(jù)、版本對象、數(shù)據(jù)轉(zhuǎn)換等多方面的豐富內(nèi)容。第33頁/共44頁DataSourcesFile類庫:地理數(shù)據(jù)保存在不同形式的文件中,DataSourceFile庫中的對象正是起到打開文件格式地理數(shù)據(jù)的作用。DataSourcesGDB類庫:DataSourcesGDB庫中的COM對象用于打開數(shù)據(jù)源為Access數(shù)據(jù)或任何ArcSEDE支持的大型關(guān)系數(shù)據(jù)庫的地理數(shù)據(jù)。這個庫的對象不能被擴展。DataSourceGDB庫中的主要對象是工作空間工廠,一個工作空間工廠可以讓用戶在設(shè)置了正確的連接屬性后打開一個工作空間,而工作空間就代表了一個數(shù)據(jù)庫,其中保存著一個或多個數(shù)據(jù)集對象。這些數(shù)據(jù)集包括表、要素類、關(guān)系類等。庫中主要的對象AccessWorkspaceFactory,用于打開一個基于Access數(shù)據(jù)庫的PersonalGeoDatabase;ScratchWorkspaceFactory,用于產(chǎn)生一個臨時的工作空間存放選擇集對象;SdeWorkspaceFactroy,用于打開SDE數(shù)據(jù)庫。DataSourcesRaster類庫:DataSourcesRaster庫中的COM對象用于獲取保存在多種數(shù)據(jù)源中的柵格數(shù)據(jù),這些數(shù)據(jù)源包括文件系統(tǒng)、個人數(shù)據(jù)庫或者企業(yè)地理數(shù)據(jù)庫(SDE數(shù)據(jù)庫)。這個庫還提供了用于柵格數(shù)據(jù)轉(zhuǎn)換等功能的對象

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論