GIS应用开发ppt课件(完整版)_第1页
GIS应用开发ppt课件(完整版)_第2页
GIS应用开发ppt课件(完整版)_第3页
GIS应用开发ppt课件(完整版)_第4页
GIS应用开发ppt课件(完整版)_第5页
已阅读5页,还剩1450页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、GIS 应 用 开 发Developing GIS Applications with ArcObjects using C#.NET江西省研究生优质课程 主讲:兰小机 GIS博士、教授 Email : QQ :305333315 课件: 4/ 兰小机简历主要经历1988年7月毕业于南方冶金学院工程测量专业,获学士学位,并留校任教1994年6月毕业于武汉测绘科技大学工程测量专业,获硕士学位,回校任教2005年6月毕业于南京师范大学地图学与地理信息系统专业,获理学博士学位,回校任教主要研究方向GIS应用开发分布式并行计算环境下空间数据的存储管理空间数据库理论与GMLGISGML空间数据挖掘空间数

2、据集成与共享科研项目国家自然科学基金项目-面向GML的时空关联规则及序列模式挖掘研究(编号:40971234) ,35万元,主持国家自然科学基金项目-本原GML空间数据库理论及GMLGIS与传统GIS集成研究(编号:40761017) ,16万元,主持国家自然科学基金项目 - GML空间数据存储索引机制研究(编号:40401045) ,26万元,排名第二地理信息科学江苏省重点实验室开发基金项目 -面向对象的GML空间数据库及其应用研究(编号:JK20050302) ,5万元主持江西省教育厅科技项目GML空间数据库理论及GMLGIS研究,1万元,主持萍乡市基础地理信息系统研究与开发,22万元,主

3、持城市公众地理信息服务系统研究与开发,10万元,主持Open Source GISGIS软件GIS基础平台软件GIS应用系统桌面的Web的移动设备GIS组件Open Source GIS Desktop ApplicationsGRASS (Geographic Resources Analysis Support System) Quantum GIS,QGISOpenJUMPSharpMapMapWindowgvSIGuDigOpen Source Geospatial LibrariesJTS: Java Topology SuiteGEOS (Geometry Engine - Ope

4、n Source) is a C+ port of the Java Topology Suite (JTS)NTS: Net Topology Suite, A C#/.NET port of JTS Topology SuiteGeotoolsGeoAPIOpenMapGDAL: Geospatial Data Abstraction LibraryDotSpatial: for MapWindowFDO: Feature Data ObjectMetaCRSOSSIM: Open Source Software Image MapRasdaman: raster data manager

5、Open Source Spatial DatabasePostGIS: is a spatial extension to PostgreSQLMySQL Spatial: is a spatial extension to MySQL SpatiaLite: is a spatial extension to SQLiteOpen Source Web MappingdeegreegeomajasGeoMooseGeoServerMapbenderMapBuilderMapFishMapGuide Open SourceMapServerOpenLayersZOO-ProjectOpen

6、Source GIS Simulation and AnalysisUrbanSimGeoDa,PySal is a python library that builds on the work done with GeoDa/:开源地理空间基金会(Open Source Geospatial Foundation,简称OSGeo)为全球性非营利性组织,目标是支持全球性的合作,建立和推广高品质的空间信息开源软件。SourceF,又称SF.net,是开源软件的开发者进行开发管理的集中式场所,也是全球最大开源软件开发平台和仓库。教学目标GIS应用开发课程是GIS本科生、研究生重要的专业课程,通过课

7、程的学习,了解ArcGIS 软件体系结构及ArcObjects组件构成,并能熟练使用ArcObjects 进行应用型GIS开发; 掌握应用型GIS开发的基本思路、技术方法.教学内容及时间安排序号教学内容学时1GIS应用开发基础 42ArcGIS应用程序框架63使用ArcObjects控件编程 64几何形体对象-GEOMETRY 35地图及相关对象56空间数据的符号化 47空间数据管理 68地理处理框架29空间查询与空间分析 610空间数据编辑611三维GIS开发基础自学教材及参考材料教材:基于ArcObjects与C#.NET的GIS应用开发,兰小机、刘德儿等编著,冶金工业出版社,2011年1

