版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、常用網(wǎng)站, http:/www.esrichina- - 地理信息系統(tǒng)論壇 - 地理信息系統(tǒng)世界 - GIS空間站 - GIS帝國論壇 - 測繪信息網(wǎng) - 測量師網(wǎng),Chap.1 Fundamentals of developing with ArcObjects,ArcGIS Visual Studio IDE Integration Framework ArcObjects基礎(chǔ) 組件對象模型 .NET平臺概述 .NET組件與COM組件的互操作 ArcGIS開發(fā)資源 ArcGIS的二次開發(fā)方式,1.0 ArcGIS Visual Studio IDE Integration Framewor
2、k,ArcGIS開發(fā)包的安裝 ArcGIS桌面開發(fā)包ArcObjects(AO) ArcGIS Engine開發(fā)包- ArcGIS Engine(AE) ArcGIS Server開發(fā)包 ArcGIS開發(fā)包安裝后 IDE(開發(fā)環(huán)境元素) 開發(fā)類庫 開發(fā)文檔,ArcGIS Visual Studio IDE Integration framework elements,ArcGIS Project templates (項目模板) ArcGIS Project wizard ArcGIS Item templates (類模板) ArcGIS Add Class wizard ArcGIS Re
3、ference dialog box ArcGIS Component Category Registrar dialog box ArcGIS License Initializer dialog box ArcGIS Toolbox Reference dialog ArcGIS .Net Code Converter Toolbox configuration ArcGIS Snippets,1.0.0 ArcGIS Project templates,The following are the available project templates: Desktop: Windows
4、Application Console Application Class Library (General) Class Library (ArcMap) Class Library (ArcCatalog) Class Library (ArcScene) Class Library (ArcGlobe) Engine: Windows Application Console Application Class Library (General) MapControl Application GlobeControl Application Server: Web Mapping Appl
5、ication,1.0.1 ArcGIS Project wizard,The ArcGIS Project Wizard opens automatically after creating a new project using an ArcGIS Project template and helps you efficiently set up a new ArcGIS customization projectby automatically adding ArcGIS references and license initialization code to the project.
6、,1.0.2 ArcGIS item templates,Available ArcGIS item templates (類模板) ArcGIS (common): ArcGIS Class Base Command Base Tool Base Menu Base Toolbar Desktop: Context Menu Dockable Window Application Extension Just-In-Time (JIT) Extension Property Page Engine: Context Menu,1.0.3 ArcGIS Add Class Wizard,The
7、 ArcGIS Add Class Wizarddialog box appears when you select theArcGIS Class item template in the Add New Item dialog box. ArcGIS Add Class Wizard include the following 3 steps: Base Implementation option Component Category option Optional Interfaces option,Base Implementation option Customization gro
8、up Base component,Component Category option Categories Category properties,Optional Interfaces option Available optional interfaces Selected interfaces,1.0.4 ArcGIS Reference dialog box,1.0.5 ArcGIS Component Category Registrar dialog box,1.0.6 ArcGIS License Initializer dialog box,In ArcGIS 9.2, al
9、l stand-alone applications are required to explicitly initialize with a suitable ArcGIS productlicense before any ArcObjects component is accessed. You can use the ArcGIS License Initializer dialog boxto generate and add license initialization code to the appropriate application startup point in you
10、r project.,1.0.7 ArcGIS Toolbox Reference dialog box,This dialog box allows you to create a managed assembly for a custom ArcGIS toolbox, with one class representing each geoprocessing tool in the toolbox. You can then use these classes to set up and run geoprocessing tools.,1.0.8 Snippets in ArcGIS
11、 9.2 for .NET developers,Snippets are chunks of reusable code that aid programmers in performing common tasks. ArcGIS snippets are utilized in the Visual Basic and C# code editorsin Microsoft Visual Studio 2005.,1.0.9 Walkthrough: Create a command by inheriting from BaseCommand,Create a simple comma
12、nd that zooms the extent of the selected layer Create a new class library Add references Create a ZoomToLayer command Change the default icon bitmap Inherit the BaseCommand abstract class Add code to the overridden constructor of BaseCommand Add the ZoomToLayer functionality Expose the ZoomToLayer c
13、lass to COM Compile the project Use the command in ArcMap Debugging the command,Demo: Creating a command that zooms the extent of the selected layer Snippets,1.1 ArcObjects基礎(chǔ),ArcObjects簡介 ArcObjects的組件庫 理解對象模型圖,1.1.1 ArcObjects簡介,ArcObjects是 ESRI公司ArcGIS系列產(chǎn)品的開發(fā)平臺,它是基于Microsoft COM技術(shù)所構(gòu)建的GIS組件產(chǎn)品,是一套可重
14、用的通用的二次開發(fā)組件產(chǎn)品,它可以用于大量開發(fā)框架中,包括流行的像 .NET 、Visual C+、Visual Basic、Delphi等開發(fā)環(huán)境。 ArcObjects不是為最終用戶而是專門為開發(fā)人員提供的二次開發(fā)組件。 ArcObjects是ArcGIS系列產(chǎn)品的基礎(chǔ),大部分ArcGIS產(chǎn)品都是由ArcObjects構(gòu)建的。,1.1.2 ArcObjects的組件庫,ArcObjects是一套龐大的COM組件集合,ArcGIS 9.0、9.1與9.2 各種COM類型統(tǒng)計見下表:,為了更好地管理ArcObjects中數(shù)目眾多的COM對象,ESRI將它們放置在不同的組件庫中,一個組件庫就是一
15、個assembly,一個assembly有多個不同的命名空間。如ESRI.ArcGIS.ADF Assembly 的Namespaces: ESRI.ArcGIS.ADF 、ESRI.ArcGIS.ADF.BaseClasses 、ESRI.ArcGIS.ADF.CATIDs 、ESRI.ArcGIS.ADF.COMSupport 組件庫是對一個或多個COM組件中所有的類、接口、方法和類型的描述。所有的這些組件庫組件都位于com文件夾中,而其真正的實現(xiàn)在bin文件夾的眾多DLL文件中。 如果不記得某個接口或?qū)ο髮儆谀膫€命名空間的時候,可以通過開發(fā)幫助查找到。,1.1.3 理解對象模型圖,ESR
16、I提供了多種方法讓用戶了解ArcObjects組件及不同組件之間的關(guān)系 對象瀏覽器(ESRI Object Browser) ESRI提供的一系列OMD的PDF文件 開發(fā)幫助 通過閱讀ArcObjects的對象模型圖 (Object Model Diagram,OMD) ,可以快速了解ArcObjects的結(jié)構(gòu)和不同組件之間的關(guān)系。 OMD是基于UML(Unified Modeling Language,統(tǒng)一建模語言)基礎(chǔ)上的,它補充了在對象瀏覽器中看不到的信息。OMD好比城市的道路圖,可以幫助程序員來了解類之間的關(guān)系,如何從一個類到另一個類,選擇正確的接口,獲取需要的屬性和方法等。,1.1.
17、3.1 類與對象,在ArcObjects中存在三種類型的類: 抽象類(Abstract Class) 組件類(CoClass) 普通類(Class) 抽象類不能用于產(chǎn)生一個新的對象,但是可以用于定義一個子類。 組件類是一個可以直接用new創(chuàng)建對象實例的類,它的實例對象不依賴其他對象的存在而存在,其生存周期也不用其他的對象管理。 普通類不能夠直接產(chǎn)生一個對象,但它可以用其他的普通類或組件類的方法產(chǎn)生,而不是使用new關(guān)鍵字來完成。, 類與類的關(guān)系,ArcObjects的類之間存在四種關(guān)系 依賴關(guān)系 關(guān)聯(lián)關(guān)系 組合關(guān)系 類型繼承,WorkspaceFactory,Workspace,
18、MapControl,Map,Map,Layer,*,Curve,Segment,Path,PolyCurve,1.2 組件對象模型,1.2.1 軟件開發(fā)歷史 1.2.2 什么是組件對象模型,1.2.1 軟件開發(fā)歷史,軟件重用和開發(fā)效率始終是軟件開發(fā)的核心問題。 在早期(面向過程語言),人們?yōu)榱酥赜?,將一些基本的?shù)學計算函數(shù)和界面設(shè)計函數(shù)設(shè)計成函數(shù)庫,或者稱為類庫,讓其他軟件開發(fā)人員調(diào)用。它為應用開發(fā)者提供了方便,但是粒度太小。 面向?qū)ο笳Z言的出現(xiàn),提高編程的粒度。面向?qū)ο笳Z言的基本單位是類,它封裝了數(shù)據(jù)成員和函數(shù)成員 ,將最小組件的粒度提高了一個等級。但是,一個類提供了很多種方法和屬性,使用
19、和管理很不方便。 COM技術(shù)(接口)的出現(xiàn),解決了以上問題,將類的內(nèi)部屬性和方法進行分類。例如在Map類中可以做好幾個接口,在這些接口中定義不同功能組的方法和屬性,Map實現(xiàn)了這些接口,這樣就可以使用接口進行定義。但COM也存在一個嚴重的問題:DLL災難。 .NET 技術(shù)的出現(xiàn)解決了“DLL災難”問題。,1.2.2 什么是組件對象模型,組件技術(shù)標準有COM、JavaBean和CORBA,但微軟提出的COM使用最為廣泛。 微軟的COM模型是一種二進制標準,它允許任意兩個組件按照一定規(guī)則互相通信。 遵守COM標準的類的實例稱為COM對象,COM對象有三個特點:抽象、多態(tài)和繼承。 抽象是指COM對象
20、被很好地封裝起來,程序員無法獲得對象的內(nèi)部實現(xiàn)細節(jié)。COM對象之間并不能夠直接聯(lián)系,它們是通過接口來接觸的。 多態(tài)是指可以通過同樣的方法去處理不同類型的對象。 繼承分為實現(xiàn)繼承和接口繼承兩種類型。實現(xiàn)繼承是子類對象可以從其父類對象那里繼承其程序,當外界調(diào)用子類中繼承的方法的時候使用的其實是父類的方法;對于接口繼承而言,對象繼承的只是其父類方法的定義,對象必須自己去完成這些方法。,COM(Component Object Model)的核心是接口(Interface)。 接口是一種用來定義程序的協(xié)定。實現(xiàn)接口的類要與接口的定義嚴格一致。有了這個協(xié)定,系統(tǒng)就可以拋開編程語言的限制。 接口可以從多個
21、父接口繼承,而類可以實現(xiàn)多個接口,一個接口也可以被多個類實現(xiàn)。 接口可以包含方法、屬性、事件和索引器。 接口繼承機制是非常有用的,在很多時候程序員可以將一個子接口類型的對象定義為父接口類型的對象,從而實現(xiàn)一般化的操作,如: Private void CreateGeometry (IPolygon pPolygon) Private void CreateGeometry (IGeometry pPolygon),COM知識要點,COM是一種二進制級別的組件通信標準。它告訴組件之間該如何通信、一個COM對象之間的不同接口如何查詢等。 COM對象也是基于面向?qū)ο髽藴实?。COM對象可以以DLL或者
22、EXE文件形式存在,它包含著接口的具體實現(xiàn)。使用者可以通過接口來獲取它內(nèi)部的方法、屬性。 COM對象必須實現(xiàn)IUnknown接口,它負責管理COM對象生命周期并在運行時刻提供類型查詢,當COM對象不使用的時候,是這個接口定義的方法負責釋放內(nèi)存。,QI,即所謂查詢接口 由于一個COM對象有很多個接口,不同的接口管理著COM的不同類型的方法、屬性,因此從一個接口可以使用的屬性方法轉(zhuǎn)到另一個接口可以使用的屬性方法的過程稱為QI。這個過程也是由IUnknown接口管理的。 IMap pMap ; IActiveView pActiveView ; pMap = axMapControl1.Map; /
23、獲取控件中的地圖 pActiveView = pMap as IActiveView; /QI 每個組件都有一個獨一無二的標識GUID。接口的GUID稱為IID,而組件類的GUID稱為CLSID。CLSID還有一個文本別名,即所謂的ProgID,它是一個由工程名加組件類類名組成的字符串。 一個COM對象可以有多個接口,一個接口也可以被多個COM對象實現(xiàn)。,接口分為兩種,即內(nèi)向接口和外向接口。 內(nèi)向接口是組織COM對象相關(guān)的方法和屬性,COM對象必須實現(xiàn)所有的接口內(nèi)容; 外向接口是用于組織COM對象相關(guān)的事件。 COM對象的接口一旦被公布,就不能再修改,但可以增加新接口,在ArcObjects中
24、有很多以“2”、“3”結(jié)尾的接口,都是這樣發(fā)展的產(chǎn)物。 COM組件必須被注冊后才能使用。 COM的缺陷:由于COM對象可以被重用,這樣多個程序可能共用一個COM對象,如果這個COM組件升級了,就很可能出現(xiàn)其中某個程序無法使用新組件,導致程序不能運行的情況,這種情況被稱為“DLL HELL”(DLL災難)。,1.3 .NET平臺概述,針對Windows平臺存在的這些缺陷,微軟提出了全新的.NET技術(shù)體系,其主要包括 .NET Framework Visual Studio.NET Visual Studio .NET 是一套完整的開發(fā)工具,用于生成 ASP Web 應用程序、XML Web se
25、rvices、桌面應用程序和移動應用程序。 .NET Framework 是生成、部署和運行 Web 服務及應用程序的平臺。.NET Framework 具有兩個主要組件: 通用語言運行時(Common Language Runtime-CLR),是 .NET Framework 的基礎(chǔ) .NET Framework 類庫。,.NET Framework體系結(jié)構(gòu),1.3.1 通用語言運行時(CLR),通用語言運行時管理內(nèi)存、線程執(zhí)行、代碼執(zhí)行、代碼安全驗證、編譯以及其他系統(tǒng)服務。 CLR處于.NET Framework的最底層,是.NET Framework的基礎(chǔ),它為C#.NET、VB.NE
26、T、C+、J#等多種語言提供了統(tǒng)一的運行環(huán)境,使得用某種高級語言編寫的應用程序可以在不同的操作系統(tǒng)和硬件上運行,而不需要按照特定環(huán)境重寫應用程序。,.NET 環(huán)境下程序編譯執(zhí)行過程,Traditional Compilation:,Compilation and Execution in .NET,具體的運行過程: 使用VB、C# 或任一種CLR支持的編程語言編寫應用程序源代碼 由編程語言對應的編譯器將源代碼翻譯成一個程序集(Assembly)- .NET組件,為一EXE或DLL文件。這個程序集包括中間語言MSIL代碼、元數(shù)據(jù)和一個文件清單。 MSIL代碼也簡稱IL代碼,其特點是獨立于特定操作
27、系統(tǒng)和硬件平臺。 元數(shù)據(jù)詳細描述了MSIL代碼正確執(zhí)行所需的各種相關(guān)數(shù)據(jù)類型,包括描述Assembly的信息,描述類型的信息,描述其它屬性的信息等。這樣就使.NET應用程序代碼具備了自描述特性。 清單則列出了程序集中的所有文件和軟件組件,同時指出了CLR在哪里可以找到應用程序運行時需要的其它組件。,CLR加載IL代碼,同時收集有關(guān)應用程序的事實信息。 即時編譯器JIT將IL代碼以調(diào)用的對象方法為單位動態(tài)編譯成可執(zhí)行的本機代碼。不同的機器使用不同的JIT編譯器,所以同一個應用程序的MSIL代碼經(jīng)不同機器的JIT編譯器編譯之后,便可以在不同的機器上執(zhí)行。,Single file assembly,
28、Multi-file assembly,通用類型系統(tǒng),CLR借助通用類型系統(tǒng)(Common Type System,CTS)對代碼類型進行嚴格的安全檢查,避免了不同組件之間可能存在的類型不匹配的問題。,1.3.2 .NET Framework 類庫,.NET Framework類庫(FCL)是一套軟件組件,用于編寫在CLR控制下運行的代碼。類庫分級組成了一個龐大的功能集,包括顯示圖形用戶界面、讀寫XML數(shù)據(jù)、在Internet上通信、訪問數(shù)據(jù)庫等多種功能。,1.4 .NET組件與COM組件的互操作,本節(jié)內(nèi)容:,COM包裝(COM Wrappers) ESRI提供的Primary Interop
29、 Assemblies 向COM公開.NET對象 COM到.NET的類型轉(zhuǎn)換,1.4.1 COM包裝(COM Wrappers),為了實現(xiàn)傳統(tǒng)的COM程序與.NET程序之間的相互調(diào)用,.NET提供了兩個包裝類:運行時可調(diào)用包裝(runtime callable wrapper,RCW)和COM可調(diào)用包裝(COM callable wrapper,CCW)。每當一個.NET客戶程序調(diào)用一個COM對象的方法時就會創(chuàng)建一個RCW對象;相反,每當一個COM客戶程序調(diào)用一個.NET對象的方法時就會創(chuàng)建一個CCW對象。,1.4.2 ESRI提供的Primary Interop Assemblies,Pri
30、mary interop assemblies(PIAs,主互操作程序集)是COM軟件廠商提供的為其COM組件在.NET環(huán)境下運行的互操作程序集,PIAs暴露COM組件中的所有類, 接口和常量,作為 .NET 托管類。 ESRI為所有的ArcObjects類型庫提供了PIAs,ArcGIS的.NET開發(fā)人員只能使用這些安裝在GAC (Global Assembly Cache,缺省安裝目錄為C:WINDOWSassembly)下的PIAs. 這些PIAs的公鑰標記(public key)為8FC3CC631E44AD86.,Controls PIAs,Strongly named assemb
31、lies provide an RCW for each Engine ActiveX control. RCW class inherits .NET Framework AxHost class. Allows controls to be hosted on Windows forms,1.4.3 向COM公開.NET對象,Registering .NET Components with COM Registering .NET Classes in COM Component Categories, 注冊.NET組件,使用定制的.NET組件來擴展ArcGIS應用程序,需要
32、在COM注冊表中注冊.NET組件,并將.NET的程序集輸出為COM的類型庫(tlb),完成這一任務有兩條途徑: 一是使用.NET Framework提供的Regasm工具 二是使用Visual Studio.NET開發(fā)環(huán)境(Register for COM Interop)。 程序集注冊 (Regasm.exe) 的命令行工具用來注冊或注銷與 COM 一起使用的程序集。Regasm.exe 會將有關(guān)類的信息添加到系統(tǒng)注冊表中,以便 COM 客戶端透明地使用 .NET 類。例如: regasm EditTools.dll /tlb:EditTools.tlb /codebase,在Visual
33、Studio.NET開發(fā)環(huán)境中,通過下列步驟來來自動完成.NET組件的注冊: 在“解決方案資源管理器”中,鼠標右鍵點擊要注冊的項目(即正在開發(fā)的.NET組件), 然后點擊“屬性”; 在項目“屬性頁”對話框中,點擊“生成”,在右邊的窗格中,選中“為COM Interop注冊” ,點擊“確定”按鈕,即可完成.NET組件的自動注冊。, 在COM組件類目中注冊.NET類,大量的ArcGIS擴展都依賴COM組件類目。事實上,大部分定制的ArcGIS組件類必須注冊到合適的COM組件類目中才能正常使用,例如,所有的ArcMap命令和工具必須注冊到“ESRI Mx Commands”組件類目中。
34、 可以通過下列途徑將.Net 類注冊到COM組件類目中。 自定義對話框 組件類目管理工具 使用COM注冊函數(shù)(COMRegisterFunction),自定義對話框,在.NET環(huán)境下自定義的ArcGIS命令和工具可以通過ArcGIS的Customize對話框中的Add From File按鈕快速地添加到工具條中。 在這種情況下,只需要簡單地瀏覽一下TLB并打開它。ArcGIS框架會自動地將從類型庫中選中的類添加到合適的組件類目中。,組件類目管理工具,使用Component Catesories Manager(Categories.exe),瀏覽類型庫,并選擇合適的類目。,使用COM注冊函數(shù)(
35、COMRegisterFunction),添加注冊代碼到.NET類中,這樣每當注冊.NET組件的時候,會在特定的組件類目中自動注冊.NET類。 .NET Framework類庫中包含兩個屬性類(ComRegisterFunction和ComUnregisterFunction),它們允許用戶指定方法注冊或注銷.NET類。 在組件類目內(nèi)注冊一個組件類,需要程序員知道組件類目的唯一ID(CATID)。 為了幫助程序員簡化這一注冊過程,ESRI提供了utility程序集(ESRI.ArcGIS.ADF.dll),其中包含ESRI.ArcGIS. ADF.CATIDs名稱空間,這個名稱空間中包含代表A
36、rcGIS組件類目的類,這些類知道組件類目的CATID,并提供兩個靜態(tài)方法(Register and Unregister)來添加或刪除組件類。,Guid(d36096cd-4680-42d6-8e5a-8c88cf86170b) public sealed class PanTool : BaseTool #region Component Category Registration ComRegisterFunction() static void Reg(string regKey) MxCommands.Register(regKey); ComUnregisterFunction()
37、 static void Unreg(string regKey) MxCommands.Unregister(regKey); #endregion . ,1.4.4 COM到.NET的類型轉(zhuǎn)換,命名空間:ESRI.ArcGIS加上庫名。 例如Geometry庫的命名空間是ESRI.ArcGIS.Geometry。所有類型通過它們的完整的命名空間和類型名識別。 所有的COM類被轉(zhuǎn)換成為托管類;托管類的類名為起初的類名加上“Class”, 例如,Point組件類的運行時可調(diào)用包裝(RCW)為 PointClass, Map組件類的運行時可調(diào)用包裝為MapClass. C中不支帶參數(shù)的屬性。 I
38、Layer pLayer = axMapControl1.get_Layer(0); 在上例中帶參數(shù)的Layer屬性,在C#中是不支持的,所以改用get_Layer()方法。,1.5 ArcGIS開發(fā)資源,ESRI has created two essential resources for ArcGIS developers: the ArcGIS Software Developer Kit the ESRI Developer Network (EDN) Web site (EDN).,1.5.1 ArcGIS Software Developer Kit (SDK),The ArcG
39、IS SDK is the collection of diagrams, Help, IDEIntegration, samples, and Tools geared to help developers implement custom ArcGIS functionality. The graphic below depicts a typical SDK installation., ArcGIS Developer Help System,The ArcGIS Developer Help System is the gateway to all the SDK do
40、cumentation including help for the add-ins, developer tools, and samples; in addition, it serves as the complete syntactical reference for all object libraries., Samples,The ArcGIS Developer Kit contains over 600 samples many of which are written in several languages. The samples are describe
41、d in the help system and the source code and project files are installed in the DeveloperKitsamples folder. The help systems table of contents for the samples section mirrors the samples directory structure., Developer Tools,The ArcGIS Developer Tools are executables that ESRI has provided to
42、 facilitate your ArcObjects development. The developer tools are installed under the DeveloperKittools folder. There is one exception, the Component Category Manager is located in the ArcGISbin folder.,Tools available with each ArcGIS developer kit Component Categories Manager Registers components w
43、ithin a specific component category. Fix Registry Utility Fixes corruptions in the Component Categories section of the registry. GUID Tool Generates GUIDs, in registry format, for use within source code. Library Locator dentifies object library containing a specified interface, coclass, enumeration,
44、 or structure.,Additional tools available in the Desktop developer kit ESRI Object Browser Advanced object browser. Extract VBA Extracts VBA code from a corrupt map document (.mxd)., THE ARCGIS DEVELOPER DOCUMENTATION SERIES,Extending ArcGIS Desktop with .NET Building solutions with ArcGIS En
45、gine using .NET Creating ArcGIS Server solutions, Library Reference,Library Reference provides detail information about all components, Classes, Interfaces etc. contained in ArcGIS.,1.5.2 ESRI Developer Network Web site, The EDN Web site is the place to find the most up-to-date ArcGIS 9 devel
46、oper information including sample code, technical documents, object model diagrams, and the complete object library reference. The web site is a reflection of the ArcGIS Developer Help system except it is online and therefore more current. The web site has some additional features including an advan
47、ced search utility that enables you to control the scope of your searches. For example, you can create a search that only scans the library reference portion of the help system.,1.6 ArcGIS的二次開發(fā)方式,ArcGIS提供了強大的二次開發(fā)工具,程序員可以依據(jù)實際業(yè)務和項目的需要 使用VBA進行ArcGIS桌面的定制 使用DLL組件開發(fā)擴展ArcGIS桌面 使用ArcObjects提供的可視化控件來編寫一個脫離了
48、ArcGIS桌面的獨立軟件 基于ArcGIS Server的Web應用開發(fā),1.6.1 使用VBA進行ArcGIS桌面的定制,在ArcMap和ArcCatalog等ArcGIS程序中可以使用VBA 進行嵌入式二次開發(fā),VBA并不是一個獨立的程序,它是嵌在ArcGIS程序中的一種工業(yè)化開發(fā)工具。VBA是VB的子集。 使用VBA開發(fā)環(huán)境進行ArcGIS的定制和擴展是最簡單方便的,因為VBA編程實際上是處于一個程序框架中,在這個環(huán)境里面,Application和ThisDocument兩個全局變量可以讓程序員直接獲取程序本身和程序所使用的文檔對象。, 添加一個工具欄,啟動ArcMap程
49、序,點擊“Tools”菜單的“Customize”項后程序會彈出一個“Customize”對話框,選擇“Toolbars”一項,然后點擊“new”按鈕,會彈出一個“new Toolbar”對話框 在“ToolbarName”中填入“MyToolbar”,選擇保存在模板上,點擊“OK” 。, 編寫一個宏命令,宏是一種操作命令,它和菜單操作命令一致。 點擊ArcMap的菜單欄Tools,指向Macros然后點擊Macros,彈出一個Macros對話框。 在Macro Name中鍵入:MyZoomIn,然后點擊“Create按鈕,Sub MyZoomIn() Dim pDoc As IMxDocument Dim pEnv As IEnvelope 獲得文檔對象 Set pDoc = ThisDocument 獲取文檔視圖目前的顯示范圍 Set pEnv = pDoc.ActiveView.Extent 改變范圍 pEnv.Expand 0.5, 0.5, True 傳入新的顯示范圍 pDoc.ActiveView.Extent = pEnv 刷新視圖 pDoc.ActiveView.Refresh End Sub, 交互式工具,ArcMap給二次開發(fā)者提供了使用UIControl進行鼠標交互的方法。 點擊“工具”菜單的“定制”(Customi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防設(shè)施電伴熱施工合同
- 建筑拆除施工總價承包合同
- 互聯(lián)網(wǎng)公司CTO招聘合同樣本
- 物流運輸木門更換工程合同
- 汽車維修項目審計要點
- 建筑隔震工程倒板施工協(xié)議
- 媒體行業(yè)薪酬分配改革管理辦法
- 網(wǎng)絡文學改編劇招聘合同
- 咨詢公司公關(guān)部聘用合同
- 建筑檢測探傷施工合同
- 排球正面上手發(fā)球課件
- GB/T 16915.1-2024家用和類似用途固定式電氣裝置的開關(guān)第1部分:通用要求
- 某工業(yè)園建設(shè)可行性研究報告
- 投資建廠房收租合同模板
- 行政職業(yè)能力測試分類模擬題462
- 山東省菏澤市巨野縣2023-2024學年八年級上學期期中考試數(shù)學試卷(含解析)
- 企業(yè)員工宿舍租賃管理協(xié)議
- 2025屆高考語文一輪復習:小說物象含義及作用
- 中國人民解放軍空成立紀念日課件模板
- 湖北省襄陽市2023-2024學年六年級上學期英語期中試卷(含答案)
- 民航與機場管理作業(yè)指導書
評論
0/150
提交評論