ArcEngine的基本原理对象组件模型.ppt

上传人:za****8 文档编号:11824072 上传时间:2020-05-03 格式:PPT 页数:48 大小:1.77MB
返回 下载 相关 举报
ArcEngine的基本原理对象组件模型.ppt_第1页
第1页 / 共48页
ArcEngine的基本原理对象组件模型.ppt_第2页
第2页 / 共48页
ArcEngine的基本原理对象组件模型.ppt_第3页
第3页 / 共48页
点击查看更多>>
资源描述
ArcEngine基本原理组件对象模型,上一课内容复习提要,1.1地理信息系统定义、类型和构成1.2地理信息系统的研究内容1.3地理信息系统的功能1.4GIS软件的发展与技术1.5GIS软件的开发模式1.6GIS软件的开发内容1.7GIS软件开发的相关技术,课程2,ArcGIS整体架构ArcEngine与ArcObject的关系与区别ArcEngine的体系结构对象组件模型COM如何阅读OMDArcEngine软件安装说明ArcEngine在VB或.net环境中的应用实例ArcGIS的二次开发VBA,2.1ArcGIS整体架构,ArcGISDesktop,ArcGISServer,ArcIMS,ArcGISMobileArcPad,ArcGISEngine,桌面GIS,嵌入式GIS,服务器GIS,移动GIS,Geodatabase,DBMS,File-based,XML,ArcSDE,ArcEditor,ArcView,ArcInfo,EngineDeveloperKit,ServerDeveloperKit,Customization,DesktopDeveloperKit,.NET,C+,VB,Java,.NET,VC+,VB,.NETADF,JavaADF,C+,ArcObjects,Customization,XML+,VBScript,ArcPadApplicationBuilder,JavaScriptHTML/DHTML,XML.NET,Services,JSPJava,ActiveX(ASP)ColdFusion,2.1ArcGIS整体架构,ArcGISDesktop:一套集成的高级GIS产品(ArcReader,ArcView,ArcEditor,ArcInfo,ArcGIS扩展模块等);ArcGISEngine:嵌入式GIS组件库,可使用C+,COM,.NET和Java来构建自定义的、面向行业的应用软件;ArcGISServer:GIS软件对象的共享库,用于构建企业和网络计算框架内的应用软件。它使用.NET/ASP和Java/JSP来构建基于SOAP的网络服务和网络应用程序;ArcIMS:GIS网络服务,通过开放的因特网协议发布地图、数据和元数据;ArcSDE:在大量的数据库管理系统(DBMSs)中进行地理数据管理的界面。,2.1ArcGIS整体架构,所有产品共享ArcObjectsEngine包括核心ArcObjects的功能,ArcGISDesktop,ArcGISEngine,ArcGISServer,2.2ArcObjects与ArcEngine的联系与区别,联系:ArcEngine包括核心ArcObjects的功能,其是对AO中的大部分接口、类、库进行封装所构成嵌入式组件。Ae中的组件接口、方法、属性与Ao是相同的。区别:开发环境:ArcObjects必须依赖与ArcGISDesktop桌面平台,即购买安装了ArcGISDesktop的同时,安装ArcObjects,才能利用AO进行开发。ArcEngine是独立的嵌入式组件,不依赖ArcGISDesktop桌面平台,直接安装ArcEngineruntime和DeveloperKit后,即可利用其在不同开发语言环境下开发功能:Ao的功能更强大,Ae的功能相对弱些,Ae不具备Ao的少部分功能可以理解为ArcEngine为嵌入式的ArcObjects,其具有简洁,灵活,易用,可移植性强的特点。,2.3ArcGISEngine体系结构,P1619,ArcEngine具有哪些功能?,基础服务核心函数,几何操作数据存取可以访问栅格数据和矢量数据地图分析高级空间分析和SQL访问地图表达标注,符号化,专题图开发组件Developerkit,mapping和3D控件,toolbar,TOC,ArcGISEngine,ArcGISEngine功能,显示具有多个地图图层(如公路,河流和边界)的地图。漫游与缩放地图。通过单击来识别地图上的要素。搜索地图上的要素。显示字段值的文本标注。绘制来自于航空照片或卫星影像的图像。绘制图形要素(如点、线、圆以及多边形)。绘制描述性文本。沿线或在方框、区域、多边形及圆内选择要素。在其它元素的特定距离内选择要素。使用SQL表达式查找并选择要素。使用主题方法为要素着色(如值映射图、分类图和点密度图)。动态显示即时或时间序列数据。根据提供的街道地址或交点在地图上查找位置。转换地图数据的坐标系统。执行形状的几何操作,来创建缓冲区;计算差值;或查找形状的交集,联合或反转交集。操作形状或旋转地图。创建和更新几何特征及其属性。交互操作个人地理数据库与主地理数据库。ArcGISEngine非常适合于构建高级GIS应用软件的基础制图。,ArcGISEngine产品和扩展,ArcGISEngineRuntime运行所有的ArcEngine应用程序都必需的安装在客户机的终端不同的runtime许可是可选择的ArcGISEngineDeveloperKit为开发者而设计包括所有库和开发资源所有选项都是已经激活许可通过软件授权,ArcGISEngineDeveloperKit是什么?,一个可嵌入式的GIS组件用来创建客户应用程序容易设计、配置、开发可扩展可展开可分发是面向开发者的产品,而不是最终用户,ArcEngine能创建哪种类型的应用程序?,可以创建任何类型的独立的GIS应用程序例如:独立,嵌入式的以及交叉平台的。可视Mapping,drawing,selecting,editing,不可视Utility,updating,Component(Map.dll),ClientArcMap,2.4COM,连接一个软件模型和另一个软件模型的一种协议独立的一种语言二进制规范运用界面或组件来开发、配置程序模型客户端调用服务器并且服务给予响应所有通讯是通过接口进行的,2.4COM类,COM类执行接口所有类执行IUnknown管理所有对象的产生、终结成员:QueryInterface,AddRef和ReleaseCoclasses是可创建的,PublicSubmapName()DimpMapAsIMap你能通过一个接口来创建一个实例SetpMap=NewMapEndSub,IUnknown,COM类与接口,类对象拥有一个或多个接口接口是定义了一组方法和属性的逻辑关系与对象的通信是通过接口来进行的,2.4COM接口,定义一组逻辑的方法和属性从IUnknown(default)继承ArcObjects支持客户化接口通过QueryInterface(QI)访问接口,PublicSubmapName()DimpMapAsIMapSetpMap=NewMap通过定义的pMap你可以有权使用其的propertiesandmethodsMsgBoxpMap.NameEndSub,2.4COM外部连接的一些接口,提供跟客户端来进行交换的一些事件的途径通过连接对象并接收它外部接口许多不同的事件在ArcEngine都可用例如:documentloadevents,mapdrawingevents,editingevents,PrivateWithEventsMxDocEventsAsMxDocumentPrivateSubsetNewValues().SetMxDocEvents=pMxDoc.FocusMapNowcanaccesseventsEndSubPrivateFunctionMxDocument_NewDocument()AsBooleanMsgBoxNewArcMapdocumentEndFunction,2.4ArcEngine和COMAPI(应用编程接口),所有ArcEngineCOM类型都已在类型库里定义好并且类型库是通过二进制文件来进行描述类:CLSIDs和ProgIDs接口:IIDs常量和列举执行DLL和EXE文件开发工具ArcGISDeveloperHelp(VB6orVC+)LibraryLocator,EOBrowserandOleView,*ArcObjectsC+*.dllfiles,*COMTypeLibraries*.olbfiles,2.4学习ArcEngine需要了解的COM内容(1),COM不是接口,也不是类,它是一种二进制级别的组件通信标准符合COM标准的对象称为COM对象,COM对象是实现了很多接口的对象,它可以DLL或者EXE文件形式存在COM对象必须实现IUnknown,它负责管理对象的生命周期QI,即所谓的查询接口。它是一个COM对象的多个接口之间相互转换的方法。缺省接口,每个COM对象一个缺省接口,通常为IUnknown,2.4学习ArcEngine需要了解的COM内容(2),每个组件都有一个独一无二的表示:GUID,组件的身份证。接口的GUID称为IID,而组件类的GUID为CLSID一个COM对象可以分为多个接口,一个接口可被多个COM对象实现接口分为两种:内向接口(属性、方法)和外向接口(事件)COM组件必须被注册后才能使用COM对象可在开发过程中不断扩充、添加新的接口。如:ILayer2COM对象编译为DLL和EXE进行传播,2.4其他,类型库中包含了所有COM类每个类型都有全球唯一标识(GUID)比如:CLSID,IID,Progid,使用esriSystem.UID就可以代表一个对象GUID详细描述CLSID或ProgID(ProjectName.ClassName),DimuAsNewUIDu.Value=4FDD8858-DF31-4D6B-8679-1FED633262DACLSIDofControlsMapRotateToolDimuAsNewUIDu.Value=esriControlCommands.ControlsMapRotateTool“ProgIDofControlsMapRotateTool,DimcommandAsICommandcommand=AxToolbarControl1.CommandPool.FindByUID(u)IfNotcommandIsNothingThenMsgBox(command.Name)EndIf,2.4COM的优越性,使得编程技术难度和工作量降低,降低开发周期和成本使得软件的复用性得到提高语言独立,可以使用任何一种语言编写COM组件,2.5如何阅读OMD,OMD(ObjectModelDiagram对象模型图)阅读一个对象的模型图类的类型类的相互关系接口、属性、方法的图标,OMD帮助编写代码OMD中展示每个类的接口,方法,属性OMD中展示各类之间的相互关联关系AO在几个图表中拥有超过1,500个类超过1,600个接口,ArcObject的OMD,在哪里可以找到ArcGISOMD图表,StartProgramsArcGISDeveloperHelp简单的、详细的类图PDFfiles电子书籍光盘中软件安装的目录中,关系符号的含义,继承组成用来创建对应关系1:N关联,*,_,蛋,鸟,翅膀,羽毛,2,Abstract,Class,Class,Class,燕子,CoClass,巢,CoClass,*,类和他们相应的对象,AO对象中关系符号的实例应用,MxDocument,Map,Layer,*,*,FeatureLayer,Application,OMD中的类与对象,抽象类(AbstractClass)普通类(Class)组件类(CoClass)接口方法和属性,不能创建一个新的对象实例也不能可能从其他对象中获取实例对象只能定义接口,被子类继承OMD中:2D的灰色矩形表示抽象类,抽象类(没有阴影),普通类(Class),不能用于创建一个新的对象,即不能用new关键字来产生对象可以从其他对象中获取对象实例OMD中:没有阴影的3D矩形,DimpNewRowAsIRowSetpNewRow=pTable.CreateRow,生成,可以直接创建,用new关键字DimpMapAsIMapSetpMap=NewMap也可以从其他对象中获取DimpMapAsIMapSetpMap=pMxDocument.FocusMapOMD中:有阴影的3D矩形,组件类(CoClass),棒棒糖类型的图标(),类的接口,这些接口也是有效的。但是详细的属性和方法必须在其它地方浏览。(e.g.,ObjectBrowser).,该接口被本类使用.所有的属性和放都列表在类图中.,继承接口是有效的,接口中属性与方法,Property(属性)哑铃形状的图标(表示属性是否可获取,是否可写入)Method(方法),1)属性值的直接写入:(Ao中大多数属性的写入方式)属性直接获取值或者是对象的一个copy不需要使用Set关键字2)属性值的引用写入:(Ao中部分属性的写入方式)属性值是为对象的引用值需要使用Set关键字如果引用对象发生了变化,对象的属性将同步受到影像,属性写入方式,pLayer.Name=PortMoresbyNoSetkeyword,SetpLayer.FeatureClass=pMoresbyDataMustuseSet!,1)返回属性值Name:String2)返回属性值的引用Document:IDocumentStatusBar:IStatusBar,属性获取方式,返回一个值DimstrNameAsStringDimpDocAsIDocumentDimpBarAsIStatusBarstrName=Application.NameMsgBoxstrName返回一个引用SetpDoc=Application.DocumentSetpBar=Application.StatusBarpBar.Message(0)pDoc.Title,FeatureLayeronMapLayerOMD,概念上,这是一个对象模型事实上,被分别在几张图表里存放虫洞表现了图表与图表间的连接关系,虫洞(Wormholes),ElementonArcMapOMD,虫洞,2.6ArcEngine软件安装说明,安装argengine9.2Runtime,DeveloperKitLience的许可文件:ArcEngineDKit.ecp无时间限制designer,92,ecp.arcgis.engine,none,WEJ7LNA3D187XH46C097standardengine,92,ecp.arcgis.engine,none,WELDC7PPE00LTJT46220到31-jan-2010过期3dengine,92,ecp388002580,31-jan-2010,JFB450NHRHELCZM6D168designer,92,ecp280035361,31-jan-2010,XXMA0RD7G9EL8PJ28188,2.7ArcEngine在VB或.net环境中的应用实例,在VB环境下1、打开VB运行程序,创建一个项目2、引用ArcEngine中的库3、添加ArcEngine中的组件MapControl,ToolBarControlTocControl其以图标方式增加到工具栏,4、将MapControl控件,ToolBarControl,TocControl拖到Form窗体,修改属性,加载数据5.添加代码,应用ArcEngine中库的对象,直接调用方法、属性。6、点击运行,即可,2.7ArcEngine在VB或.net环境中的应用实例,在VB.net环境下1、打开.net运行程序,创建一个项目2、引用ArcEngine中的库3、添加ArcEngine中的组件MapControl,ToolBarControlTocControl其以图标方式增加到工具栏,4、将MapControl控件,ToolBarControl,TocControl拖到Form窗体,修改属性,加载数据5.添加代码,应用ArcEngine中库的对象,调用方法、属性。需要在代码头添加“Imports库名”,如:ImportsesriCarto6、点击运行,即可,2.7VB与VB.net语法差异,Set关键字VB.net:pFeatureLayer=pMap.Layer(0)VB:SetpFeatureLayer=pMap.Layer(0)C#:pFeatureLayer=pMap.get_Layer(0);函数返回语句FunctionCreateTable()asITablereturnpTable/VB.net的返回方式CreateTable=pTable/VB中的返回方式EndfunctionNew语句,取消引用对象外部语法的表示方式一样,但内部VB与VB.net的实现机制不一样,2.8ArcGIS的二次开发VBA,VBA(VisualBasicforApplication),是嵌在arcGIS程序中的一种工业化开发工具。Application和ThisDocument是VBA环境中的两个全局变量利用VBA可以快速定制和扩展ArcGIS,向ArcGIS中添加工具栏、按钮等,扩展其功能。,实例:MxDocumentMaplayer,DimpMxDocAsIMxDocumentSetpMxDoc=ThisDocumentDimpMapAsIMapSetpMap=pMxDoc.FocusMapDimpLayerAsILayerSetpLayer=pMap.Layer(1)IspLayeraFeatureLayer?IfTypeOfpLayerIsIFeatureLayerThenMsgBoxYes!,itsafeaturelayerEndIf,MxDocument,Map,FeatureLayer,Layer,*,*,Others,总结,ArcGIS整体架构ArcEngine与ArcObject的关系与区别ArcEngine的体系结构对象组件模型COM如何阅读OMDArcEngine软件安装说明ArcEngine在VB或.net环境中的应用实例ArcGIS的二次开发VBA,课后要求,预习P25-30,VBA开发环境,进行上机操作预习课本第二章用户界面定制VBA开发,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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