8、2月最新课件参考材料:ArcObjects SDK for ArcGIS 10.1/zh-cn/help/ /zh-cn/help/main/10.1/ArcGIS 开发工具包中的文档,包括ArcGIS开发帮助、组件帮助、对象模型图和示例学习基础熟练掌握ArcGIS Desktop(ArcMap、ArcCatalog)基本操作;了解Geodatabase、ArcSDE基本概念;会用C#进行程序设计。课程考核开发一个小型的GIS应用系统,按GIS软件工程的要求进行设计,并提供完整的设计开发方案,开发的小系统应具备GIS的基本功能,主要包括:打开、保存地图文档、添加数据自定义命令、工具、菜单空间数

9、据符号化空间数据管理空间查询与空间分析空间数据编辑功能:基本编辑功能、高级编辑功能计算机组件技术组件GIS组件式的GIS应用开发Chap.1 GIS应用开发基础ArcObjects基础组件对象模型.NET平台概述.NET组件与COM组件的互操作ArcGIS 系列产品与开发方式ArcGIS Visual Studio IDE Integration Framework ArcGIS开发资源1 ArcObjects基础ArcObjects简介ArcObjects的组件库理解对象模型图1.1 ArcObjects简介ArcObjects是 ESRI公司ArcGIS系列产品的开发平台,它是基于Micr

10、osoft COM技术所构建的GIS组件产品,是一套可重用的通用的二次开发组件产品,它可以用于大量开发框架中,包括流行的像 .NET 、Visual C+、Java等开发环境。ArcObjects不是为最终用户而是专门为开发人员提供的二次开发组件。ArcObjects是ArcGIS系列产品的基础,大部分ArcGIS产品都是由ArcObjects构建的。1.2 ArcObjects的组件库ArcObjects是一套庞大的COM组件集合,ArcGIS 各版本各种COM类型统计见下表: Enums Structs Interfaces Classes Total ArcGIS 9.0 628 35

11、3029 2322 6014 ArcGIS 9.1 933 36 3918 3043 7930 ArcGIS 9.2 1100 40 4798 3832 9770 ArcGIS 9.3 1195 51 5206 4050 10502 ArcGIS 10.01053935555408110782为了更好地管理ArcObjects中数目众多的COM对象,ESRI将它们放置在不同的组件库中。对于.NET来说,一个组件库就是一个程序集(assembly),一个程序集包含多个不同的命名空间(NameSpace)。如ESRI.ArcGIS.ADF.Local程序集的命名空间包括:ESRI.ArcGIS.A

12、DF.BaseClassesESRI.ArcGIS.ADF.CATIDsESRI.ArcGIS.ADF.COMSupportESRI.ArcGIS.ADF. SerializationArcObjects 10的组件库共65个(65assemblies ),详细内容参见Learning ArcObjects、ArcObjects SDK API Reference如果不记得某个接口或对象属于哪个命名空间的时候,可以通过开发帮助查找。 1.3 理解对象模型图ESRI提供了多种方法让用户了解ArcObjects组件及不同组件之间的关系ESRI提供的一系列OMD的PDF文件开发帮助、API Refe

13、renceVS.NET中的对象浏览器通过阅读ArcObjects的对象模型图 (Object Model Diagram,OMD) ,可以快速了解ArcObjects的结构和不同组件之间的关系。OMD使用UML(Unified Modeling Language,统一建模语言)描述,它补充了在对象浏览器中看不到的信息,可以帮助程序员了解类之间的关系,如何从一个类到另一个类,选择正确的接口,获取需要的属性和方法等。VS 中的对象浏览器1.3.1 类与对象在ArcObjects中存在三种类型的类:抽象类(Abstract Class)组件类(CoClass)普通类(Class)抽象类不能用于产生一

