ArcGISEngine培训教程.ppt_第1页
ArcGISEngine培训教程.ppt_第2页
ArcGISEngine培训教程.ppt_第3页
ArcGISEngine培训教程.ppt_第4页
ArcGISEngine培训教程.ppt_第5页
已阅读5页,还剩134页未读 继续免费阅读

下载本文档

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

文档简介

,目录,1ArcGIS体系结构2ArcGISEngine是什么3ArcGISEngine的主要功能4ArcGISEngine类库5ArcGISEngine控件6接口的概念7对象模型图的阅读8什么是地理数据库9ArcGISEngine开发环境与流程10ArcGISEngine许可与部署11开发综合实例,ArcGIS整体架构,Customization,1、ArcGIS的客户端,ArcGIS的客户端产品包括ArcView、ArcEditor、ArcInfo三个客户端都有统一风格的桌面应用:ArcCatalog、ArcMap和ArcToolbox。,ArcCatalog:ArcCatalog是一个集成化的空间数据管理器,主要用于空间数据浏览,Geodatabase的结构定义、数据的导入导出、网络模型的生成、对象关系和规则的定义、元数据的定义和编辑修改等。ArcCatalog支持大量的数据格式,包括:ESRIshapefiles,Geodatabases,ArcSDElayers,INFOtables,Image,Grid,Tin,CAD文件,动态分段事件以及其它ESRI数据类型和文件等。,ArcMap是集空间数据显示、编辑、查询检索、统计、报表生成、空间分析和高级制图等众多功能于一体的桌面应用平台。ArcMap提供面向对象的类似CAD的空间数据编辑工具,全面支持空间数据的可视化交互操作。ArcMap提供了所见即所得的符号编辑器,令使用者可以随心所欲地生成任意复杂的点线面符号。ArcMap进一步拓展了ESRI强大的空间数据直接读取能力,多种格式的数据无需进行转换或利用中间交换格式即可动态地直接使用。ArcMap支持的空间数据格式包括:ArcInfocoverages,ESRIshapefiles,ArcSDElayers,DXFandDWG,DGN,大量的图像格式,GRID、TIN,等等。ArcMap还支持空间数据的动态投影(on-the-flyprojection)。,1、ArcGIS的客户端,ArcToolbox是一个用于空间数据格式转换、叠加处理、缓冲区生成、坐标转换等的集成化“工具箱”。ArcToolbox以树形结构方式组织了120多个不同的空间数据处理工具,并且都是以菜单驱动的方式提供出来,这为我们以一种确定的、轻松的方式去完成哪怕是很复杂的工作提供了前所未有的方便。,1、ArcGIS的客户端,2、ArcGIS的服务器端,ArcIMS用户的空间数据和应用可以通过ArcIMS在Intranet/Internet环境中进行发布和共享。ArcIMS提供用户在服务器端可以以影像方式或矢量数据流方式进行数据发布。客户端用户通过工业标准的通用浏览器即可对ArcIMS服务站点进行访问和交互操作。ArcIMS支持包括Servlet、ColdFusion、ASP等多种WebServer端技术,同时开发了有望成为未来Internet环境中GIS通用语言的ArcXML,为空间数据跨厂商跨平台的广泛交流和共享打下了坚实的基础。,ArcSDEArcSDE是ESRI的空间数据库引擎,用于对海量空间数据及其属性数据的管理和驱动,为并发访问的客户端提供快速、安全的数据服务。ArcSDE支持工业标准的DBMS平台(如:ORACLE、SQLServer、DB2、Informix等),同时引入了其独有的异步缓冲机制和协同操作机制,使得空间数据服务的响应效率得到提高,真正起到了“引擎”的作用,而并不仅仅是提供一种空间数据存储方式。另外,ArcSDE具有丰富的客户端可供用户选用,如:ArcInfo、ArcView、ArcIMS、MapObjects、ArcExplorer等。同时,还提供了开放的API编程接口,供用户或开发商开发自己的客户端应用或产品。,2、ArcGIS的服务器端,4、ArcGIS与ArcObjects,ArcGIS是构建在ArcObjects组件库之上。ESRI使用ArcObjects来开发软件和应用程序。开发者使用ArcObjects去客户化软件与创建自己的应用程序。ArcObjects是ArcGIS的核心。,5、ArcGIS软件体系结构,产品共享ArcObjects组件库和底层功能ArcGISEngine包含了核心的功能,ArcGISDesktop,ArcGISEngine,ArcGISServer,由于遵循了主流的标准,信息能根据标准来交互,ArcGIS是一个开放的平台。,目录,1ArcGIS体系结构2ArcGISEngine是什么3ArcGISEngine的主要功能4ArcGISEngine类库5ArcGISEngine控件6接口的概念7对象模型图的阅读8什么是地理数据库9ArcGISEngine开发环境与流程10ArcGISEngine许可与部署11开发综合实例,ArcGISEngine产品,ArcGISEngine包含了两个产品:ArcGISEngineRuntime是运行所有ArcGISEngine应用程序所必须的软件最终用户需要安装可以进行不同的运行时选项选择ArcGISEngineDeveloperKit开发者使用的包含了所有开发库和开发资源可以进行所有的选项开发两个产品都通过软件许可文件授权,ArcGISEngineDeveloperKit产品,用来创建独立、嵌入式的桌面应用程序包含构建ArcGISEngine应用程序所需的许可构建在ArcObjects基础之上不包含ArcMap,ArcCatalog,ArcToolbox,ArcScene等应用程序框架运行在桌面上(Windows,Unix,BoomBOX,接口概念,接口与ArcGIS的关系,ArcGIS正是在在这种组件技术的基础上搭建的,ArcGIS不但提供了基于图形用户界面的应用,而且提供了搭建这些应用的所有组件,这样为用户重新搭建他们自己的应用提供了巨大的空间。ArcGISEngine提供了基于COM、.NET、Java和C+的APIs,它支持4种开发环境(C、COM、.NET和Java),能够实现跨平台部署(Windows、UNIX和Linux)。,目录,1ArcGIS体系结构2ArcGISEngine是什么3ArcGISEngine的主要功能4ArcGISEngine类库5ArcGISEngine控件6接口的概念7对象模型图的阅读8什么是地理数据库9ArcGISEngine开发环境与流程10ArcGISEngine许可与部署11开发综合实例,1、对象模型图阅读,几个名词概念:UML:UnifiedModelingLanguage统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。OMD:Objectmodeldiagrams对象模型图表。首先来看看OMD能帮我们做什么?1该类支持哪些接口;2完成任务需要哪些对象;3如何使用该类的对象;4是否可以直接实例化类;5接口有哪些方法和属性;6是否有其它类也支持该接口;7对象间的关系,这些符号是基于UML画图工具创建的,UML符号是面向对象分析和设计的工业图样标准。对象模型图中提供的信息非常多,是对象浏览器中信息的重要补充。VisualBasic,或者其它的开发环境,都会列出所有的类和成员,但不会指明这些类之间的关系。所以,对象模型图是非常有利于读者对ArcInfo组件的理解的!,1.类和对象在UML图中有三种类型的类:抽象类(abstractclass)、可创建类(createableclass)与可实例化类(instantiableclass)。抽象类不能用以创建新对象,但可以用来指定子类。举个例子,“鸟”是“鸡”的抽象类。可创建类指的是那些能够直接使用开发环境中的对象定义语法来创建对象。比如在VisualBasic中是这样书写:DimAsNew或者CreateObject。可实例化类不能够直接创建新对象,但是这种类的对象能够作为其它对象的属性被创建或是从其它类的方法中创建。-比较难理解。,1、对象模型图阅读,鸟Abstract,鸟巢CoClass,鸡CoClass,羽毛Class,翅膀Class,蛋Class,*,2,2.关联在抽象类、可创建类和可实例化类之间,有几种存在的关联(或称关系)。联系(association)便描述了类之间的关联。在两端的类中可以定义多重性(Multiplicity)关联。在这张图上,一个业主能有拥有一块或多块宗地;同样地,一块宗地可以被一个或多个业主所共有。多重性关联就是限制对象类与其它对象关联的数目关系。以下是用于多重性关联的符号:1一个并且只有一个,这种多样性是可选的;如果不标明,则默认为“1”0.1零个或一个M.N从M到N(正整数)*或者0*从零到任意正整数1*从一到任意正整数,1、对象模型图阅读,3、类继承(typeinheritance)定义了专门的类,它们拥有超类的属性和方法,并且同时也有自身的属性和方法。上图说明primaryline和secondaryline是line的一种类型。,4、实例化(Instantiation)指定一个类的对象有这样的方法,它能够创建另外一个类的对象。pole对象有一个方法能够创建transformer对象。,1、对象模型图阅读,5、组成(Composition)是一种更为强壮的聚合方式,此种方式下,“整体”对象控制着“部分”对象的生存时间。一个pole包含一个或多个crossarm。在这个图中当pole被移除后,crossarm就不能再使用了。因为pole控制着crossarm的生存时间。,1、对象模型图阅读,6、OMD中的符号:一个三角形符号表示继承形的黑色小块表示组成线前头带个箭头表示用来创建*表示对应关系1:N一条直线表示联合,1、对象模型图阅读,6、OMD中的符号:类的类别:抽象类:不能创建或实例化,从来没有一个抽象类的实例用于定义子类的公共接口,子类继承其定义的接口。OMD符号为:二维的内部有阴影的矩形。例化类:不能创建,从别的对象获得实例。OMD符号为:3D矩形内部没有阴影可创建的类:用New关键字创建对象或者从别的对象获得运行实例。OMD符号为:带阴影的3D矩形符号。,1、对象模型图阅读,6、OMD中的符号:属性和方法:属性:哑铃状的图标,Read(左侧的哑铃)和write(右侧的哑铃)方法:指向左侧的箭头接口:棒棒糖类型的图标图表之间的连接:虫洞,1、对象模型图阅读,7、入接口和出接口(Inboundinterface,Outboundinterface)COM调用既可以是单向的(即客户程序创建组件对象,然后客户程序调用对象所提供的功能,在适当时候再把对象释放掉),通常称为入接口。如果一个COM对象支持一个或多个主动与客户程序进行通信的接口,则这种接口称为出接口,是因为这些接口并不由对象实现,而是由客户程序实现.(类似回调函数,在对象模型图中表现为“事件”),1、对象模型图阅读,个人感觉在OMD图中比较难理解的就是可实例化类CLASS。从下面的例子去理解它:ArcGISEngine中workSpace就是一个可实例化类,WorkSpace不能用new创建,但可以通过WorkSpaceFarctory.Openfromfile()方法来创建.如下:IWorkspaceFactorypWorkspaceFactory=newAccessWorkspaceFactoryClass();IWorkspacepWorkspace=pWorkspaceFactory.OpenFromFile(ConnectionString,0);,1、对象模型图阅读,2、接口查找,快速得知ArcGISEngine接口所属命名空间的几种方式,1.VisualStduio2005中提供的智能感知(鼠标悬浮在接口上就能看到)或“转到定义”(理论上提供F12快捷),2.使用帮助文档的索引ArcGIS的帮助文档可以说是非常强悍的,如下图所示:,3.使用AE自带的工具:【LibraryLocator】这个工具的使用比较简单(如果用.NET的话,勾选窗体下部的复选框),该工具能够粘贴命名空间和ProgID。,4.OMDOMD文档结构图,理理接口之间的关系,能很大的帮助自己。,2、接口查找,3、接口跳转,接口跳转又叫接口查询,Fuel,AccelerateBrake,PitStop,LapTime,IDrive,IRace,RaceCar,DimpCarasIDriveSetpCarnewRaceCarpCar.AccelerateDimpRaceasIRaceSetpRace=pCarpRace.PitStoppCar.Accelerate,接口跳转时要特别注意:同一个Com类或则向上(父类)可以实现接口跳转向下或同级不可以实现接口跳转,下午,目录,1ArcGIS体系结构2ArcGISEngine是什么3ArcGISEngine的主要功能4ArcGISEngine类库5ArcGISEngine控件6接口的概念7对象模型图的阅读8什么是地理数据库9ArcGISEngine开发环境与流程10ArcGISEngine许可与部署11开发综合实例,Geodatabase实际上可以看成是我们在系统中所处理和使用的所有空间数据的一个智能库。物理上,数据被存放在数据库管理系统(DBMS)中,其类型可以是各种各样的,包括:,Geodatabase数据模型使现实世界的空间数据对象与其逻辑数据模型更为接近。在geodatabase中,定义的不再是传统GIS对空间数据进行抽象后的“点”、“线”、“面”等简单空间要素,而是应用领域中熟悉的对象,如:杆塔、刀闸、电缆、道路、建筑、用地等。更重要的是geodatabase使我们不需要编写任何程序代码即可实现数据对象主要的操作行为。大多数的操作行为都可以通过对象值域(Domain)、子类型(Subtype)、规则等的定义以及ArcInfo提供的应用框架中丰富的其它功能来完成。,什么是Geodatabase,使用Geodatabase的好处,Geodatabase是面向对象的空间数据模型,同时,ArcInfo中提供了智能化的工具和CASE接口,供我们定义自己的数据对象,不但定义数据对象的空间几何特征,还可定义其规则、关系和操作行为。具体而言,Geodatabase可以为我们带来如下好处:,统一的空间数据智能库:系统中所有的空间数据都可以统一地在同一数据库中存放和管理。数据的一致性得以保证:由于定义了规则和值域等,数据的录入和编辑都可以进行智能化的合法性校验,从而避免了数据的不一致性。用户可以更直观地使用数据:Geodatabase中的数据对象与领域应用中实际的空间要素更为接近,用户不再是面对在其应用领域没有特定意义的点、线、面等抽象的东西,而是直接操作他所熟悉的对象,如:变压器、电杆、高压线、刀闸、人井、道路、湖泊等。,空间要素不再孤立存在:在Geodatabase中,我们可以定义对象与对象之间的关系。于是我们可以描述或定义对一个空间要素而言,如果与其相关的其它空间要素被移动、修改或删除时,对它会有何影响。这样,当我们移动一个电杆时,与其相连的电线就可以自动根据这种对象关系完成必要的移动,而无需人为干预。可以更好地制图:借助Geodatabase数据模型,可以对空间要素的确绘制方法进行更多的控制。在ArcMap中,可以直接利用智能化的、复杂的制图方法。通过为空间数据对象的扩展编码,实现高度定制的绘制方法。空间要素的几何形状可以更好地表示:Geodatabase中支持直线(段)、圆弧、椭圆弧及Bzier曲线等。连续的空间数据集合:Geodatabase中表示大规模空间数据集合的方法是连续的,不需要对空间数据集进行分块或其它方式的切割,使逻辑模型和现实对象更加统一。多用户并发操作:Geodatabase支持工作流访问模式,多个用户可以同时对同一区域中的空间要素进行编辑,通过版本管理(Versioning)解决可能的冲突以保障数据的一致性和安全性。,使用Geodatabase的好处,Geodatabase可以用四种方式表达空间数据:离散的对象表示为矢量要素,连续的对象表示为栅格,表面表示为TIN,地物定位参考表示为地址(locatorsandaddresses)。Geodatabase提供定义和管理空间数据集合的地理坐标系的框架。Geodatabase可对空间上存在拓扑关联的空间数据进行空间建模,譬如:设施网络、交通网络等。Geodatabase可在空间数据对象间定义任意的关联关系。Geodatabase可定义空间数据对象的值域、子类和规则。Geodatabase可处理数据的多版本管理,以满足多用户并发的长事务处理需求。,Geodatabase对DBMS有何扩展,如何导到影象数据到Geodatabase中?如何连接空间数据库?,目录,1ArcGIS体系结构2ArcGISEngine是什么3ArcGISEngine的主要功能4ArcGISEngine类库5ArcGISEngine控件6接口的概念7对象模型图的阅读8什么是地理数据库9ArcGISEngine开发环境与流程10ArcGISEngine许可与部署11开发综合实例,APIs和开发环境,AO可选的的开发方式可以分为三种利用ArcGIS桌面应用程序(如ArcMap)内置的VBA宏进行客户化在AO组件基础上进一步包装自己的COM组件开发独立的EXE应用程序,ArcGISEngine支持一下四种开发环境COM:VB6、VC等.Net:VB.Net、C等Java:标准的JavaC:标准C每种开发环境下的ArcGISEngine的开发大体是一样的。只有少数的区别。,以VBA方式进行定制开发,打开ArcMap应用程序,选择Tools菜单下的MACROS子菜单打开VBA环境选择Project工程下的ArcMapObject,双击打开其中的ThisDocument对象在右边的编辑环境中选择对象列表中的MxDocument对象,在任务列表中选择OpenDocumen,键入如下的代码DimpmapAsIMapSetpmap=NewMappmap.Name=Hello,worldMsgBoxpmap.Name按CTRL+S保存后退出ArcMap。再次打开你所保存的工程文档,在下面的图片中就得到了程序运行的结果,以VBA方式进行定制开发,ArcGISEngine开发所需要的预备知识,理解COM组件技术了解一门编程语言(VB,.NET,VC+,Java)怎么使用ArcObjects知道开发者资源理解授权与部署的模型注:不管何种开发方式,使用ArcGISEngine进行应用程序的开发成功与否取决于开发人员掌握的编程环境和ArcObjects的技能。,如何开始.Net的Engine开发?,安装VisualStudio2005(ExpressorProfessional).NET2.0SDK和Runtime,ArcGISEngine开发流程,数据准备确定应用程序类型选择API和开发环境开发应用程序部署应用程序,1、数据准备,收集和整理系统开发中所需要到的数据。一包括:属性数据、矢量数据和影像数据等。确定待开发的系统的数据结构等。,2、确定应用程序类型,使用ArcGISEngine可以开发多种应用程序。一独立的非可视化应用程序。如控制台和实用工具应用程序。一独立的可视化应用程序。如Wiondows和基于控件的应用程序。一嵌入式应用程序。如嵌入到现有的应用程序中的组件。一跨平台的上述应用程序。用Java或C+编写。,3、选择API和开发环境,选择合适的API和开发环境:一COM:VisualStaudio6.0(VB,VC+)一.Net:VisualStudio.Net(VB.Net,C)一Java:Eclipse,WebsphereStudio,Jbuilder等。一C+:VisualStudio6.0,C+Builder主要根据开发人员熟悉何种环境和语言、打算使用何种API、待开发的系统在何种平台和环境下运行等因素综合考虑确定。,4、开发应用程序,具体的功能代码开发。主要考虑:一将使用到ArcGISEngine的何种功能。一决定要引用的ArcGISEngine的类库。一运行应用程序所需要的ArcGIS何种许可。一是否需要ArcGISEngine运行时的选项。一具体代码编写。一计划如何部署应用程序。一是否实现了正确的许可代码。在这个过程中将使用到ArcGIS的开发帮助系统。,5、部署应用程序,把最终开发完成的程序部署到目标机器上。主要考虑:一目标机器的ArcGIS产品的安装情况。是单独安装ArcGISEngine还是同时还安装ArcGISDesktop。一目标机器采用何种许可认证方式。一开发人员如何打包和部署安装程序。一将来是否提供新版本进行升级。一如何分发开发的应用程序。如网络安装、光盘介质。,创建Engine应用程序:(.NET),步骤创建一个项目引用ArcGIS库初始化许可,步骤1:创建一个独立项目,创建一个Windows应用程序VB.NET或C#项目名称是一个namespaceEngineLicenseApp,步骤2:引用ArcGIS库,手动引用ESR集合引用开发工具ESRIAutomaticReferencesadd-in在所有类里导入引用,ImportsESRI.ArcGIS.esriSystemPublicClassfrmEngineClientInheritsSystem.Windows.Forms.Form,步骤3:初始化许可,手动实现这段代码DevelopertoolsESRILicenseInitializeradd-in,Privatem_pAoInitializeAsIAoInitializePrivateSubForm_Load()Setm_pAoInitialize=NewAoInitializem_pAoInitialize.InitializeesriLicenseProductCodeEngineEndSubPrivateSubForm_Unload(CancelAsInteger)m_pAoInitialize.ShutdownEndSub,步骤4:加载地图控件,添加地图控件编写事件代码,PrivatestringfileName=Application.StartupPath+.Untitled.mxd“if(axMapControl1.CheckMxFile(fileName)=true)axMapControl1.LoadMxFile(fileName,Type.Missing,);axMapControl1.Enabled=true;axMapControl1.Extent=axMapControl1.FullExtent;axPageLayoutControl1.LoadMxFile(fileName,);,目录,1ArcGIS体系结构2ArcGISEngine是什么3ArcGISEngine的主要功能4ArcGISEngine类库5ArcGISEngine控件6接口的概念7对象模型图的阅读8什么是地理数据库9ArcGISEngine开发环境与流程10ArcGISEngine许可与部署11开发综合实例,ArcGISEngine许可管理,ArcGISEngine许可初始化一使用ArcObjects开发的每个独立应用程序必须用一个合适的许可进行初始化,以保证安装了该应用程序的任何机器上成功地运行应用程

温馨提示

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

评论

0/150

提交评论