牟乃夏ArcEngine教程第1章ArcGISEngine编程基.ppt
牟乃夏 ArcGIS Engine地理信息系统开发教程第1章 ArcGIS Engine编程基础,目录,1.1 ArcGIS Engine概述1.2 ArcGIS Engine开发资源1.3 Esri开发方式简介1.4 对象模型图(OMD图)1.5 ArcGIS Engine的安装,1.1 ArcGIS Engine概述,ArcGIS Engine是基于COM的集合,可以被任何支持COM的编程语言所调用,如:C#、Visual Basic.NET、Java、Visual Basic、C/C+等语言。使用它不仅可以编写功能复杂的独立应用程序,也可以将GIS的相关功能嵌入到现有的软件,如Word、Excel中,真正实现GIS功能的灵活配置。在产品架构上,ArcGIS Engine由两部分组成。一是构建GIS应用软件所用的开发工具包(ArcGIS Engine Developer Kit);二是可分发的、为应用程序提供运行基础的运行时(ArcGIS Engine Runtime)。,1.1 ArcGIS Engine概述,ArcGIS Engine在ArcGIS产品线中的地位,1.1 ArcGIS Engine概述,ArcGIS Engine开发工具包的组成,1.1 ArcGIS Engine概述,ArcGIS Engine运行时ArcGIS Engine运行时是能够保证基于ArcGIS Engine开发的软件正常运行的ArcObjects组件产品,是运行由ArcGIS Engine开发的应用程序的基础软件环境。ArcGIS Engine运行时是可伸缩的,这种可伸缩性体现在ArcGIS Engine运行时的级别上。在安装ArcGIS Engine运行时时,需根据应用程序的需要,选择不同级别的授权文件。,1.1 ArcGIS Engine概述,ArcGIS Engine功能使用ArcObjects SDK可以实现的功能主要有:地图基本操作信息查询功能专题图的制作数据编辑网络分析空间统计分析三维分析,1.1 ArcGIS Engine概述,ArcGIS Engine与ArcObjects联系:ArcGIS Engine包括ArcObjects的核心功能,是对ArcObjects中大部分接口、类库进行封装所构成的。ArcGIS Engine中组件的接口、方法、属性与ArcObjects是相同的。区别:1)开发环境 在ArcGIS Engine产品未出现时,要基于ArcObjects进行开发,必须安装ArcGIS Desktop。而ArcGIS Engine是独立的COM组件,在应用其进行开发时,不需要安装ArcGIS Desktop,只需安装ArcGIS Engine Developer Kit即可。2)功能强弱 ArcObjects包含了很多ArcGIS Desktop中的UI功能,而部分UI功能在ArcGIS Engine中是没有的。如在ArcCatalog中向地图文档中添加数据所用到的IGxDialog接口,用于打印设置的IPrintDialog接口等。,1.1 ArcGIS Engine概述,ArcGIS Engine类库ArcGIS Engine不同的组件库分别封装不同的GIS功能。在.NET开发环境中,不同的GIS功能分别被定义在不同的命名空间内。ArcGIS Engine提供的类库主要可以分为Version类库、界面和控件类库、可视化显示类库、数据访问类库、数据分析类库等几大部分。,1.1 ArcGIS Engine概述,ArcGIS Engine控件ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件。这些控件包括MapControl、PageLayoutControl、TOCControl、ToolBarControl、GlobeControl和SceneControl等。,1.2 ArcGIS Engine开发资源,1.帮助文档【开始】【所有程序】【ArcGIS】【Developer Help】【ArcObjects Help for.NET】,即可启动ArcObjects的帮助系统。2.自带示例在安装完ArcObjects SDK后,在“.Program FilesArcGISDeveloperKit10.0Samples”文件夹下,包含有许多自带的代码示例工程,这些都是开发人员学习ArcGIS Engine开发很好的资源。3.在线网站http:/,4.网上资源Esri中国社区:http:/bbs.Esrichina-,1.3 Esri开发方式简介,Esri提供了多种方式用于扩充其平台软件及开发新的GIS应用软件,如提供内置的开发语言,提供开发组件库等。Esri提供的开发方式从时间轨迹看,主要有AML语言开发方式,Avenue语言开发方式,MapObjects组件开发方式,VBA开发方式和ArcObjects组件开发方式等。,1.3 Esri开发方式简介,ArcObjects开发方式ArcObjects是ArcGIS的功能核心,是其桌面系统的开发基础,是一种集成的面向对象的地理数据模型软件组件库,提供了ArcGIS的全部功能。ArcObjects包括构建ArcGIS产品ArcView、ArcEditor、ArcInfo和ArcGIS Server等的所有核心组件。ArcObjects同时也提供了COM、.NET、C+和Java的应用编程接口(API),这些编程接口不仅包括一系列高层次的组件,还包括了详细的文档说明。,ArcObjects与其他组件的关系图,1.4 对象模型图(OMD图),ArcGIS Engine提供了大量的对象,这些对象之间存在着各种各样的关系,如:继承、组合、关联等。OMD图(Object Model Diagram,对象模型图)是以UML(Unified Modeling Language,统一建模语言)为基础,用来表现对象之间关系的类图。,UML模型图示例,ArcGIS Engine包含三种类型的类,即:AbstractClass类、CoClass类和Class类,他们在UML图中采用不同的填充样式表示。,1.4 对象模型图(OMD图),1.AbstractClass类AbstractClass类,即抽象类,该类不能被实例化,也就是说不能用new关键字去生成一个该类的对象,例如Geometry类。根据面向对象思想的概念,不同的类可以继承自同一个抽象类,但内部对同一个方法的实现可能是不一样的。2.CoClass类CoClass类,即可创建类。该类可以通过new关键字直接实例化对象,它的实例对象不依赖其他对象的存在而存在,其生存周期也不由其它的对象管理。如QueryFilter是一个组件类,可以用new关键字来创建一个对象。,1.4 对象模型图(OMD图),3.Class类Class类,即可实例化类。该类不能直接使用new关键字创建对象,但是可以借助其它对象类来创建该类的实例,如Workspace类可以通过WorkspaceFactory类的OpenFromFile方法来创建。,1.4 对象模型图(OMD图),类的关系1)继承关系:继承是面向对象编程的重要特点之一,在OMD图中用空心三角箭头表示继承关系。抽象类不能直接创建类对象,只能通过派生子类的方法来实现自己,类之间的继承可看作类功能的扩展,即子类在继承父类属性和方法的基础上,还可增加自己特有的属性和方法。,1.4 对象模型图(OMD图),2)组合关系组合关系指其中一个类对象是另外一个类对象的组成部分,由组成对象控制被组成对象的整个生命周期,在OMD图中用实心菱形表示。,Layer是Map的一部分,当Map消失的时候,Layer也将不复存在。在ArcGIS Engine中,地图文档由多个地图组成,工具条控制对象由多个工具项组成,这些均是组合关系。,1.4 对象模型图(OMD图),3)关联关系关联关系是指可从一个类的对象访问到另一个类的对象,它是一种松散的关系,在OMD图中用实线表示。关联关系是有方向的,若只存在一个方向,则为单向关联;若存在两个方向,则为双向关联。,1.4 对象模型图(OMD图),4)依赖关系依赖关系表示一个对象具有产生另外一个对象的方法,在OMD图中用虚线箭头表示。在ArcGIS Engine中,WorkspaceFactory有三个方法(Create、Open和OpenFromFile)来创建或打开一个Workspace。Workspace依赖于WorkspaceFactory。,1.4 对象模型图(OMD图),接口对于接口来说,ArcObjects的类都实现了一个或多个接口,这些接口分为两种类型,一种是入接口(Inbound Interface),另一种是出接口(Outbound Interface),分别用空心圆和实心圆来表示。其中入接口封装了若干属性和方法,出接口封装的主要是事件,即对象支持哪些事件的触发,所以出接口又称为回调接口。,入接口和出接口,1.4 对象模型图(OMD图),查看OMD图一种方法是通过ArcGIS Engine的开发帮助来查看OMD图中的各种对象信息及其与其它组件之间的关系。另一种方法是通过阅读Esri提供的OMD图的PDF文件,存放在ArcGIS Engine安装目录下的“DeveloperKit10.0Diagrams”文件夹下。,