14、个新的对象,但是可以用于定义一个子类。组件类是一个可以直接用new创建对象实例的类,它的实例对象不依赖其他对象的存在而存在,其生存周期也不用其他的对象管理。普通类不能够直接产生一个对象,但它可以用其他的普通类或组件类的方法产生,而不是使用new关键字来完成。 1.3.2 类与类的关系ArcObjects的类之间存在四种关系依赖关系关联关系组合关系类型继承 WorkspaceFactory WorkspaceMapControl MapMapLayer*CurveSegment PathPolyCurve2 组件对象模型 软件开发历史什么是组件对象模型2.1 软件开发历史软件重用和开发效率始终是

15、软件开发的核心问题。 在早期(面向过程语言),人们为了重用,将一些基本的数学计算函数和界面设计函数设计成函数库,让其他软件开发人员调用。它为应用开发者提供了方便,但是重用的粒度太小。面向对象语言的出现,提高编程的粒度。面向对象语言的基本单位是类,它封装了数据成员和函数成员 ,将最小组件的粒度提高了一个等级。但是,一个类提供了很多种方法和属性,使用和管理很不方便。COM技术(接口)的出现,解决了以上问题,将类的内部属性和方法进行分组。例如在Map类中有好几个接口,在这些接口中定义不同功能组的方法和属性,Map实现了这些接口,这样就可以使用接口进行定义。但COM也存在一个严重的问题:DLL灾难。.

16、NET 技术的出现解决了“DLL灾难”问题。2.2 什么是组件对象模型组件技术已经成为当今软件技术的潮流之一, 它已彻底改变软件生产和开发的模式。组件技术是计算机软件业从手工作坊走向工业化成熟产业的转折点,它给整个GIS技术体系和应用模式带来了巨大影响。用户可根据自己的需求灵活购买软件组件,只需编写一些“胶水代码”将各个组件“粘”起来,便可构建自己的应用系统,就如同组装计算机一样简单。组件技术标准COM(DCOM):微软的组件对象模型(Distributed) Component Object Model )JavaBean:Sun公司的基于Java的组件技术CORBA:对象管理组织(Obje

17、ct Management Group,OMG)的组件技术标准,公共对象请求代理结构(Common Object Request Broker Architecture,CORBA)。COM知识要点COM是一种二进制级别的组件通信标准-接口(Interface),它定义了组件之间应该如何通信、一个COM对象的不同接口之间如何查询等。COM对象也是基于面向对象标准的。COM对象可以以DLL或者EXE文件形式存在,它包含着接口的具体实现。使用者可以通过接口来访问它内部的方法、属性。COM对象必须实现IUnknown接口,它负责管理COM对象生命周期并在运行时刻提供类型查询,当COM对象不使用的时候

18、,是这个接口定义的方法负责释放内存。 QI,即所谓查询接口由于一个COM对象有很多个接口,不同的接口管理着COM的不同类型的方法、属性,因此从一个接口可以使用的属性方法转到另一个接口可以使用的属性方法的过程称为QI。这个过程也是由IUnknown接口管理的。IMap pMap ; IActiveView pActiveView ;pMap = axMapControl1.Map; /获取控件中的地图 pActiveView = pMap as IActiveView; /QI (Or pActiveView = (IActiveView)pMap ; ) 每个组件都有一个独一无二的标识GUID

