您好,欢迎访问三七文档
GIS软件开发(1)主讲:王小东2019/8/100:04:17课程说明理论课时:22,实验课时:10授课过程教材对应章节课时分配1AO程序设计入门1、2章22COM类、接口及编程技巧3、4,5,6章23ArcGIS控件开发实例10、11章24OMD与ArcObjects编程资源9章25创建自定义工具11、12章26地图操作补充,12章27地图提示补充,13章28坐标系与投影补充29专题地图制作补充200:04:17第一讲AO程序设计入门1GIS开发模式3ArcgisEngine类库概述2Arcgis软件开发平台4建立开发环境开始使用AE00:04:17GIS软件类型•GIS平台软件–提供全部的地理信息系统处理功能,完成数据处理、空间分析、信息查询、专题地图制作等功能如:ArcGIS,MapInfoProfessional,MAPGIS•GIS应用软件–针对不同的应用领域和行业,综合电子地图和信息管理系统的特点–如:郑州市公交查询系统,XX市综合管线地理信息系统等00:04:171GIS开发模式1.1独立开发模式1.2宿主型开发模式1.3GIS组件开发模式1.4GIS组件产品及功能1.5ActiveX控件的组成00:04:171.1独立开发模式•不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如VisualC++、Delphi等,在一定的操作系统平台上编程实现。•开发周期长,软件功能相对简单,对开发者要求高,用于购买软件的费用相对节省00:04:171.2宿主型开发模式•基于GIS平台软件,进行应用系统开发•多数GIS平台软件都提供了可供用户进行二次开发的脚本语言,用户以原GIS软件为开发平台,利用这些脚本语言,开发出自己的针对不同应用领域的应用程序。如ArcView中的Avenue语言,ArcGIS中VBA,MapInfoProfessional的MapBasic语言•开发较为容易;功能较弱所开发的系统不能脱离GIS平台;是解释执行的,运行效率低;用户界面受平台软件的限制00:04:171.3GIS组件开发模式•建立在组件技术基础上的GIS功能组件,实现了地理信息系统的各种功能,这些组件都具备GIS的基本功能。开发人员可以基于通用软件开发工具,尤其是可视化开发工具,如:VisualC++、VisualBasic、VisualC#、PowerBuilder等为开发平台,进行二次开发,实现GIS功能。•大多数GIS软件厂商都提供商业化的GIS组件。如ESRI公司的MapObjects、ArcGISEngine、MapInfo公司的MapX等00:04:17GIS开发模式的选择•独立开发难度太大•宿主型二次开发受GIS平台所提供的脚本语言的限制•GIS组件开发模式结合了GIS平台软件与可视化开发平台的组件开发模式的优点,是GIS应用开发主要方向。–利用GIS组件实现对空间数据库的管理、分析功能,又可以利用其它可视化开发平台提供的丰富的、功能强大的编程组件和环境,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的用户界面,更强大的数据库功能。可靠性好、易于移植、便于维护,学习周期较短,容易上手。00:04:171.4GIS产品及其功能•空间数据获取•坐标转换•图形编辑•数据存储•数据查询•数据分析•制图表示•…….可以想象要把这些所有的功能放在一个控件中几乎是不可能的,即使实现也会带来系统效率上的低下。一般可以认为GIS构件的设计主要遵循应用领域的需求。例如ESRI的Arcobjects就是以空间数据访问、查询、制图为主要目标的GIS构件。00:04:17GIS组件产品•GIS组件的代表作MapObjects由全球最大的GIS厂商ESRI(美国环境系统研究所)推出;•ESRI(美国环境系统研究所)在9.0之后推出ArcGISEngine组件•美国MapInfo公司推出的MapX。•北京超图公司的SuperMap组件00:04:171.5ActiveX控件的组成-PME模型PME模型•Property属性•Method方法•Event事件桌面用的、基于COM的组件叫做ActiveX控件。一个ActiveX控件由它的一些成员组成:属性,方法以及事件•P:属性是用来描述和反映对象特征的参数,用来保存对象的数据•M:方法是控件内部可调用的用以完成特定操作的过程或函数•E:事件是VB预先定义的对象能识别的动作。00:04:1700:04:17MapControl属性MapControl涉及了20多个属性,内容包括地图控件的当前视图,图层,图层数,显示范围,地图单位等。例如:(1)ActiveView(2)Map(3)MapScale(4)Extent(5)FullExtent(6)Layer(7)LayerCount00:04:17MapControl方法Mapcontrol提供了一整套完整的地图操作方法,通过这些方法,开发人员可以完成对地图的多种操作和加工处理,例如改变地图的显示范围,Mapcontrol控件所提供的方法共有9大类22种,他们都是通过相应的方法处理函数实行其各自的功能。下图是Mapcontrol的方法分类:00:04:1700:04:17Mapcontrol事件Mapcontrol提供的事件共有6大类15个,它们既包括了鼠标、键盘的消息,也包括图层重画等消息。各类消息分类的说明如下图:00:04:1700:04:17消息事件的具体功能00:04:172Arcgis开发平台2.1ArcgisDesktop开发平台2.2ArcGISEngine开发平台2.3DeskTop和Engine的开发平台比较00:04:172.1ArcgisDesktop开发平台ArcGIS系列桌面产品是一系列整合的GIS应用程序的总称,包括ArcInfo,ArcEditor和ArcView。通过协调一致地调用桌面应用和界面,可以实现从简单应用到完成复杂GIS功能的任务,包括制图、地理分析、数据编辑、数据管理、可视化和空间处理。ArcGISDesktop是可以满足各种类型用户的可伸缩的产品,用户可根据需要定制、配置自己的GIS应用系统,主要包括下列完整的GIS功能:00:04:17(1)制图和三维(3D)可视化(2)矢量和栅格数据编辑(3)空间处理(4)在复杂的信心模型和框架下进行地理数据管理,包括数据管理与维护,拓扑、完整性规则和丰富的GIS行为,地图和投影变换,空间处理工具和模型,元数据、目录和数据库管理(5)数据互操作能力(可以使用多种文件,格式以及数据大小无限制)(6)在事务模式下的数据更新、维护与共享(7)支持GIS互操作标准(8)Web服务,包括地图发布,数据发布和分发,编辑,空间处理00:04:17Desktop提供的三种层次的开发方式(1)定制ArcGISDesktop(2)在自己的应用系统中嵌ArcGISControls(3)扩展ArcObjects,以动态库或控件形式供第三方使用00:04:172.2ArcGISEngine开发平台ArcGISEngine是用于构建定制应用的一个完整的嵌入式GIS组件库,它可以为用户提供针对GIS解决方案的定制应用。利用ArcGISEngine,开发者可以将ArcGIS功能集成到一些应用软件中。对于开发者来讲,它并不是一个最终的产品,而是一组被称作ArcObjects的软件开发包ArcGISEngine可以在Windows,UNIX和Linux桌面上运行,并支持一系列的应用开发平台,例.net,Java,com和C++。00:04:17为什么使用ArcGISEngine许多用户要求有特定的轻量级的GIS应用:可以是独立的应用,或是将GIS功能嵌入到其他应用中,在这种开发中,用户需要的GIS功能比ArcView弱,但仍需要在应用实现复杂的GIS逻辑ArcGISEngine为此提供了一个低成本、轻量级的选择,同时,选择ArcGISEngine进行开发还有几个关键特征:00:04:17(1)标准的GIS架构(2)高效使用(3)可视化开发控件(4)跨平台特性(5)支持多种开发语言(6)可扩展选项(7)丰富的开发资源00:04:17ArcGISEngine的功能ArcGISEngine可以实现的功能:•空间数据显示、查询检索、编辑和分析•创建各种专题图和统计报表•高级的制图和输出功能•空间数据的管理和维护……ArcGISEngine的扩展选项:空间分析选项三维选项Geodatabase更新选项网络分析选项00:04:172.3DeskTop和Engine的开发平台比较从三方面的比较:类库比较程序扩展比较开发模式比较00:04:17类库比较通过教材20页表2.1,可以发现:(1)Desktop提供了56个类库,而Engine提供21个类库,Engine包含的类库是Desktop提供类库的一个子集。(2)ArcGISEngine提供的类库集中在界面和控件以及分析等方面(3)Engine提供的类库中几乎没有以“UI”结尾的类库(除了SystemUI)。这意味着,在ArcGISEngine开发环境中,没有多少界面组件可供使用,比如在ArcMap中用于浏览和选择数据的GxDialog,在ArcGISEngine中是无法使用的。00:04:17程序扩展比较扩展模块DesktopEngine3D显示扩展3DAnalyst√√GlobeCore√√空间分析扩展SpatialAnalyst√√StreetMap扩展√√从下表可看出,两者可用程序扩展完全相同00:04:17开发模式比较Desktop支持两种开发模式:(1)VBA定制开发模式(2)独立应用开发模式ArcGISEngine有一种开发模式:开发独立应用程序或者作为GIS组件嵌入到其他应用系统中。00:04:173ArcgisEngine类库概述ArcGISEngine提供的类库集中包含一下几类:界面和控件类库3个:System,SystemUI,controls可视化显示5个:Carto,Display,Geometry,GolobeCore,SpatialAnalyst。数据访问5个:DataSourceFile,DataSourceGDB,GeoDatabaseDataSourcesRaster,GeoDatabaseDistributed分析3个:3DAnalyst,GeoAnalyst,NetworkAnalyst共21个,AE类库的体系结构图如下:00:04:1700:04:1700:04:17类库:(1)System库:System库是ArcGIS结构中最低级的对象库。该库包含了揭示ArcGIS中其他对象库所使用的服务的组件,如AoInitialize、Filename、UID等。(2)SystemUI库:SystemUI库主要定义了ArcGIS系统中所使用的用户界面组件的类型,如SystemFont等。(3)Geometry库:Geometry库包含了核心几何对象,如点、多边形、线及其几何类型和定义等,如Point、Polyline、Polygon、Envelope等。(4)Display库:Display库包含了支持向输出装置绘制符号体系的组件,如Color、Symbol等。(5)Server库:Server库包含了用于获取到ArcGISServer的连接的对象。该连接通过本库中的对象进行管理。如SeverObject等。00:04:17(6)Output库:Output库包含了生成输出所必需的对象,通常是从地图或页面布局输出到打印机、绘图仪,或导出到文件中。如Paper,Printer,Export等。(7)Geodatabase库:Geodatabase库包含了所有与数据访问相关的定义的类型,如WorkspaceFactory等。(8)GISClient库:GISClient库包含了操作远程GIS服务
本文标题:ARCMAp实例
链接地址:https://www.777doc.com/doc-23537 .html