CAE二次开发方法

上传人:sx****84 文档编号:242969470 上传时间:2024-09-13 格式:PPT 页数:44 大小:970KB
返回 下载 相关 举报
CAE二次开发方法_第1页
第1页 / 共44页
CAE二次开发方法_第2页
第2页 / 共44页
CAE二次开发方法_第3页
第3页 / 共44页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C# + AE,二次开发方法,1,第五章,Arc/Info,环境下的,GIS,二次开发技术,一、基于工具型地理信息系统二次开发语言的软件开发。,VBA,Visual Basic for Applications,AML,ARC Macro Language,二、基于有关地理信息系统的控件,(,或构件,),的软件开发,MapObject(MO),ArcObject(AO),ArcEngine(AE),2,AO/AE,关系,3,什么是,AO,AO,是,ESRI,公司,ArcGIS,家族中应用程序,ArcMap, ArcCatalog,和,ArcScene,的开发平台,它是基于,Microsoft,COM,技术所构建的一系列,COM,组件集。到目前为止,,AO,还不是一个独立的应用产品,是依附在,ArcGIS DeskTop,产品中的软件开发包。也就是说,购买了,ArcGIS Desktop,的任何一个产品,不管是,ArcView,还是,ArcInfo,,都有了这套强大的,AO,组件集,利用,AO,提供的组件对象来进行应用开发。,4,AO,、,AE,、,MO,比较,AO - ArcObjects,,有上千个对象和接口,可以在其基础上开发出业界最强大的,GIS,应用程序。完全支持空间数据引擎。但由于运行时需要安装,ArcGIS,核心产品和开发时用到的扩展模块产品,软件发布成本不菲,其下一代产品,ArcGIS Engine,则有望解决这个问题。,AE - ArcGis Engine,是一个创建定制的,GIS,桌面应用程序的开发产品。,ArcGIS Engine,包括构建,ArcGIS,产品,ArcView, ArcEditor, ArcInfo,和,ArcGIS Server.,的所有核心组件。使用,ArcGIS Engine,可以创建独立界面版本,(stand-alone),的应用程序,或者对现有的应用程序进行扩展。,MO - MapObjects,,只有十多个对象,用于简单的,GIS,应用程序开发,对空间数据引擎的支持度较低,但软件发布成本很低。,AO,是主流,,AO,的分析功能比,MO,强,,AO,支持的格式更多,开发时的模式和可扩展性等强些,也复杂多了。,5,AO,、,AE,、,MO,比较,MO,使用简单,也很不错。 其实,如果非特别专业和特别要求,,MO,没问题的。,MO,也可以连接,geodatabase,的,建议你采用,AO,, 因为,MO,现在基本上已经没有新版本了。,AO,其实是一组,COM,接口,适用于任何语言,如,VC+,VB,DELPHI,等开发语言,而,MO,是一个产品。,AO,不能独立存在,只要安装成功,ARCGIS,就可以使用,AO,开发,听说今后,arcgis,的版本中,AO,可以单独发行了。,AO,是,AE,、,ArcGIS Desktop,、,ArcGIS Server,三者的集合,按功能,AO,大于,AE,大于,MO,,,AO,面向桌面扩展开发,需要有,desktop,支持,不能开发出独立发布的程序,AE,不需要,desktop,支撑,包括了,AO,中的大部分库,可以开发出独立发布的应用程序,,MO,功能简单,主要面向小型的系统开发如地图浏览,查询系统等等,或结合,MIS,系统运行。,AE,编写的代码可以在同版本的,AO,环境下运行,,AO,环境下编写的一部分对象在,AE,下可能无法使用。,6,基于,AE,的,GIS,二次开发(,AE+C#,),一、安装,C,环境,(VS2005),二、安装,AE,环境,三、基于,AE,二次开发,GIS,系统,7,AE,环境配置,1,、安装,ArcGIS Engine Runtime,(,9.2,),2,、安装,ArcGIS Engine Developer Kit,(,9.2,),Developer Kit,内容,Help -,包含开发帮助文件:,AODev.chm, ArcObjects.chm,等,Kits -,附加的开发者素材诸如投影引擎头文件,类别,ID,文件和,ESRI,示例命令的源代码 (在最新的,9.2,版本中,该代码位置有所变化),Object Model Diagrams -,包括所有的,PDF,格式对象模型图,Samples -,包含所有示例工程文件的源代码,Utilities -,包含,ESRI,对象浏览器等工具,8,安装,ArcGIS Engine Developer Kit,9,基于,AE,二次开发,GIS,系统,(AE+C#),新建,C#,工程,(,选择,ARCGIS/Enginge,工程,),10,基于,AE,二次开发,GIS,系统,(AE+C#),选择需要引入的库,(,也可以在向导完成后手动引入,),11,基于,AE,二次开发,GIS,系统,(AE+C#),完成后在窗口插入,AE,控件,12,基于,AE,二次开发,GIS,系统,(AE+C#),C#,中设置,MapControl,初始值,13,基于,AE,二次开发,GIS,系统,(AE+C#),设计器中预览,14,设置控件属性,Size:,在,NET,环境下,可以直接设置控件的,anchor,属性,(,例如,left,,,top,,,right,,,bottom),,不需要写,Resize,事件中调整控件位置。,15,代码编写,C #,的语言风格与,C+,相似,,IDE,与,VB6.0,下相似,大大简化了开发过程。,一般来说,,C#,开发过程比,VC,简单,初学者容易上手,功能上比,VB,强大很多。,16,C#,语言风格,1.,变量类型及定义方式与,C+,相似。,例如,:int i=0,;,double d=0.00,;,2.,不使用指针,改用委托。,System.Drawing.Point pt = new System.Drawing.Point();,3.,不需要,delete,释放。,4.,事件使用委托。,m_MapView.SelectFeatureEvent += new MapView.SelectFeatureEventHandler(SelectFeature);,17,基于,AE,二次开发,GIS,系统,(AE+C#),C#,开发环境,(,属性编辑,),18,基于,AE,二次开发,GIS,系统,(AE+C#),C#,开发环境,(,对象事件,),19,基于,AE,二次开发,GIS,系统,(AE+C#),C#,开发环境,(,对象事件,),private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)/,处理地图鼠标事件,switch (m_CurMapEventStyle)/,判断地图时间类型,地图浏览,or,编辑,or,分析,case MapEventStyle.MapView:,m_MapView.MapEvent(e);,break;,case MapEventStyle.MapEdit:,m_MapEditor.MapEvent(e);,break;,case MapEventStyle.MapAnalysis:,break;,default:,break;,20,AE,支持的数据格式,基于文件的数据集,1.Coverages,2.Shapefiles,3.,栅格,4.,不规则三角网 (,TIN,),5.,影像(多种各式),6.,矢量产品的格式文件,7.,计算机辅助设计文件(多种格式),8.,地理标志性语言(很多的概述),9.,表(很多的格式),10.,直接读取,100+,矢量和,栅格,格式,11.,可扩展标示语言(,XML,),21,AE,支持的数据格式,Geodatabase,数据集,1.,带有其特殊类型的,DB2,2.,具有其特殊类型的,Informix,3.,结构化查询语言,SQL Server,4.Oracle,5.Oracle with Spatial or Locator,6.,个人,Geodatabase,(,Microsoft Access,),22,AE,支持的数据格式,常用数据类型介绍,1.Shapefile:,一种基于文件方式存储,GIS,数据的文件格式。至少由,.shp,.dbf,.shx,三个文件作成,分别存储空间,属性和前两者的关系。是,GIS,中比较通用的一种数据格式。,2.Coverage:,一种拓扑数据结构,一般的,GIS,原理书中都有它的原理论述。数据结构复杂,属性缺省存储在,Info,表中。目前,ArcGIS,中仍然有一些分析操作只能基于这种数据格式进行操作。,3.Geodatabase:ArcInfo,发展到,ArcGIS,时候推出的一种数据格式,一种基于,RDBMS,存储的数据格式,其有两大类:,1.Personal Geodatabse,用来存储小数据量数据,存储在,Access,的,mdb,格式中。,2.ArcSDE Geodatabse,存储大型数据,存储在大型数据库中,Oracle,Sql Server,DB2,等。可以实现并发操作,不过需要单独的用户许可。,23,基于,AE,二次开发,GIS,系统,(AE+C#),AE,能实现的功能,通过,AE,可完成绝大部分的,GIS,功能:,1.,空间数据的显示、查询检索、编辑和分析;,2.,创建各种专题图和统计报表;,3.,高级的制图和输出功能;,4.,空间数据管理和维护;,24,AE,主要模块,1,3D Analyst Extension -,用于,3D,可视化和表面建模的组件对象;,2,Application Framework -,让开发者在,ArcMap,和,ArcCatalong,中通过程序来定制用户界面。,3,ArcCatalog -,能够让开发者扩展数据对象模型并集成定制对象和视图到,ArcCatalog,应用框架中。,4,ArcMap -,提供了,ArcMap,应用程序的核心功能,用于操作和显示地图文档。,25,AE,的主要模块,5,ArcMap Editor-,包括了对象编辑器扩展组件对象,要做编辑开发来这吧。,6,Display - GIS,的一个重要应用就是数据表现,对国内的许多最终用户更是热衷于此,利用这里包含的对象可以完成诸如地图符号显示、图形编辑反馈轨迹、坐标转换和屏幕控制等功能。,7,Geocoding -,主要用于创建和管理地理编码服务等。,26,AE,的主要模块,8,Geodatabase-,AE,开发中一个不可或缺,毕竟,GIS,的应用都是围绕数据展开的,所以有关的,GIS,数据创建、加载、管理和存储等都是通过这里的对象进行的。,9,Geometry-,不管是要素还是图形,涉及到空间信息的获取和应用来这儿找吧。,10,IMS -,提供了连接到,ArcIMS,服务器并访问,ArcIMS,图象和要素服务的功能。,11,NetWork-,提供了网络创建、管理和完成分析操作等功能,打算定制和开发特定网络应用可以利用,NetWork,对象。,27,AE,的主要模块,12,OutPut -,有入就有出,如果想把制作好的地图输出怎么办,通过这里提供的对象来完成吧。,13,Raster -,用于访问和管理栅格数据的,AO,对象。,14,Spatial Reference-,用于完成空间参考的设置。,15,StreetMap USA Extension-,这个和国内的用户关系不大。,28,AE,核心组件库,System,库,Sysytem,库是,ARCGIS,框架中最底层的库,提供一些可以被其他组件库使用的组件,如数组(,Array,)、集合(,Sets,)等。,SystemUI,库,SystemUI,库定义了一些被,ARCGIS,用户界面组件所使用的对象,如,(ICommand,,,ITOOL),。,Geometry,库,Geometry,库包含了核心的几何形体对象,如点、线、面。还包含了空间参考对象,如几何坐标系统、投影坐标系统和地理变换对象。,29,AE,核心组件库,Display,库,Display,库主要包含了输出在设备上图形所需要的组件对象,包含,Display,、,Color,、,Symbol,等对象。,DisplayUI,库,DisplayUI,提供具有可视化界面的对象用于辅助图形显示,如(,Property Page,和,StyleGalleryCalss,对象)。,Carto,库,Carto,库包含为了数据显示和服务的各种组件对象。如(,MapElements,、,Layers,)。,30,AE,核心组件库,DataSourceFile,库,DataSourceFile,库的对象用于打开文件格式的地理数据,通过使用特定的,WorkSapceFactory(,工作空间工厂,),对象打开数据。,DataSourceRaster,库,DataSourceRaster,库的对象昂用于获取保存在多种数据源中的栅格数据。,GeoDataBase,库,GeoDataBase,库包含的对象用于操作地理数据库的。包含(,WorkSpace,)、,DataSet,,还包括几何网络、拓扑、,TIN,、版本对象、数据转化等。,31,AE,接口编程,AO,是基于,COM,的 。,COM,的概念:对象类,对象,接口,方法等。,在,OMD,(对象模型图)中有三类,class,分别是抽象类(,AbstractClass,)、组件类(,CoClass,)和普通类(,Class,)。,抽象类的主要目的是为它的子类定义公共接口,一个抽象类将把它的部分或全部实现延迟到子类中,因此,一个抽象类不能被实例化。一个组件类对象可以被直接创建,普通类对象虽然不能直接创建,但它可以作为其它类的一个属性或者从其它类的实例化来创建。,AO,中的,Dataset,或,Geometry classes,是抽象类的示例,一个,Geometry,类型对象不能被创建,但是一个,Polyline,可以被创建。这个,Polyline,对象实际上在抽象类的基础上实现了,Geometry,中定义的接口,因此在基类对象中被定义的接口可以从,coclass,来访问。,32,AE,接口编程,在,OMD,中的关系类型主要有类型继承(,Type inheritance,)、创建(,Instantiation,)、组成(,Composition,)以及关联(,Associations,)等。类型继承类似于,c+,的继承机制,实际上就是继承完全继承了超类的接口,这点可以利用,AO,对象浏览器工具清楚的看到,而组成关系指的是对象间的主次关系,也就是说主体的生命存在与否决定着次体的存在与否。,33,AE,接口编程(,C#,代码),IMap pMap =New,MapClass,();,pMap.name =,”,地图名称为,-Tour,”,.,. pMap.ClearLayers,();,pMap.Clear,();,/ Error,34,AE,接口编程(,C#,代码),在,COM,中对对象的访问是通过接口来完成,因此不能象许多可视化控件那样,可以直接通过其名称来调用属性或执行其方法。那么这句其实就是定义了一个接口变量(准确地讲应该是一个指向接口的指针变量才对,,C#,不使用指针。)有了这个接口变量还不行,因为接口是定义在对象上的,那么下来的步骤应该是产生一个对象,而对象来自类。,35,AE,接口编程(,C#,代码),IMap pMap =New,MapClass,();,在这句中不单纯只是实例化出一个,Map,对象,并且将上句的,pMap,接口变量做为了该对象的缺省接口。可以通过这个接口来对地图名进行修改,或者调用,ClearLayer,方法来删除掉该地图中的所有图层了。代码最后一句的执行情况会出错,原因很简单,不同的接口中的方法或属性只能通过其接口来访问,而,Clear,方法属于,Map,类的另外一个接口,IActiveView,所有。,36,AE,接口编程(,C#,代码),可以通过查询接口(,Query Interface,)来切换到,IActiveView,上。代码如下,:,IActiveView pView=pMap as IActiveView;,IActiveView pView=,(,IActiveView,),pMap,;,pView.Clear();,37,基于,AE,二次开发,GIS,系统,(AE+C#),AE,命令,AE,通过,ICommand,接口提供大量操作命令来完成一些基本功能。,ICommand command = new ControlsAddDataCommandClass(); command.OnCreate(axMapControl1.Object);,command.OnClick();,38,AE,命令,命令效果(弹出文件加载对话框),39,AE,命令,响应鼠标的命令,ICommand command = new ControlsScenePanToolClass(); command.OnCreate(axSceneControl1.Object);,if (command.Enabled),axSceneControl1.CurrentTool = (ITool)command;,40,AE+C,二次开发实例,41,AE,开发帮助,AE,拥有上千个接口。接口类型、方法多,需要借助,ArcGIS,对象说明和,Developer Help,。,一、,OMD,的作用,OMD,(对象模型图)是基于,OMT,(,Object Modeling Technique,)的表示方法,,OMD,功能:,1, 该类支持哪些接口;,2, 完成任务需要哪些对象;,3, 如何使用该类的对象;,4, 是否可以直接实例化类;,5, 接口有哪些方法和属性;,6, 是否有其它类也支持该接口;,7, 对象间的关系,42,AE,开发帮助,二、,Developer Help,三、,ESRI,在线帮助,四、,GIS,论坛,43,AE,开发帮助,AE,的开发帮助实例大部分用,VBA,编写,而且大部分基于,ArcObject,编写,但是,除了一部分属于带,UI,库名下的,AO,对象在,AE,下没有,大部分基于,ArcObject,的代码可以直接被,AE,使用。,44,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!