19、。接口的GUID称为IID,而组件类的GUID称为CLSID。CLSID还有一个文本别名,即所谓的ProgID,它是一个由项目名加组件类类名组成的字符串。一个COM对象可以有多个接口,一个接口也可以被多个COM对象实现。接口分为两种,即内向接口和外向接口。内向接口(Inbound Interface)是组织COM对象相关的方法和属性,COM对象必须实现所有的接口内容;外向接口(Outbound Interface)是用于组织COM对象相关的事件,开发人员根据需要实现事件接口。接口可以从多个父接口继承(C# 类呢)接口继承机制是非常有用的,在很多时候程序员可以将一个子接口类型的对象定义为父接口类

20、型的对象,从而实现更一般化的操作,如:Private void CreateGeometry (IPolygon pPolygon)Private void CreateGeometry (IGeometry pPolygon)COM对象的接口一旦被公布,就不能再修改,但可以增加新接口,在ArcObjects中有很多以“2”、“3”结尾的接口,都是这样发展的产物。COM组件必须被注册后才能使用。COM的缺陷:由于COM对象可以被重用,这样多个程序可能共用一个COM对象,如果这个COM组件升级了,就很可能出现其中某个程序无法使用新组件,导致程序不能运行的情况,这种情况被称为“DLL HELL”(

21、DLL灾难)。3 .NET平台概述针对Windows平台存在的缺陷,微软提出了全新的.NET技术体系,其主要包括 .NET FrameworkVisual Studio.NETVisual Studio .NET 是一套完整的开发工具,用于创建各种类型的应用程序,包括 ASP Web 应用程序、XML Web services、桌面应用程序和移动应用程序。.NET Framework 是生成、部署和运行 各种应用程序的平台。 .NET Framework 具有两个主要组成部分:通用语言运行时(Common Language Runtime-CLR),是 .NET Framework 的基础.N

22、ET Framework 类库。 .NET Framework体系结构 Operating SystemCommon Language Runtime(CTS, JIT, Memory Management)Base Class Library(System.IO, System.Drawing,System.Threading)Data Classes(ADO.NET, XML, SQL)Windows FormsWeb Applications Web ServicesWeb Forms ASP .NET MobileCommon Language SpecificationVBC+C#J

23、#Operating SystemCommon Language Runtime(CTS, JIT, Memory Management)Base Class Library(System.IO, System.Drawing,System.Threading)Data Classes(ADO.NET, XML, SQL)Windows FormsWeb Applications Web ServicesWeb Forms ASP .NET MobileVisual Studio .NET3.1 通用语言运行时(CLR)通用语言运行时管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统

24、服务。CLR处于.NET Framework的最底层,是.NET Framework的基础,它为C#.NET、VB.NET、C+、J#等多种语言提供了统一的运行环境,使得用某种高级语言编写的应用程序可以在不同的操作系统和硬件上运行,而不需要按照特定环境重写应用程序。 .NET 环境下程序编译执行过程 Traditional Compilation:Source CodeLanguage CompilerNative EXE DLLCompilationExecuting in OSExecutionCompilation and Execution in .NETSource codeComp

25、ilerVB.NETC+C#CompilerCompilerOperating System ServicesCommon Language RuntimeJIT CompilerNative CodeAssembliesManaged codeIL Code+MetadataIL Code+MetadataIL Code+MetadataUnmanagedComponentGarbage Collector具体的运行过程:使用VB、C# 或任一种CLR支持的编程语言编写应用程序源代码由编程语言对应的编译器将源代码翻译成一个程序集(Assembly)- .NET组件,为一EXE或DLL文件。这

26、个程序集包括中间语言MSIL代码、元数据和一个文件清单。MSIL代码也简称IL代码,其特点是独立于特定操作系统和硬件平台。元数据详细描述了MSIL代码正确执行所需的各种相关数据类型,包括描述Assembly的信息,描述类型的信息,描述其它属性的信息等。这样就使.NET应用程序代码具备了自描述特性。清单则列出了程序集中的所有文件和软件组件,同时指出了CLR在哪里可以找到应用程序运行时需要的其它组件。CLR加载IL代码,同时收集有关应用程序的事实信息。即时编译器JIT将IL代码动态编译成可执行的本机代码。不同的机器使用不同的JIT编译器,所以同一个应用程序的MSIL代码经不同机器的JIT编译器编译

27、之后,便可以在不同的机器上执行。Single file assemblyMulti-file assembly通用类型系统CLR借助通用类型系统(Common Type System,CTS)对代码类型进行严格的安全检查,避免了不同组件之间可能存在的类型不匹配的问题。3.2 .NET Framework 类库.NET Framework类库(FCL)是一套软件组件,用于编写在CLR控制下运行的代码。类库分级组成了一个庞大的功能集,包括显示图形用户界面、读写XML数据、在Internet上通信、访问数据库等多种功能。Same classes forall languages!3.3 .NET 的

28、强命名程序集以前在Windows下开发程序时常会遭遇“DLL Hell”问题,即动态链接库的向后兼容问题。微软在.Net产生前,使用Guid来唯一的标识每一个COM组件,为了运行COM组件就必须在注册表中对其进行注册。多个应用程序可以共享相同的COM组件,当COM组件版本升级时,可能导致原来引用此COM组件的程序不能正确运行,等等。在.Net中,微软引入了一种新的解决方案:强命名(Strong Name)程序集,以及与之配套的全局程序集缓存(GAC -Global Assembly Cache )来解决这个问题。强命名程序集:.Net使用Name、Version、Culture、PublicT

29、oken四个属性来唯一标识一个程序集。创建一个强命名程序集需要获得一个用强命名实用工具(StrongNameUtility,即SN.exe)产生的密钥。全局程序集缓存(GAC): 如果一个Assembly要被多个应用程序访问,那么它就必须放在一个CLR已确知的目录下,并且CLR在探测到有对该Assembly的引用时,它必须能自动到该目录下寻找这个程序集。这个已确知的目录称作GAC,就是全局程序集缓存。它一般位于下面的目录下:C:WindowsAssembly 使用gacutil.exe命令可以将具有强命名的程序集添加到全局程序集缓存。命令行下看到的GAC在开发一般的、非共享的程序时,不需要使用

30、强命名的程序集,仅将项目(Project)编译成.DLL或者.EXE即可。但是,如果开发的是组件库、框架时,通过对程序集进行强命名,并将其部署到GAC中,可以保证程序集不会出现版本问题。4 .NET组件与COM组件的互操作COM Model.NET Model Type libraries MetadataDLLAssembliesInterface basedObject basedGUIDsStrong namesQueryInterface CastReference countingMemory management(Garbage collection)RegistryGlobal

31、Assembly Cache (gacutil.exe可以将具有强命名的程序集添至全局程序集缓存)本节内容:COM包装(COM Wrappers)ESRI提供的Primary Interop Assemblies 向COM公开.NET对象COM到.NET的类型转换4.1 COM包装(COM Wrappers)为了实现传统的COM程序与.NET程序之间的相互调用,.NET提供了两个包装类:运行时可调用包装(runtime callable wrapper,RCW)和COM可调用包装(COM callable wrapper,CCW)。每当一个.NET客户程序调用一个COM对象的方法时就会创建一个

32、RCW对象;相反,每当一个COM客户程序调用一个.NET对象的方法时就会创建一个CCW对象。4.2 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)

