gis二次开发第1课.ppt
GIS二次开发,主讲:张云鹏,学习基础,掌握GIS基本原理。掌握C+/C#程序设计语言。熟悉ArcGIS Desktop应用软件。掌握空间数据库基础知识,了解Geodatabase和ArcSDE。,教材与参考材料,基于ArcObjects与C#.NET的GIS应用开发,兰小机 等编著ArcGIS Engine开发从入门到精通,邱洪钢 等编著插件式GIS应用框架的设计与实现,蒋波涛 等编著ArcGIS 开发工具包,包括ArcGIS开发帮助、组件帮助、对象模型图和示例ESRI Developer Network:http:/,第一课 GIS二次开发基础,ArcGIS 产品体系ArcObjects基础组件对象模型.NET组件与COM组件的互操作基于ArcGIS的开发方式ArcGIS Visual Studio IDE Integration FrameworkArcGIS开发资源,ArcGIS 产品体系,ArcGIS 产品体系,ArcGIS Desktop高级GIS应用程序的一个集成套件。ArcGIS Engine通过多种应用程序接口建立自定义应用程序的嵌入式GIS组件库。ArcGIS Server为企业和Web计算框架建立服务器端GIS应用程序的一个平台,可用于建立Web服务和Web应用程序。ArcIMS通过开放Internet协议发布地图、数据和元数据的GIS Web服务器。,ArcObjects 与 ArcGIS Engine,ArcObjects(简称AO)是ESRI公司ArcGIS系列产品的基础。ArcObjecs是基于Microsoft COM技术所构建的GIS组件。ArcGIS Engine(简称AE)是ArcObjects的子集。,ArcObjects基础,ArcObjects是一套庞大的COM组件集合,ArcGIS 各版本各种COM类型统计见下表。,ArcObjects基础,为了更好地管理ArcObjects中数目众多的COM对象,ESRI将它们放置在不同的组件库中,对于.NET 来说,一个组件库就是一个assembly(程序集),一个assembly有多个不同的命名空间。如ESRI.ArcGIS.ADF Assembly 的Namespaces:ESRI.ArcGIS.ADF,ESRI.ArcGIS.ADF.BaseClasses,ESRI.ArcGIS.ADF.CATIDs,ESRI.ArcGIS.ADF.COMSupport,ESRI.ArcGIS.ADF.Resources 组件库是对一个或多个COM组件中的类、接口、方法和类型的描述。所有的这些组件库组件都位于com文件夹中,而其真正的实现在bin文件夹的众多DLL文件中。,ArcObjects 10的组件库共65个(65assemblies),详细内容参见Learning ArcObjects、ArcObjects SDK API Reference如果不记得某个接口或对象属于哪个命名空间的时候,可以通过开发帮助查找。,ArcObjects基础,ArcGIS Engine组件,基本服务由核心ArcObjects构成,几乎所有GIS应用程序都需要,如要素几何体和显示。,数据存取用于对栅格和矢量格式进行存取,包括强大而灵活的地理数据库。,地图表达用于创建和显示带有符号体系和标注功能的ArcObjects,及包括创建自定义的专题制图功能的ArcObjects。,开发组件用于快速应用程序开发的高级用户接口控件和用于高效开发的一个综合帮助系统。,运行时选项运行时可以与标准功能或其他高级功能一起部署。,ArcGIS Engine组件,理解对象模型图,ESRI提供多种方法让用户了解ArcObjects组件及组件之间的关系。对象浏览器(ESRI Object Browser)ESRI提供的一系列OMD的PDF文件开发帮助通过阅读ArcObjects的对象模型图(Object Model Diagram,OMD),可以快速了解ArcObjects的结构和不同组件之间的关系。OMD是基于UML(Unified Modeling Language,统一建模语言)基础上的,它补充了在对象浏览器中看不到的信息。OMD好比城市的道路图,可以帮助程序员来了解类之间的关系,如何从一个类到另一个类,选择正确的接口,获取需要的属性和方法等。,理解对象模型图,ESRI提供了多种方法让用户了解ArcObjects组件及不同组件之间的关系ESRI提供的一系列OMD的PDF文件开发帮助、API ReferenceVS.NET中的对象浏览器,VS 中的对象浏览器,ArcObjects的对象模型(OMD),FeatureLayer,Map,MxDocument,Application,ArcMap,*,*,Layer,FeatureDataset,*,Geodatabase,FeatureClass,Table,DataSet,0.1,Map Layer,类与对象,在ArcObjects中存在三种类型的类抽象类(Abstract Class)组件类(CoClass)普通类(Class)抽象类不能用于产生一个新的对象,但是可以用于定义一个子类。组件类是一个可以直接用new创建对象实例的类,它的实例对象不依赖其他对象的存在而存在,其生存周期也不用其他的对象管理。普通类不能够直接产生一个对象,但它可以用其他的普通类或组件类的方法产生,而不是使用new关键字来完成。,类与对象,ArcObjects的类之间存在四种关系依赖关系关联关系组合关系类型继承,对象模型示例,什么是组件对象模型,软件重用和开发效率始终是软件开发的核心问题。在早期(面向过程语言),人们为了重用,将一些基本的数学计算函数和界面设计函数设计成函数库,让其他软件开发人员调用。它为应用开发者提供了方便,但是重用的粒度太小。面向对象语言的出现,提高编程的粒度。面向对象语言的基本单位是类,它封装了数据成员和函数成员,将最小组件的粒度提高了一个等级。但是,一个类提供很多种方法和属性,使用和管理很不方便。COM技术(接口)的出现,解决了以上问题,将类的内部属性和方法进行分类。例如在Map类中有好几个接口,在这些接口中定义不同功能组的方法和属性,Map实现了这些接口,这样就可以使用接口进行定义。,什么是组件对象模型,组件技术标准有COM、JavaBean和CORBA,但微软提出的COM使用最为广泛。微软的COM模型是一种二进制标准,它允许任意两个组件按照一定规则互相通信。COM(Component Object Model)的核心是接口(Interface)。接口是一种用来定义程序的协定。实现接口的类要与接口的定义严格一致。接口可以继承多个父接口,而类可以实现多个接口,一个接口也可以被多个类实现。接口可以包含方法、属性、事件和索引器。,COM知识要点,COM是一种二进制级别的组件通信标准。它告诉组件之间该如何通信、一个COM对象之间的不同接口如何查询等。COM对象也是基于面向对象标准的。COM对象能够以DLL或者EXE文件形式存在,它包含着接口的具体实现。使用者可以通过接口来获取它内部的方法、属性。COM对象的接口一旦被公布,就不能再修改。COM对象必须实现IUnknown接口,它负责管理COM对象生命周期并在运行时刻提供类型查询,当COM对象不使用的时候,是这个接口定义的方法负责释放内存。,COM知识要点,QI(Query Interface),即所谓查询接口由于一个COM对象有很多个接口,不同的接口管理着COM的不同类型的方法、属性,因此从一个接口可以使用的属性方法转到另一个接口可以使用的属性方法的过程称为QI。这个过程也是由IUnknown接口管理的。IMap pMap;IActiveView pActiveView;pMap=axMapControl1.Map;/获取控件中的地图 pActiveView=pMap as IActiveView;/QI(或者 pActiveView=(IActiveView)pMap;),COM知识要点,每个组件都有一个独一无二的标识GUID。接口的GUID称为IID,而组件类的GUID称为CLSID。CLSID还有一个文本别名,即所谓的ProgID,它是一个由项目名加组件类类名组成的字符串。一个COM对象可以有多个接口,一个接口也可以被多个COM对象实现。接口分为两种,即内向接口和外向接口。内向接口(Inbound Interface)是组织COM对象相关的方法和属性,COM对象必须实现所有的接口内容;外向接口(Outbound Interface)是用于组织COM对象相关的事件,开发人员根据需要实现事件接口。,COM知识要点,接口可以从多个父接口继承接口继承机制非常有用,在很多时候程序员可以将一个子接口类型的对象定义为父接口类型的对象,从而实现一般化的操作,如:Private void CreateGeometry(IPolygon pPolygon)Private void CreateGeometry(IGeometry pPolygon)COM对象的接口一旦被公布,就不能再修改,但可以增加新接口,在ArcObjects中有很多以“2”、“3”结尾的接口,都是这样发展的产物。COM组件必须被注册后才能使用。,COM知识要点,COM的缺陷由于COM对象可以被重用,这样多个程序可能共用一个COM对象,如果这个COM组件升级了,就很可能出现其中某个程序无法使用新组件,导致程序不能运行的情况,这种情况称为“DLL HELL”(DLL灾难)。.NET的解决方案在.Net产生前,使用唯一的Guid来标识每一个COM组件,为了运行COM组件就必须在组册表中对其进行注册。多个应用程序可以共享相同的COM组件,当COM组件版本升级时,可能导致原来引用此COM组件的程序不能正确运行。在.Net中,微软引入了的解决方案:强命名程序集(Strong Name),以及与之配套的全局程序集缓存(GAC-Global Assembly Cache)来解决这个问题。,.NET组件与COM组件的互操作,COM包装(COM Wrappers),为了实现传统的COM程序与.NET程序之间的相互调用,.NET提供了两个包装类:运行时可调用包装(runtime callable wrapper,RCW)和COM可调用包装(COM callable wrapper,CCW)。每当一个.NET客户程序调用一个COM对象的方法时就会创建一个RCW对象;相反,每当一个COM客户程序调用一个.NET对象的方法时就会创建一个CCW对象。,COM包装(COM Wrappers),COM包装(COM Wrappers),ESRI提供的Primary Interop Assemblies,Primary interop assemblies(PIAs,主互操作程序集)是COM软件厂商提供的为其COM组件在.NET环境下运行的互操作程序集,PIAs暴露COM组件中的所有类、接口和常量,作为.NET 托管类。ESRI为所有的ArcObjects类型库提供了PIAs,ArcGIS的.NET开发人员只能使用这些安装在GAC(Global Assembly Cache,缺省安装目录为C:WINDOWSassembly)下的PIAs。这些PIAs的公钥标记(public key)为8FC3CC631E44AD86。,向COM公开.NET对象,注册.NET组件定制.NET组件来扩展ArcGIS桌面应用程序,需要在COM注册表中注册.NET组件,并将.NET的程序集(assemblies)输出为COM的类型库(tlb),这一工作可以通过以下2个途径:使用.NET Framework提供的程序集注册工具(Regasm.exe)regasm PATH*.dll/tlb:*tlb使用Visual Studio.NET开发环境(Register for COM Interop)在COM组件类目中注册.NET类大部分定制的ArcGIS组件必须注册到适合的COM组件类目中才能正常使用,这一工作可以通过以下2个途径:通过ArcGIS的Customize对话框直接添加TLB文件。使用组件类目管理工具Component Catesories Manager(Categories.exe)使用COM注册函数(COMRegisterFunction),在Visual Studio.NET开发环境中,通过下列步骤来来自动完成.NET组件的注册:在“解决方案资源管理器”中,鼠标右键点击要注册的项目(即正在开发的.NET组件),然后点击“属性”;在项目“属性页”对话框中,点击“生成”,在右边的窗格中,选中“为COM Interop注册”,点击“确定”按钮,即可完成.NET组件的自动注册。,(a)注册.NET组件,(b)在COM组件类目中注册.NET类,大量的ArcGIS扩展都依赖COM组件类目。事实上,大部分定制的ArcGIS组件必须注册到合适的COM组件类目中才能正常使用。例如:所有的ArcMap命令和工具必须注册到“ESRI Mx Commands”组件类目中。可以通过下列途径将.Net 类注册到COM组件类目中。自定义对话框组件类目管理工具使用COM注册函数(COMRegisterFunction),自定义对话框,在.NET环境下自定义的ArcGIS命令和工具可以通过ArcGIS的Customize对话框中的Add From File按钮快速地添加到工具条中。在这种情况下,只需要简单地浏览一下TLB并打开它。ArcGIS框架会自动地将从类型库中选中的类添加到合适的组件类目中。,组件类目管理工具,使用Component Catesories Manager(Categories.exe),浏览类型库,并选择合适的类目。,使用COM注册函数(COMRegisterFunction),添加注册代码到.NET类中,这样每当注册.NET组件的时候,会在特定的组件类目中自动注册.NET类。.NET Framework类库中包含两个属性类(ComRegisterFunction和ComUnregisterFunction),它们允许用户指定方法注册或注销.NET类。在组件类目内注册一个组件类,需要程序员知道组件类目的唯一ID(CATID)。为了帮助程序员简化这一注册过程,ESRI提供了utility程序集(ESRI.ArcGIS.ADF.dll),其中包含ESRI.ArcGIS.ADF.CATIDs名称空间,这个名称空间中包含代表ArcGIS组件类目的类,这些类知道组件类目的CATID,并提供两个静态方法(Register and Unregister)来添加或删除组件类。,Guid(d36096cd-4680-42d6-8e5a-8c88cf86170b)public sealed class PanTool:BaseTool#region Component Category RegistrationComRegisterFunction()static void Reg(string regKey)MxCommands.Register(regKey);ComUnregisterFunction()static void Unreg(string regKey)MxCommands.Unregister(regKey);#endregion.,示例:使用COM注册函数,COM到.NET的类型转换,命名空间:ESRI.AICGIS加上库名。例如Geometry库的命名空间是ESRI.ArcGIS.Geometry。所有类型通过它们的完整的命名空间和类型名识别。所有的COM组件类被转换成为托管类;托管类的类名为起初的类名加上“Class”,例如,Point组件类的运行时可调用包装(RCW)为 PointClass,Map组件类的运行时可调用包装为MapClass.C中不支带参数的属性。ILayer pLayer=axMapControl1.get_Layer(0);在上例中带参数的Layer属性,在C#中是不支持的,所以改用get_Layer()方法。,基于ArcGIS的开发方式,ArcGIS桌面应用程序定制/扩展方式使用VBA/Python 脚本,定制/扩展ArcGIS桌面应用程序ArcGIS10后续版本不再支持VBA定制开发插件(add-in),定制/扩展ArcGIS 桌面应用程序ArcGIS10新推出的扩展桌面应用程序的方式开发定制组件,扩展ArcGIS 桌面应用程序功能最强大的扩展ArcGIS桌面应用程序的方式ArcGIS Engine开发ArcGIS Server开发Mobile GIS开发,使用Pyhton脚本,Python 是一种免费的、跨平台的开源编程语言,它功能强大且简单易学,已经得到广泛的应用和支持。ESRI 已将 Python 完全纳入 ArcGIS,成为一种用于数据分析、数据转换、数据管理和地图自动化的语言。易于学习,非常适合初学者,也特别适合专家使用可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本)可移植,跨平台可嵌入(使 ArcGIS 可脚本化)稳定成熟用户社区规模大,Python在ArcGIS中的发展,ArcGIS中的Python,ArcGIS中的Python,ArcPy,ArcPy-ArcGIS新的Python库由arcgisscripting升级而来包含有函数(Function)、类(Class)和模块(Module)功能实现能访问所有gp工具数据转换、数据管理数据分析自动化制图,ArcPy详细参考:ArcGIS Desktop 10帮助专业库地理处理ArcPy站点包,ArcPy 模块模块为通常包含函数和类的 Python 文件。有一系列模块支持 ArcPy,包括制图模块(arcpy.mapping)、Spatial Analyst 模块(arcpy.sa)和Geostatistical Analyst 模块(arcpy.ga)。ArcPy 类ArcPy 类,如 SpatialReference 和 Extent 类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。,ArcPy 函数函数是用于执行某项特定任务程序单元。在 ArcPy 中,所有地理处理工具均以函数形式提供,但并非所有函数都是地理处理工具。除工具之外,ArcPy 还提供多种函数来更好地支持 Python 地理处理工作流。函数或方法可用于列出某些数据集、检索数据集的属性、在将表添加到地理数据库之前验证表名称,或执行其他许多有用的脚本任务。,独立的 Python 脚本Python 脚本是可以执行的.py 文件。独立 Python 脚本可通过两种方式执行:通过操作系统提示或开发应用程序(如 PythonWin),或在 Windows 资源管理器中双击.py 文件。Python 脚本工具Python 脚本工具是已添加到地理处理工具箱的 Python 脚本。添加为脚本工具后,便可以像使用其他地理处理工具一样使用此脚本工具-可以从工具对话框打开和执行、可以在 Python 窗口和 ModelBuilder 中使用,并可以从其他脚本和脚本工具中调用。,Python 窗口ArcGIS 10使用 Python 窗口代替原来的命令行窗口,通过Python窗口,用户可以快捷地在 ArcGIS 内部使用 Python,从而以交互方式运行地理处理工具和功能以及充分利用其他 Python 模块和库。此窗口还为用户学习 Python 提供了一个途径。Python窗口提供了智能感知和代码自动完成功能.,简单实例:,ArcGIS引入了后台地理处理(Background Geoprocessing)的概念,允许Geoprocessing工具、ArcGIS操作同时运行(使用多核CPU)。,开发定制组件,Add-in是一种能够快速扩展桌面应用程序功能的全新扩展方式更加容易创建更加容易共享更加安全更易安装管理ArcGIS10 Add-in所支持的类型按钮和工具组合框菜单和右键菜单Multi-items工具条Tool palettes可停靠窗体Application extensionsEditor extensions,XML Metadata(Config.esriaddinx),Add-in的部署复制/邮件发送编译好的esriaddin文件到需要部署机器上(已经安装好ArcGIS 桌面);在部署机器上双击esriaddin文件,弹出Add-in安装界面,让用户查看该插件的一些元信息,然后让用户决定是否安装该插件;安装插件是不需要重启任何ArcGIS Desktop应用程序的。安装完之后,就可以通过相应ArcGIS Desktop应用程序的Add-in Manager来查看已安装的Add-in,也可以通过它来卸载。一些Add-in所包含的对象,例如Command、Tool、Toolbar,是需要用户通过Customize窗口定制添加到界面上的。Extension对象,则需要用户通过Extensions窗口勾选加载。,ArcGIS10中的Add-In,Add-in共享与安全,实现局域网内共享,设置共享目录、设置安全级别,Add-in 数字签名,工具:ESRISignAddin.exeC:Program FilesCommon FilesArcGISbinESRISignAddIn.exe,开发定制组件,使用C#,VB.NET,Java,C+等语言,调用ArcObjects,可以构建扩展ArcGIS桌面应用程序的组件(DLL)。DLL即动态链接库(Dynamic Link Library),它是Windows平台下的一种类的文件编译格式。该格式文件可以被任何支持COM规则的语言所支持和引用。ArcObjects组件本身文件就是DLL文件。,定制DLL组件“放大视图一倍”工具,实现ICommand接口主要步骤新建项目:项目类型为-类库引用ESRI对象库 新建ZoomIn命令类添加命名空间引用实现ICommand接口为ICommand的成员添加代码设置命令图标 Expose the ZoomInCsharp class to COM添加COM类目(COM category)注册函数编译项目在ArcMap中使用创建的命令,基于ArcGIS Engine的开发,ArcGIS Engine是一个完整的嵌入GIS组件库和工具,开发人员可以用来创建新的独立的GIS应用程序或者在自定义的应用程序或已经存在的应用程序中嵌入GIS功能。ArcGIS Engine是ArcObjects的子集,主要用于独立的GIS应用开发,它不依赖于ArcGIS Desktop。ArcGIS Engine由两部分组成:一个软件开发包(SDK)和一个可分发的运行时(Runtime)。除此之外,应用程序的功能可以使用可选的扩展模块来进行扩展。,基于ArcGIS Engine的开发,基于ArcGIS Engine的开发,ArcGIS Engine支持Windows平台及跨平台开发。Windows平台开发,有以下APIs:.NET VC+跨平台开发,有以下APIs:JavaC+for WindowsC+for Solaris/Linux,基于ArcGIS Engine的开发,使用ArcGIS Engine控件开发独立的GIS应用,Using the Winforms ArcGIS Engine controlsUsing ArcGIS Engine Controls in WPF(New in ArcGIS 10),基于ArcGIS Server的开发,ArcGIS Server 是功能强大的基于服务器的 GIS 产品,用于构建集中管理的、支持多用户的、具备高级GIS功能的企业级GIS应用与服务。开发者使用ArcGIS Server可以构建Web应用、Web服务、以及其它运行在标准的.NET和J2EE Web服务器上的企业应用。ArcGIS Server包含2个主要部分:GIS服务器和多种的开发框架。,基于ArcGIS Server的开发,ArcGIS Server提供的开发环境ArcGIS Server SDK for.NET and JavaArcGIS JavaScript APIArcGIS JavaScript extension for the Google Maps APIArcGIS JavaScript extension for Bing MapsArcGIS API for Microsoft Silverlight/Windows Presentation Foundation(WPF)ArcGIS API for FlexArcGIS Server Representational State Transfer(REST)APIArcGIS Server Simple Object Access Protocol(SOAP)SDK,基于ArcGIS Server的开发,Mobile GIS开发,ArcGIS技术可以部署到一系列移动设备上,包括PDA、笔记本电脑以及平板电脑等。在野外中使用GIS,主要依靠将应用程序定制成简单的移动工作任务以及对中心 WebGIS服务器无线访问。ArcGIS为用户提供了三种移动GIS解决方案。使用ArcGIS Desktop和ArcGIS Engine建立的应用程序:这种方案常部署在用于野外的笔记本电脑或者平板电脑上。ArcPad:ArcPad为使用Windows CE兼容设备的野外工作人员提供了一个以GIS为中心的解决方案。ArcGIS Mobile SDK:ArcGIS Server 包含的一个软件开发包,可以被用于智能手机、PocketPC等设备上的应用开发。,为了提高软件开发效率,ArcGIS开发包为开发人员提供了集成于VS环境的模板、向导、命令、代码段等。ArcGIS开发包的安装ArcGIS桌面开发包ArcObjects(AO)ArcGIS Engine开发包-ArcGIS Engine(AE)ArcGIS Server开发包ArcGIS开发包安装后VS IDE集成框架(开发环境元素)开发类库开发文档,ArcGIS Visual Studio IDE Integration Framework,ArcGIS Visual Studio IDE Integration Framework for add-ins(New in ArcGIS 10)ArcGIS Visual Studio IDE Integration Framework for extending ArcObjectsArcGIS Visual Studio IDE Integration Framework for server object extensionsWeb Mapping Application,ArcGIS Visual Studio IDE Integration Framework,ArcGIS Visual Studio IDE Integration Framework for add-ins,在VS环境下开发:创建解决方案(Solution)一到多个项目(Projects)一到多个类(Classes),ArcGIS VS IDE 集成框架元素:ArcGIS Project templates(项目模板)ArcGIS Project wizard ArcGIS Item templates(类模板)ArcGIS Add Class wizardArcGIS SnippetsArcGIS Reference dialog boxArcGIS Component Category Registrar dialog box ArcGIS License Initializer dialog box ArcGIS Toolbox Reference dialog box ArcGIS.Net Code Converter Toolbox configuration,ArcGIS Visual Studio IDE Integration Framework for extending ArcObjects,ArcGIS Project templates(项目模板),The following are the available project templates:Desktop:Windows 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 object extensions REST SOAPServer Web ApplicationWeb Mapping Application,Toolbox configuration:Adds ArcGIS controls in the Visual Studio Toolbox window.,ArcGIS Project wizard(项目向导),当使用ArcGIS 项目模板来创建一个新项目时,ArcGIS 项目向导会自动打开,通过自动添加ArcGIS引用及许可初始化代码,来帮助你高效地搭建新的ArcGIS 定制项目。,Class Library(ArcMap),Windows Application(Desktop),Windows Application(Engine),ArcGIS item templates,Add-in 组件模板,类模板,ArcGIS Add Class(最通用的类模板)Wizard,当选择“ArcGIS Class”模板后,添加类向导会自动显示,指导你完成类的创建。,ArcGIS Add Class Wizard include the following 3 steps:Base Implementation option Component Category option Optional Interfaces option,ArcGIS Add Class(最通用的类模板)Wizard,Base Implementation option Customization group Base component,Component Category option Categories Category properties,Optional Interfaces option Available optional interfaces Selected interfaces,ArcGIS Reference dialog box,ArcGIS Component Category Registrar dialog box,ArcGIS License Initializer dialog box,不管是ArcGIS桌面应用程序还是独立的GIS应用程序,在访问ArcObjects 组件之前,需要明确地使用合适的ArcGIS 产品许可进行初始化。开发人员可以使用“ArcGIS License Initializer dialog box”来产生并添加许可初始化代码到项目中的适当位置。但如果选用项目模板,创建过程中包含选择合适的产品许可选项。,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.,Snippets in ArcGIS for.NET developers,为了帮助ArcGIS软件开发人员进一步提高软件的开发效率,“ArcGIS Visual Studio IDE Integration Framework”提供了可重用的代码段供开发人员使用。ArcGIS 10 offers a fully integrated ArcGIS Snippet insertion and finder tool.C:Program FilesMicrosoft Visual Studio 10.0VC#SnippetsArcObjects VS-工具-代码段管理器(T),使用代码段,Snippets in ArcGIS for.NET developers,编辑、重建、查找代码段ArcGIS Snippet Editor ManagerArcGIS Snippet Editor WizardArcGIS Snippet Finder,在VS中根据已有代码生成Snippet,Walkthrough:Create a command by inheriting from BaseCommand,Create a simple command 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 class to COM Compile the project Use the command in ArcMap Debugging the command,ArcGIS开发资源,ArcGIS Developer HelpArcGIS Software Developer Kit(SDK)DevelopKitESRI Developer Network Web sitehttp:/http:/,