• 1. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 2. ArcGIS 整体架构CustomizationArcGIS DesktopArcGIS ServerArcIMSArcGIS Mobile ArcPadArcGIS Engine桌面 GIS嵌入式 GIS服务器 GIS移动 GISGeodatabaseDBMSFile-basedXMLArcSDEArcEditorArcViewArcInfoEngine Developer KitServer Developer KitCustomizationDesktop Developer Kit.NETC++VBJava.NETVC++VB.NET ADFJava ADFC++ArcObjectsXML+VBScriptArcPad Application BuilderJavaScript HTML/DHTMLXML .NETServicesJSP JavaActiveX (ASP) ColdFusion
  • 3. 1、ArcGIS的客户端ArcGIS的客户端产品包括ArcView 、ArcEditor、ArcInfo 三个客户端都有统一风格的桌面应用:ArcCatalog、ArcMap和ArcToolbox。 ArcCatalog: ArcCatalog是一个集成化的空间数据管理器,主要用于空间数据浏览,Geodatabase的结构定义、数据的导入导出、网络模型的生成、对象关系和规则的定义、元数据的定义和编辑修改等。 ArcCatalog支持大量的数据格式,包括:ESRI shapefiles, Geodatabases, ArcSDE layers, INFO tables, Image, Grid, Tin, CAD文件, 动态分段事件以及其它ESRI数据类型和文件等。
  • 4. ArcMap 是集空间数据显示、编辑、查询检索、统计、报表生成、空间分析和高级制图等众多功能于一体的桌面应用平台。 ArcMap提供面向对象的类似CAD的空间数据编辑工具,全面支持空间数据的可视化交互操作。 ArcMap提供了所见即所得的符号编辑器,令使用者可以随心所欲地生成任意复杂的点线面符号。 ArcMap进一步拓展了ESRI强大的空间数据直接读取能力,多种格式的数据无需进行转换或利用中间交换格式即可动态地直接使用。ArcMap支持的空间数据格式包括:ArcInfo coverages, ESRI shapefiles, ArcSDE layers, DXF and DWG, DGN, 大量的图像格式, GRID、TIN,等等。 ArcMap还支持空间数据的动态投影(on-the-fly projection)。1、ArcGIS的客户端
  • 5. ArcToolbox 是一个用于空间数据格式转换、叠加处理、缓冲区生成、坐标转换等的集成化“工具箱”。ArcToolbox以树形结构方式组织了120多个不同的空间数据处理工具,并且都是以菜单驱动的方式提供出来,这为我们以一种确定的、轻松的方式去完成哪怕是很复杂的工作提供了前所未有的方便。1、ArcGIS的客户端
  • 6. 2、ArcGIS 的服务器端ArcIMS 用户的空间数据和应用可以通过ArcIMS 在 Intranet/Internet环境中进行发布和共享。ArcIMS提供用户在服务器端可以以影像方式或矢量数据流方式进行数据发布。客户端用户通过工业标准的通用浏览器即可对ArcIMS服务站点进行访问和交互操作。ArcIMS支持包括Servlet、ColdFusion、ASP等多种Web Server端技术,同时开发了有望成为未来Internet环境中GIS通用语言的ArcXML,为空间数据跨厂商跨平台的广泛交流和共享打下了坚实的基础。
  • 7. ArcSDE ArcSDE是ESRI的空间数据库引擎,用于对海量空间数据及其属性数据的管理和驱动,为并发访问的客户端提供快速、安全的数据服务。ArcSDE支持工业标准的DBMS平台(如:ORACLE、SQL Server、DB2、Informix等),同时引入了其独有的异步缓冲机制和协同操作机制,使得空间数据服务的响应效率得到提高,真正起到了“引擎”的作用,而并不仅仅是提供一种空间数据存储方式。另外,ArcSDE具有丰富的客户端可供用户选用,如:ArcInfo、ArcView、ArcIMS、MapObjects、ArcExplorer等。同时,还提供了开放的API编程接口,供用户或开发商开发自己的客户端应用或产品。 2、ArcGIS 的服务器端
  • 8. 4、ArcGIS 与 ArcObjectsArcGIS是构建在ArcObjects组件库之上。 ESRI 使用 ArcObjects来开发软件和应用程序。 开发者使用ArcObjects去客户化软件与创建自己的应用程序。 ArcObjects 是 ArcGIS 的核心。
  • 9. 5、ArcGIS 软件体系结构产品共享ArcObjects组件库和底层功能 ArcGIS Engine 包含了核心的功能ArcGIS DesktopArcGIS EngineArcGIS Server
  • 10. 用户界面/客户化 数据管理数据模型连接/通信DBMS: SQLObject-Components: COM, EJBWindows / Browser: VB, C++, JavaXML,TCIP/IP, HTTP由于遵循了主流的标准,信息能根据标准来交互,ArcGIS是一个开放的平台。
  • 11. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 12. ArcGIS Engine 产品ArcGIS Engine包含了两个产品: — ArcGIS Engine Runtime 是运行所有ArcGIS Engine应用程序所必须的软件 最终用户需要安装 可以进行不同的运行时选项选择 — ArcGIS Engine Developer Kit 开发者使用的 包含了所有开发库和开发资源 可以进行所有的选项开发 两个产品都通过软件许可文件授权
  • 13. ArcGIS Engine Developer Kit产品用来创建独立、嵌入式的桌面应用程序 包含构建ArcGIS Engine应用程序所需的许可 构建在ArcObjects基础之上 不包含ArcMap, ArcCatalog, ArcToolbox, ArcScene 等应用程序框架 运行在桌面上(Windows, Unix & Linux) 提供多种开发APIs C++, .Net, Java, COM 4种APIs使用了相同的对象 包括了构建定制ArcGIS Engine独立应用的所有功能
  • 14. ArcGIS Engine Developer Kit产品不是最终用户的应用产品 是面向开发人员的工具包 开发工具包包含 对象/控件 文档 帮助 示例代码
  • 15. ArcGIS Engine Runtime产品是基于ArcGIS Engine应用的运行时 可分发安装 跨平台 Windows, UNIX & Linux 没有ArcGIS桌面应用框架或对话框 需要许可授权 通过代码或应用工具配置
  • 16. ArcGIS Engine Runtime产品ArcGIS Engine运行时包含: 标准Engine Runtime Engine扩展 企业GeoDatabase编辑 更新要素和编辑方案 空间分析 3D分析 StreetMap USA
  • 17. 标准Engine功能地图浏览 地图制作 数据查询 数据分析 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅格数据源的读权限 对Shapefile和pGDB的写权限 读/写 MXD文件
  • 18. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 19. ArcEngine产品结构ArcEngine是开发人员用于建立自定义应用程序的嵌入式GIS组件的完整类库。包含以下五个部分:基本服务:由GIS核心ArcObjects构成。几乎所有的GIS应用程序都需要,如几何体和显示。 数据存取:对许多栅格和矢量格式的数据进行存取,包括GeoDatabase。 地图表达:创建和显示带有符号、标注的地图以及专题地图的ArcObjects对象。 开发组件:快速应用开发的高级用户接口控件和综合帮助系统。 运行时选项:与标准功能或其他高级功能一起部署的部件。
  • 20. 标准ArcGIS Engine开发组件标准的ArcGIS Engine开发组件包含: — 数据和地图的显示 (MapControl & TOC) — 跟踪形状和显示绘制(Map) — 定制工具和命令 (Toolbar) — 地图布局和打印 (PageLayout) — 访问底层的ArcObjects
  • 21. ArcGIS Engine扩展模块GeoDatabase Updata 3D 分析 空间分析
  • 22. GeoDatabase Updata扩展提供创建和更新多用户企业级地理数据库的功能。 版本管理、离线编辑 提供了拓扑、子类和几何网络等地理数据库行为的程序实现。 释放相应的ArcObjects的功能。
  • 23. 空间分析扩展创建、查询和分析基于像元的栅格数据 坡度计算 坡向计算 用数字高程模型生成等高线 ……
  • 24. 3D分析扩展实现数据的三维可视化 提供SceneControl和GlobeControl 创建表面和分析表面的多层3D数据 把3D功能嵌入到应用系统中。
  • 25. 小结:ArcGIS Engine的功能图层显示 地图漫游和缩放 识别地图上的要素 显示字段值的文本标注 显示航空相片或卫星影像 绘制描述性文本 用线、框、区域、多边形和圆选择要素 选择与某些要素的距离在一定范围的要素 用结构化查询语言表达式查找和选择要素 定制地图的专题显示方式 动态显示实时或时间序列数据 转换地图的坐标系统 在要素几何形状上执行几何操作以,创建缓冲区、计算差异、发现交叉、合并和求异等。(几何运算) 处理要素形状或者旋转地图 创建和更新地理要素及其属性 地图制图输出 3D显示、空间分析 ……
  • 26. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 27. ArcGIS Engine类库图
  • 28. ArcGIS Engine类库:1、SystemSystem类库是ArcGIS系统结构中最底层的类库。 System类库包含了构成为ArcGIS的其他类库提供服务的组件。 System类库中定义了大量开发者可以实现的接口,如AoInitializer对象就是在System类库中定义的,所有开发者必须使用这个对象来初始化ArcGIS Engine。
  • 29. ArcGIS Engine类库:2、 SystemUI 包含用户界面组件接口定义。如:Icommand、Itool和IToolControl接口。 开发者使用这些接口来扩展UI组件。 包含的一些使用工具对象,通过使用这些对象来简化用户界面的开发, 如Icommand和Itool这样的接口就在这里定义。
  • 30. ArcGIS Engine类库:3、Geometry处理存储在要素类中的要素形状。如:Point、MultiPoint、Polyline、Polygon等。 存储构成几何要素的子要素。如:Segement、Path、Ring等。 存储几何要素的空间参考对象。包括:投影坐标和地理坐标系统等。
  • 31. ArcGIS Engine类库:4、Display用于控制地图显示。 包含用于显示GIS数据的对象。 包含符号、颜色等用来控制显示的对象。 包含交互操作时提供给用户显示回馈的对象,如MoveEnvelopeFeedback。
  • 32. ArcGIS Engine类库:5、Server用来连接并操作ArcGIS Server。 访问ArcGIS Server的ServerObjectsManager对象。 操作ArcGIS Server的ServerContext对象。
  • 33. ArcGIS Engine类库:6、Output用来控制地图的输出 用户创建图形输出到打印机或者绘图仪等设备。 输出成JPG、BMP、增强图元文件等格式。
  • 34. ArcGIS Engine类库:6、GeoDatabase为ArcGIS支持的所有数据源提供了一个统一编程模型。 定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口。 开发者可以扩展地理数据库,以支持特定类型的数据对象。 该类库还支持PlugInDataSource对象添加的自定义矢量数据源。
  • 35. ArcGIS Engine类库:7、GISClient允许开发者使用Web服务。 可以连接到ArcIMS。 支持以无状态方式或者通过Web目录操作ArcGIS Server对象的编程模型。
  • 36. ArcGIS Engine类库:8、DataSourcesFile包含用于基于文件数据源的GeoDatabase API实现。 基于文件的数据源包括:shapefile、coverage、TIN、CAD、SDC、StreetMap和VPF。 开发者不能扩展DataSourcesFile。
  • 37. ArcGIS Engine类库:9、DataSourceGDB包含用于数据库数据源的GeoDatabase API实现。 数据源包括:Access和ArcSDE支持的关系型数据库管理系统,如:DB2、Informix、SQL Server、Oracle。 开发者不能扩展该类库。
  • 38. ArcGIS Engine类库:10、DataSourcesOleDB包含用户Microsoft OLE DB数据源的Geodatabase API实现。 只能用在Microsoft Windows上。 这些数据源包括支持数据提供者和文本文件工作空间的所有OLE DB。
  • 39. ArcGIS Engine类库:11、DataSourcesRaster包含用于栅格数据源的GeoDatabase API实现。 这些数据源包括ArcSDE支持的关系型数据库管理系统:DB2、Informix、SQLServer、Oracle,以及支持RDO栅格文件格式。
  • 40. ArcGIS Engine类库:12、Carto包含操作2D地图的对象。 支持2D地图的创建和显示。 提供Map和PageLayout等基础对象。 提供MapDocument对象来操作地图文档。
  • 41. ArcGIS Engine类库:13、Network Analiysis提供用于在地理数据库中加载和分析网络数据的对象。 开发者可以扩展NetworkAnaliysis类库,以便支持自定义的网络追踪。 该类库的目的在于操作公共网络:供气管线、供电网络等。
  • 42. ArcGIS Engine类库:14、Controls用来构建或扩展具有ArcGIS 功能的应用程序。 提供一系列的开发控件,通过封装ArcObjects,提供粗颗粒度的API来简化开发过程。 提供HookHelper对象,简化命令操作的创建。
  • 43. ArcGIS Engine类库:15、GeoAnalyst包含支持核心空间分析功能的对象。 这些功能用在SpatialAnalyst和3DAnalyst两个类库中。 开发者可以通过创建新类型的栅格操作来扩展GeoAnalyst类库。
  • 44. ArcGIS Engine类库:16、3D Analyst包含操作3D场景的对象。 主要对象为:Scene。 运行时需要3D许可选项
  • 45. ArcGIS Engine类库:17、Spatial Analyst包含在栅格数据和矢量数据上执行空间分析的对象。 通常是直接使用给类库中的对象,不做扩展。 运行时需要空间分析选项许可。
  • 46. ArcGIS Engine类库:18、GlobeCore包含操作Globe数据的对象。 主要对象为:Globe。 运行时需要3D许可选项。
  • 47. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 48. ArcGIS Engine控件概念嵌入式组件 一每个ArcGIS控件都是嵌入式组件,可以拖放到可视化设计环境提供的容器窗体或对话框中。一旦放在了容器内,就可以改变ArcGIS控件的大小和位置,以便与其他嵌入式组件一起为应用程序提供用户界面。
  • 49. ArcGIS Engine控件概念属性页 一旦控件被放入了容器中,就可以使用右键点击该控件来弹出属性页面,可以方便的访问控件的属性和方法 ,减少代码的编写工作量。
  • 50. ArcGIS Engine控件概念封装ArcObjects 一每个ArcGIS控件都封装了粗颗粒度的ArcObjects,同时又提供对细颗粒度的ArcObjects的访问,简化了开发过程。 一如PageLayoutControl封装了PageLayout对象,PageLayout对象至少包含一个Map对象,而Map对象又可以包含一个或者多个图层对象。 一ArcGIS控件是开发程序的起点,通过他们可以直接快速进入开发的对象模型。
  • 51. 事件 一每个ArcGIS控件都会响应终端用户的键盘和鼠标交互而触发的事件。 一在事件中加入响应交互的处理代码。ArcGIS Engine控件概念
  • 52. 伙伴控件 一这种类型的ArcGIS控件不能单独使用,需要和另外一个控件一起协同工作。 一ToolbarControl和TOCControl是伙伴控件 一对应的伙伴控件一般为:MapControl、PageLayoutControl、ReaderControl、SceneControl或GlobeControl控件。 一可以通过属性页面来设置伙伴控件的关联属性。ArcGIS Engine控件概念
  • 53. 控件命令 一ArcGIS Engine提供了一系列的命令、工具和菜单与ArcGIS控件系统工作。如放大、缩小、漫游等等。 一开发人员也可以通过创建自己定义的命令、工具和菜单来使用ArcGIS Engine提供的命令集。 一可以使用HookHelper、GlobeHookHelper和SceneHookHelper等对象来简化自定义的命令。ArcGIS Engine控件概念
  • 54. 提供超过100个工具和命令 ArcGIS Engine控件概念
  • 55. 地图制作 一ArcGIS控件可以装载使用ArcGIS DeskTop预定义的文档。如:ArcMap制作的MXD文档可以被MapControl和PageLayoutControl来加载。 一使用预定一的文档可以节省开发时间,不需要从零开始编程建立地图及其符号化体系。ArcGIS Engine控件概念
  • 56. ArcGIS Engine开发控件MapControl PageLayoutControl ToolBarControl TOCControl SceneControl GlobelControl
  • 57. (本页无文本内容)
  • 58. (本页无文本内容)
  • 59. (本页无文本内容)
  • 60. (本页无文本内容)
  • 61. (本页无文本内容)
  • 62. (本页无文本内容)
  • 63. (本页无文本内容)
  • 64. (本页无文本内容)
  • 65. (本页无文本内容)
  • 66. (本页无文本内容)
  • 67. (本页无文本内容)
  • 68. (本页无文本内容)
  • 69. (本页无文本内容)
  • 70. (本页无文本内容)
  • 71. (本页无文本内容)
  • 72. (本页无文本内容)
  • 73. (本页无文本内容)
  • 74. (本页无文本内容)
  • 75. (本页无文本内容)
  • 76. (本页无文本内容)
  • 77. (本页无文本内容)
  • 78. (本页无文本内容)
  • 79. (本页无文本内容)
  • 80. (本页无文本内容)
  • 81. (本页无文本内容)
  • 82. (本页无文本内容)
  • 83. (本页无文本内容)
  • 84. 3D控件SceneControl 一对应与桌面的ArcScene桌面应用程序的三维视图。拥有导航功能,允许用户三维地显示地图数据。 GlobeControl 一对应与桌面的ArcGlobe桌面应用程序的三维视图。拥有导航功能,允许用户三维地显示地图数据。
  • 85. ReadControlReadControl 一对应于ArcReader桌面应用程序地“数据”和“布局”视图及其内容表“TOC”。 一ReadControl还包含有一定的工具菜单,方便使用。 一访问ArcGIS Publisher扩展模块发布的PMF数据。
  • 86. 控件应用举例
  • 87. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 88. 接口概念 COM是微软提出的一种用于开发和支持程序对象组件的框架 ,是一种系统构架模型二进制规范,而不是指特定语言;COM是一种自我描述,自我生存的软件模块;它由操作系统的COM管理部分来注册和管理,并向所有应用开放。 Com是软件模块之间连接的协议,客户调用服务器并等待服务器的响应
  • 89. 接口概念实例A实例C实例B公共接口代理 (接口查询,实例创建。。。)应用接口 代理COM通过一个叫接口的机制与外部程序打交道。所有的实例至少有一个叫公共接口代理的接口。外部程序可以通过对这个叫公共接口代理的调用可以获得其它接口信息。通过接口可以完成组件所要达到的功能目标。 接口-Interface (抽象类)是组件间进行通讯的通道。同一接口在不同的组件类中实现的方法可以是不相同的(多态性)。
  • 90. 如收音机类比: ArcObject 如同收音机,虽然它是单个实体,但这个对象的特性,以及它可做的事情也被组织成为不同的接口,为了获得所需要的特性或功能,就得做到正确的接口。 例如,我们要听电台节目,就得把开关制到收音档。但这并不影响到我们在收音机中放入的磁带,只须将接口改变,开关打到合适的档位就行了。 IRadioITapeICD Dim pBox as IRadio Set pBox = new BoomBox pBox.FM = Ture; BoomBOX接口概念
  • 91. 接口与ArcGIS的关系ArcGIS正是在在这种组件技术的基础上搭建的,ArcGIS不但提供了基于图形用户界面的应用,而且提供了搭建这些应用的所有组件,这样为用户重新搭建他们自己的应用提供了巨大的空间。 ArcGIS Engine提供了基于COM、.NET、Java和C++的APIs,它支持4种开发环境(C++、COM、.NET和Java),能够实现跨平台部署(Windows、UNIX和Linux)。
  • 92. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 93. 1、对象模型图阅读 几个名词概念: UML:Unified Modeling Language 统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。 OMD:Object model diagrams 对象模型图表。 首先来看看OMD能帮我们做什么? 1. 该类支持哪些接口; 2. 完成任务需要哪些对象; 3. 如何使用该类的对象; 4. 是否可以直接实例化类; 5. 接口有哪些方法和属性; 6. 是否有其它类也支持该接口; 7. 对象间的关系这些符号是基于UML 画图工具创建的,UML 符号是面向对象分析和设计的工业图样标准。 对象模型图中提供的信息非常多,是对象浏览器中信息的重要补充。Visual Basic,或者其它的开发环境,都会列出所有的类和成员,但不会指明这些类之间的关系。所以,对象模型图是非常有利于读者对ArcInfo 组件的理解的!
  • 94. 1. 类和对象 在UML 图中有三种类型的类:抽象类(abstract class)、可创建类(createable class)与可实例化类(instantiable class)。 抽象类不能用以创建新对象,但可以用来指定子类。举个例子,“鸟”是“鸡”的抽象类。 可创建类指的是那些能够直接使用开发环境中的对象定义语法来创建对象。比如在Visual Basic 中是这样书写:Dim As New 或者CreateObject 。 可实例化类不能够直接创建新对象,但是这种类的对象能够作为其它对象的属性被创建或是从其它类的方法中创建。------比较难理解。1、对象模型图阅读 鸟 Abstract鸟巢 CoClass鸡 CoClass羽毛 Class翅膀 Class蛋 Class*2
  • 95. 2. 关联 在抽象类、可创建类和可实例化类之间,有几种存在的关联(或称关系)。 联系(association)便描述了类之间的关联。在两端的类中可以定义多重性( Multiplicity)关联。                                                               在这张图上,一个业主能有拥有一块或多块宗地;同样地,一块宗地可以被一个或多个业主所共有。 多重性关联就是限制对象类与其它对象关联的数目关系。以下是用于多重性关联的符号: 1 —— 一个并且只有一个,这种多样性是可选的;如果不标明,则默认为“1” 0..1 —— 零个或一个 M..N —— 从M 到N(正整数) *或者0… * —— 从零到任意正整数 1… * —— 从一到任意正整数 1、对象模型图阅读
  • 96. 3、类继承(type inheritance)定义了专门的类,它们拥有超类的属性和方法,并且同时也有自身的属性和方法。                                                   上图说明primary line 和secondary line 是line 的一种类型。4、实例化(Instantiation)指定一个类的对象有这样的方法,它能够创建另外一个类的对象。                                                  pole 对象有一个方法能够创建transformer 对象。1、对象模型图阅读
  • 97. 5、组成(Composition)是一种更为强壮的聚合方式,此种方式下,“整体”对象控制着“部分”对象的生存时间。                                                          一个pole 包含一个或多个crossarm。在这个图中当pole 被移除后,crossarm 就不能再使用了。因为pole 控制着crossarm 的生存时间。1、对象模型图阅读
  • 98. 6、OMD中的符号: 一个三角形符号 表示继承 形的黑色小块 表示组成 线前头带个箭头 表示用来创建 * 表示对应关系1:N 一条直线表示 联合 1、对象模型图阅读
  • 99. 6、OMD中的符号: 类的类别: 抽象类:不能创建或实例化,从来没有一个抽象类的实例 用于定义子类的公共接口,子类继承其定义的接口。OMD符号为:二维的内部有阴影的矩形。 例化类:不能创建,从别的对象获得实例。 OMD符号为:3D矩形内部没有阴影 可创建的类:用New关键字创建对象或者从别的对象获得运行实例。OMD符号为:带阴影的3D矩形符号。 1、对象模型图阅读
  • 100. 6、OMD中的符号: 属性和方法: 属性:哑铃状的图标,Read(左侧的哑铃)和write(右侧的哑铃) 方法:指向左侧的箭头 接口:棒棒糖类型的图标 图表之间的连接:虫洞1、对象模型图阅读
  • 101. 7、入接口和出接口(Inbound interface,Outbound interface) COM调用既可以是单向的(即客户程序创建组件对象,然后客户程序调用对象所提供的功能,在适当时候再把对象释放掉),通常称为入接口。如果一个COM对象支持一个或多个主动与客户程序进行通信的接口,则这种接口称为出接口,是因为这些接口并不由对象实现,而是由客户程序实现.(类似回调函数,在对象模型图中表现为“事件”)1、对象模型图阅读
  • 102. 个人感觉在OMD图中比较难理解的就是可实例化类CLASS。从下面的例子去理解它: ArcGIS Engine中 workSpace 就是一个可实例化类, WorkSpace不能用new创建,但可以通过WorkSpaceFarctory.Openfromfile()方法来创建.如下: IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(ConnectionString, 0);1、对象模型图阅读
  • 103. 2、接口查找快速得知ArcGIS Engine接口所属命名空间的几种方式 1.Visual Stduio 2005中提供的智能感知(鼠标悬浮在接口上就能看到)或“转到定义”(理论上提供F12快捷)                                                                  2.使用帮助文档的索引         ArcGIS的帮助文档可以说是非常强悍的,如下图所示:
  • 104. 3.使用AE自带的工具:【Library Locator】         这个工具的使用比较简单(如果用.NET的话,勾选窗体下部的复选框),该工具能够粘贴命名空间和ProgID。 4.OMD      OMD文档结构图,理理接口之间的关系,能很大的帮助自己。 2、接口查找
  • 105. 3、接口跳转接口跳转又叫接口查询 Fuel Accelerate Brake PitStop LapTimeIDriveIRaceRaceCarDim pCar as IDrive Set pCar = new RaceCar pCar.Accelerate Dim pRace as IRace Set pRace = pCar pRace .PitStop pCar .Accelerate 接口跳转时要特别注意: 同一个Com类或则向上(父类)可以实现接口跳转 向下或同级不可以实现接口跳转
  • 106. (本页无文本内容)
  • 107. 下午
  • 108. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 109. Geodatabase实际上可以看成是我们在系统中所处理和使用的所有空间数据的一个智能库。物理上,数据被存放在数据库管理系统(DBMS)中,其类型可以是各种各样的,包括:VectorTopologyRasterNetworksAddressesTINsRelationships and RulesCADMetadataTablesGeodatabase数据模型使现实世界的空间数据对象与其逻辑数据模型更为接近。在geodatabase中,定义的不再是传统GIS对空间数据进行抽象后的“点”、“线”、“面”等简单空间要素,而是应用领域中熟悉的对象,如:杆塔、刀闸、电缆、道路、建筑、用地等。更重要的是geodatabase使我们不需要编写任何程序代码即可实现数据对象主要的操作行为。大多数的操作行为都可以通过对象值域(Domain)、子类型(Subtype)、规则等的定义以及ArcInfo提供的应用框架中丰富的其它功能来完成。 什么是Geodatabase
  • 110. 使用Geodatabase的好处 Geodatabase是面向对象的空间数据模型,同时,ArcInfo中提供了智能化的工具和CASE接口,供我们定义自己的数据对象,不但定义数据对象的空间几何特征,还可定义其规则、关系和操作行为。具体而言,Geodatabase可以为我们带来如下好处: 统一的空间数据智能库:系统中所有的空间数据都可以统一地在同一数据库中存放和管理。 数据的一致性得以保证:由于定义了规则和值域等,数据的录入和编辑都可以进行智能化的合法性校验,从而避免了数据的不一致性。 用户可以更直观地使用数据:Geodatabase中的数据对象与领域应用中实际的空间要素更为接近,用户不再是面对在其应用领域没有特定意义的点、线、面等抽象的东西,而是直接操作他所熟悉的对象,如:变压器、电杆、高压线、刀闸、人井、道路、湖泊等。
  • 111. 空间要素不再孤立存在:在Geodatabase中,我们可以定义对象与对象之间的关系。于是我们可以描述或定义对一个空间要素而言,如果与其相关的其它空间要素被移动、修改或删除时,对它会有何影响。这样,当我们移动一个电杆时,与其相连的电线就可以自动根据这种对象关系完成必要的移动,而无需人为干预。 可以更好地制图:借助Geodatabase数据模型,可以对空间要素的确绘制方法进行更多的控制。在ArcMap中,可以直接利用智能化的、复杂的制图方法。通过为空间数据对象的扩展编码,实现高度定制的绘制方法。 空间要素的几何形状可以更好地表示:Geodatabase中支持直线(段)、圆弧、椭圆弧及Bézier曲线等。 连续的空间数据集合:Geodatabase中表示大规模空间数据集合的方法是连续的,不需要对空间数据集进行分块或其它方式的切割,使逻辑模型和现实对象更加统一。 多用户并发操作:Geodatabase支持工作流访问模式,多个用户可以同时对同一区域中的空间要素进行编辑,通过版本管理(Versioning)解决可能的冲突以保障数据的一致性和安全性。 使用Geodatabase的好处
  • 112. Geodatabase可以用四种方式表达空间数据:离散的对象表示为矢量要素,连续的对象表示为栅格,表面表示为TIN,地物定位参考表示为地址(locators and addresses)。 Geodatabase提供定义和管理空间数据集合的地理坐标系的框架。 Geodatabase可对空间上存在拓扑关联的空间数据进行空间建模,譬如:设施网络、交通网络等。 Geodatabase可在空间数据对象间定义任意的关联关系。 Geodatabase可定义空间数据对象的值域、子类和规则。 Geodatabase可处理数据的多版本管理,以满足多用户并发的长事务处理需求。Geodatabase对DBMS有何扩展
  • 113. 如何导到影象数据到Geodatabase中? 如何连接空间数据库?
  • 114. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 115. APIs 和开发环境AO可选的的开发方式可以分为三种 利用ArcGIS桌面应用程序(如ArcMap)内置的VBA宏进行客户化 在AO组件基础上进一步包装自己的COM组件 开发独立的EXE应用程序ArcGIS Engine支持一下四种开发环境 COM:VB6、VC++等 .Net :VB.Net、C#等 Java :标准的Java C++:标准C++ 每种开发环境下的ArcGIS Engine的开发大体是一样的。只有少数的区别。
  • 116. 以VBA方式进行定制开发 打开ArcMap应用程序,选择Tools菜单下的MACROS子菜单打开VBA环境 选择Project工程下的ArcMap Object ,双击打开其中的ThisDocument对象 在右边的编辑环境中选择对象列表中的MxDocument对象,在任务列表中选择OpenDocumen
  • 117. 键入如下的代码 Dim pmap As IMap Set pmap = New Map pmap.Name = "Hello,world" MsgBox pmap.Name 按CTRL+S保存后退出ArcMap。再次打开你所保存的工程文档,在下面的图片中就得到了程序运行的结果 以VBA方式进行定制开发
  • 118. ArcGIS Engine开发所需要的预备知识理解 COM 组件技术 了解一门编程语言 (VB, .NET, VC++, Java) 怎么使用 ArcObjects 知道开发者资源 理解授权与部署的模型 注:不管何种开发方式,使用ArcGIS Engine进行应用程序的开发成功与否取决于开发人员掌握的编程环境和ArcObjects的技能。
  • 119. 如何开始.Net的Engine开发?安装Visual Studio 2005 (Express or Professional) .NET 2.0 SDK 和 Runtime http://msdn.microsoft.com/vstudio/express/ 安装 .NET 的ArcGIS Engine Runtime 包括开发包(developer kit) 安装 ArcGIS Engine开发包 http://edn.esri.com/ 准备开发
  • 120. ArcGIS Engine开发流程数据准备 确定应用程序类型 选择API和开发环境 开发应用程序 部署应用程序
  • 121. 1、数据准备收集和整理系统开发中所需要到的数据。 一包括:属性数据、矢量数据和影像数据等。 确定待开发的系统的数据结构等。
  • 122. 2、确定应用程序类型使用ArcGIS Engine可以开发多种应用程序。 一独立的非可视化应用程序。如控制台和实用工具应用程序。 一独立的可视化应用程序。如Wiondows和基于控件的应用程序。 一嵌入式应用程序。如嵌入到现有的应用程序中的组件。 一跨平台的上述应用程序。用Java或C++编写。
  • 123. 3、选择API和开发环境选择合适的API和开发环境: 一COM:Visual Staudio6.0(VB,VC++) 一.Net:Visual Studio.Net( VB.Net,C#) 一Java:Eclipse,WebsphereStudio,Jbuilder等。 一C++:Visual Studio6.0,C++ Builder 主要根据开发人员熟悉何种环境和语言、打算使用何种API、待开发的系统在何种平台和环境下运行等因素综合考虑确定。
  • 124. 4、开发应用程序具体的功能代码开发。 主要考虑: 一将使用到ArcGIS Engine的何种功能。 一决定要引用的ArcGIS Engine的类库。 一运行应用程序所需要的ArcGIS何种许可。 一是否需要ArcGIS Engine运行时的选项。 一具体代码编写。 一计划如何部署应用程序。 一是否实现了正确的许可代码。 在这个过程中将使用到ArcGIS的开发帮助系统。
  • 125. 5、部署应用程序把最终开发完成的程序部署到目标机器上。 主要考虑: 一 目标机器的ArcGIS产品的安装情况。是单独安装ArcGIS Engine还是同时还安装ArcGIS Desktop。 一目标机器采用何种许可认证方式。 一开发人员如何打包和部署安装程序。 一将来是否提供新版本进行升级。 一如何分发开发的应用程序。如网络安装、光盘介质。
  • 126. 创建Engine应用程序:( .NET)步骤 创建一个项目 引用ArcGIS库 初始化许可
  • 127. 步骤1:创建一个独立项目创建一个Windows应用程序 VB.NET或C# 项目名称是一个namespace EngineLicenseApp
  • 128. 步骤2: 引用ArcGIS库手动引用ESR集合引用 开发工具 ESRI Automatic References add-in 在所有类里导入引用Imports ESRI.ArcGIS.esriSystem Public Class frmEngineClient Inherits System.Windows.Forms.Form
  • 129. 步骤3:初始化许可手动实现这段代码 Developer tools ESRI License Initializer add-inPrivate m_pAoInitialize As IAoInitialize Private Sub Form_Load() Set m_pAoInitialize = New AoInitialize m_pAoInitialize.Initialize esriLicenseProductCodeEngine End Sub Private Sub Form_Unload(Cancel As Integer) m_pAoInitialize.Shutdown End Sub
  • 130. 步骤4: 加载地图控件添加地图控件 编写事件代码Private string fileName =Application.StartupPath + @"\..\..\..\Untitled.mxd“ if (axMapControl1.CheckMxFile(fileName) == true) { axMapControl1.LoadMxFile(fileName,Type.Missing, ""); axMapControl1.Enabled = true; axMapControl1.Extent = axMapControl1.FullExtent; axPageLayoutControl1.LoadMxFile(fileName, ""); }
  • 131. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 132. ArcGIS Engine许可管理ArcGIS Engine许可初始化 一使用ArcObjects开发的每个独立应用程序必须用一个合适的许可进行初始化,以保证安装了该应用程序的任何机器上成功地运行应用程序。 一许可初始化必须由应用程序在启动和访问任何ArcObjects前执行。 一ArcGIS Engine开发的独立应用程序可以使用的许可种类有三种:ArcGIS Engine单用户许可、 ArcGIS Desktop单用户许可、 ArcGIS Desktop多用户许可。 一一旦应用程序使用了某个许可进行了初始化,就不能再进行重新初始化了。应用程序的许可初始化针对的是整个生命周期。 一虽然ArcGIS Engine可以使用Desktop的License,但是不提倡这样使用,因为这将占用了Desktop的有效License数目。
  • 133. ArcGIS Engine控件开发的许可开发许可只是在设计和开发应用程序时需要,运行时不需要该许可。 该许可不需要人为捡出,它会自动捡出。 每个控件设计时所需的许可如下图:
  • 134. ArcGIS Engine控件运行的许可需要应用程序明确指定和捡出。 ArcGIS Engine每个控件运行时所需的许可如下图:
  • 135. 用许可初始化应用程序的顺序检查产品的可用性。 检查扩展许可的可用性(如果有需要)。 用产品许可初始化应用程序。 如果需要,执行扩展模块的捡入与捡出。 关闭应用程序前关闭许可对象。 关闭应用程序。 看实例
  • 136. ArcGIS Engine运行时的部署部署的两种方式 一在目标机器上,用户直接运行ArcGIS Engine运行时安装程序。 一在应用程序的安装程序中包含ArcGIS Engine运行时安装程序。 注意事项 一安装ArcGIS Engine9.0运行时的机器上不能有低于9.0版本的ArcGIS产品。 一在卸载开发人员开发的应用程序过程中,一定不要卸载ArcGIS Engine运行时。 一只有在确认没有第三方应用程序使用ArcGIS Engine运行时的情况下,才推荐用户手工卸载。(使用控制面板来手工卸载,而不是直接删除磁盘上的文件。)
  • 137. 对ArcGIS Engine应用程序授权软件授权就是解除底层ArcGIS Engine运行时软件组件的锁定的过程。 对ArcGIS Engine应用程序授权有以下三种方式: 一使用已有的ArcGIS Desktop的许可。(不推荐) 一直接从ESRI获取ArcGIS Engine运行时。 一从开发人员开发的应用程序中获得打包的ArcGIS Engine运行时。
  • 138. 目 录1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程 10 ArcGIS Engine许可与部署 11 开发综合实例
  • 139. 谢谢!