33、下的PIAs. 这些PIAs的公钥标记(public key)为8FC3CC631E44AD86.Controls PIAsArcGIS Engine控件的RCW 类继承自.NET Framework的AxHost 类,允许这些控件驻留在.NET 的Windows 窗体上。4.3 向COM公开.NET对象(Exposing .NET objects to COM)注册.NET组件在COM组件类目中注册.NET类4.3.1 注册.NET组件使用定制的.NET组件来扩展ArcGIS应用程序,需要在COM注册表中注册.NET组件,并将.NET的程序集输出为COM的类型库(tlb),完成这一任务有以下

34、途径:Using ArcGIS class library project templates Registering by menu option Registering by command line Registering by dialog box Using ArcGIS class library project templates ArcObjects SDK提供的类库模板(ArcGIS class library ),在项目编译时自动注册(调用esriRegAsm)。Registering by menu option 当不使用ArcObjects SDK提供的类库模板创建项目

35、时,编译后的DLL文件注册:在Windows资源管理器中,右键点击该DLL文件,选择“Register”(安装ArcObjects SDK后增加的功能) ;在“Register”对话框中选择要注册的ArcGIS产品完成注册。Registering by command line 程序集注册 (Regasm.exe) 的命令行工具用来注册或注销与 COM 一起使用的程序集。Regasm.exe 会将有关类的信息添加到系统注册表中,以便 COM 客户端透明地使用 .NET 类。例如:regasm EditTools.dll /tlb:EditTools.tlb /codebaseESRIRegAs

36、mESRIRegAsm.exe /p: Options The following are the options: /uUnregister types /sSilent (displays no dialog box) /eDisplays error console /v:Version number /regfile:fileNameExports to registry file /f:Category mapping file (.xml or .reg) /w:Keep working filesRegistering by Customize dialog box 在.NET环

37、境下自定义的ArcGIS命令和工具可以通过ArcGIS的Customize对话框中的Add From File按钮快速地添加到工具条中。在这种情况下,只需要简单地浏览.dll或 .ocx或.tlbs并打开它即可。自定义对话框4.3.2 在COM组件类目中注册.NET类大量的ArcGIS扩展都依赖COM组件类目。事实上,大部分定制的ArcGIS组件类必须注册到合适的COM组件类目中才能正常使用,例如,所有的ArcMap命令和工具必须注册到“ESRI Mx Commands”组件类目中。 可以通过下列途径将.Net 类注册到COM组件类目中。自定义对话框组件类目管理工具ArcGIS Compone

38、nt Category Registrar使用COM注册函数(COMRegisterFunction)自定义对话框在.NET环境下自定义的ArcGIS命令和工具可以通过ArcGIS的Customize对话框中的Add From File按钮快速地添加到工具条中。在这种情况下,只需要简单地浏览一下TLB并打开它。ArcGIS框架会自动地将从类型库中选中的类添加到合适的组件类目中。组件类目管理工具使用Component Catesories Manager(Categories.exe),浏览类型库,并选择合适的类目。 ArcGIS Component Category RegistrarThis

39、 dialog box, as part of the ArcGIS Visual Studio integrated development environment (IDE) Integration Framework, allows you to register classes in the current project to ESRI component categories. 使用COM注册函数(COMRegisterFunction)添加注册代码到.NET类中,这样每当注册.NET组件的时候,会在特定的组件类目中自动注册.NET类。.NET Framework类库中包含两个属性

40、类(ComRegisterFunction和ComUnregisterFunction),它们允许用户指定方法注册或注销.NET类。 在组件类目内注册一个组件类,需要程序员知道组件类目的唯一ID(CATID)。为了帮助程序员简化这一注册过程,ESRI提供了ESRI.ArcGIS.ADF程序集,其中包含ESRI.ArcGIS. ADF.CATIDs名称空间,这个名称空间中包含代表ArcGIS组件类目的类,这些类知道组件类目的CATID,并提供两个静态方法(Register and Unregister)来添加或删除组件类。 Guid(d36096cd-4680-42d6-8e5a-8c88cf8

41、6170b)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.4.4 COM到.NET的类型转换命名空间:ESRI.ArcGIS加上库名。例如G

42、eometry库的命名空间是ESRI.ArcGIS.Geometry。所有类型通过它们的完整的命名空间和类型名识别。所有的COM类被转换成为托管类;托管类的类名为起初的类名加上“Class”,例如,Point组件类的运行时可调用包装(RCW)为 PointClass, Map组件类的运行时可调用包装为MapClass. C中不支带参数的属性。ILayer pLayer = axMapControl1.get_Layer(0);在上例中带参数的Layer属性,在C#中是不支持的,所以改用get_Layer()方法。5 ArcGIS 系列产品与开发方式ArcGIS最终用户产品及应用程序命名变化:P

43、rior to 10.110.1ArcGIS DesktopArcGIS for DesktopArcInfoArcGIS for Desktop AdvancedArcEditorArcGIS for Desktop StandardArcViewArcGIS for Desktop BasicArcGIS MobileArcGIS for Windows MobileArcGIS Mobile for Tablet PCsArcGIS for Windows TabletArcGIS for Windows PhoneNo changeArcGIS for AndroidNo change

44、ArcGIS for iOSNo changeArcGIS Mapping for SharePointArcGIS for SharePointArcGIS ServerArcGIS for ServerArcGIS Server Advanced EnterpriseArcGIS for Server AdvancedArcGIS Server Standard EnterpriseArcGIS for Server StandardArcGIS for Basic EnterpriseArcGIS for Server BasicArcGIS Server Advanced Workgr

45、oupArcGIS for Server Advanced WorkgroupArcGIS Server Standard WorkgroupArcGIS for Server Standard WorkgroupArcGIS Server Basic WorkgroupArcGIS for Server Basic WorkgroupArcGIS ExplorerNo changeArcGIS Explorer OnlineNo changeArcGIS Explorer DesktopNo changeArcReaderNo changeArcGIS Viewer for FlexNo c

46、hangeArcGIS Viewer for SilverlightNo changeDeveloper technologyPrior to 10.110.1ArcGIS API for JavaScriptNo changeArcGIS API for FlexNo changeArcGIS API for SilverlightNo changeArcGIS API for iOSArcGIS Runtime SDK for iOSArcGIS API for AndroidArcGIS Runtime SDK for AndroidArcGIS Mobile SDKArcGIS Run

47、time SDK for Windows MobileArcGIS API for Windows PhoneArcGIS Runtime SDK for Windows PhoneNew productArcGIS Runtime SDK for QtNew productArcGIS Runtime SDK for WPFNew productArcGIS Runtime SDK for JavaNew productArcGIS RuntimeArcGIS EngineNo changeArcGIS Engine Developer KitNo changeArcGIS Engine R

48、untime for LinuxArcGIS Engine for LinuxArcGIS Engine Runtime for WindowsArcGIS Engine for WindowsArcObjects SDK for the Microsoft .NET FrameworkNo changeArcObjects SDK for Java LinuxNo changeArcObjects SDK for Java WindowsNo changeArcObjects SDK for C+ LinuxNo changeArcObjects SDK for C+ WindowsNo c

49、hangeEsri File Geodatabase APINo changeArcGIS系列产品ArcGIS for Desktop (Basic, Standard, Advanced)ArcGIS Engine ArcGIS for Server ArcGIS for Windows Mobile 5.1 ArcGIS Desktop及其扩展ArcGIS Desktop是GIS专业人员编辑、使用和管理地理信息的主要平台,它按功能分为三个不同级别的产品: ArcGIS for Desktop Advanced ArcGIS for Desktop Standard ArcGIS for D

50、esktop Basic每个产品主要包括:ArcMap、ArcCatlog、ArcGlobe、ArcScene桌面应用程序.ArcGIS桌面应用程序定制/扩展方式使用ArcGIS桌面应用程序的定制功能(Customzie),配置应用程序界面;使用Python 脚本,自动化GIS工作流开发插件( add-in),定制/扩展ArcGIS 桌面应用程序(New in 10.0)开发定制组件,扩展ArcGIS 桌面应用程序无需使用ArcObjects,后续版本不支持VBA定制需要使用ArcObjects,可以使用C#,VB.NET, Java, C+语言5.1.1 使用Python 脚本,自动化GIS

51、工作流Python 是一种免费的、跨平台的开源编程语言,它功能强大且简单易学,因而得到了广泛应用和支持。ESRI 已将 Python 完全纳入 ArcGIS 中,成为了一种用于数据分析、数据转换、数据管理和地图自动化的语言,因而有助于提高工作效率。 易于学习,非常适合初学者,也特别适合专家使用可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本)可移植,跨平台可嵌入(使 ArcGIS 可脚本化)稳定成熟用户社区规模大ArcGIS中的PythonPython是地理处理框架的重要组成ArcGIS桌面中的Python Python 窗口独立的 Python 脚本Python 脚本工具ArcPyPy

52、thon 窗口ArcGIS 10使用 Python 窗口代替原来的命令行窗口, 通过Python窗口,用户可以快捷地在 ArcGIS 内部使用 Python,从而以交互方式运行地理处理工具和功能以及充分利用其他 Python 模块和库。此窗口还为用户学习 Python 提供了一条途径。Python窗口提供了智能感知和代码自动完成功能.可以直接从Catalog中拖放过来即时的帮助信息简单实例:ArcGIS引入了后台地理处理(Background Geoprocessing)的概念,允许Geoprocessing工具、ArcGIS操作同时运行(使用多核CPU)。独立的 Python 脚本Pytho

53、n 脚本是可以执行的 .py 文件(其中包含Python 程序代码)。独立 Python 脚本可通过两种方式执行:通过操作系统提示或开发应用程序(如 PythonWin),或在 Windows 资源管理器中双击 .py 文件。Python 脚本工具Python 脚本工具是已添加到地理处理工具箱的 Python 脚本。添加为脚本工具后,便可以像使用其他地理处理工具一样使用此脚本工具 - 可以从工具对话框打开和执行、可以在 Python 窗口和 ModelBuilder 中使用,并可以从其他脚本和脚本工具中调用。ArcPyArcPy -ArcGIS的Python库由arcgisscripting升

54、级而来包含有函数(Function)、类(Class)和模块(Module)功能实现能访问所有gp工具数据转换、数据管理数据分析自动化制图ArcPy 模块数据访问模块 (arcpy.da)制图模块 (arcpy.mapping)线性参考(Linear Referencing)模块(arcpy.lr) ArcGIS Spatial Analyst 扩展模块模块 (arcpy.sa) Geostatistical Analyst 模块 (arcpy.ga) ArcGIS Network Analyst 扩展模块模块 (arcpy.na)时间模块(arcpy.time) ArcPy 类ArcPy 类

55、,如 SpatialReference 和 Extent 类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。ArcPy 函数函数是用于执行某项特定任务程序单元。 在 ArcPy 中,所有地理处理工具均以函数形式提供,但并非所有函数都是地理处理工具。除工具之外,ArcPy 还提供多种函数来更好地支持 Python 地理处理工作流。函数或方法可用于列出某些数据集、检索数据集的属性、在将表添加到地理数据库之前验证表名称,或执行其他许多有用的脚本任务。5.1.2 使用Add-in插件扩展ArcGIS桌面ArcGIS for Desktop Add-in(New in

56、 10.0)Add-in是一种能够快速扩展桌面应用程序功能的全新扩展方式更加容易创建更加容易共享更加安全更易安装管理ArcGIS Add-in所支持的类型按钮和工具(Buttons and tools)组合框(Combo boxes)菜单和右键菜单(Menus and context menus)动态菜单 (Multi-items)工具条(Toolbars)工具面板(Tool palettes)可停靠窗体(Dockable windows)应用程序扩展(Application extensions)编辑扩展(Editor extensions)ArcGIS Add-in支持的开发环境 .NET

57、 Java PythonConfig.esriaddinxXML Metadata( Config.esriaddinx )Add-in的部署复制/邮件发送编译好的esriaddin文件到需要部署机器上(已经安装好ArcGIS 桌面);在部署机器上双击esriaddin文件,弹出Add-in安装界面,让用户查看该插件的一些元信息,然后让用户决定是否安装该插件;安装插件是不需要重启任何ArcGIS Desktop应用程序的。安装完之后,就可以通过相应ArcGIS Desktop应用程序的Add-in Manager来查看已安装的Add-in,也可以通过它来卸载。一些Add-in所包含的对象,例如

58、Command、Tool、Toolbar,是需要用户通过Customize窗口定制添加到界面上的。Extension对象,则需要用户通过Extensions窗口勾选加载。Add-in共享与安全实现局域网内共享设置共享目录、设置安全级别Add-in 数字签名工具:ESRISignAddin.exeC:Program FilesCommon FilesArcGISbinESRISignAddIn.exe5.1.3 使用定制组件扩展ArcGIS桌面使用定制组件扩展ArcGIS桌面的优势:They can be easily delivered to end users via custom setu

59、p programs.You can hide your code and logic in a binary file.You can extend and customize virtually every aspect of the ArcGIS technology.ArcObjects + C#.NET5.2 ArcObjects /ArcGIS Engine 使用ArcObjects,可以:Customize ArcGIS for Desktop by writing add-ins or building custom components in .NET or Java.Ext

60、end ArcGIS for Server with server object extensions(SOE) written in .NET or Java.Create stand-alone desktop applications in .NET, Java, or Cross-platform C+. ArcGIS Engine是一个完整的嵌入GIS组件库和工具,开发人员可以用来创建新的独立的GIS应用程序或者在自定义的应用程序或已经存在的应用程序中嵌入GIS功能。ArcGIS Engine是ArcObjects的子集,主要用于独立的GIS应用开发,它不依赖于ArcGIS Desk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论