arcgis开发ArcEngine平台基础_第1页
arcgis开发ArcEngine平台基础_第2页
arcgis开发ArcEngine平台基础_第3页
arcgis开发ArcEngine平台基础_第4页
arcgis开发ArcEngine平台基础_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

ArcEngine平台基础,ESRIChina(beijing)广州办事处,讲义目标,本讲义的目标是通过讲义描述,可以了解ArcGIS9.0的体系结构了解ArcEngine的产品信息以及主要的功能。了解ArcEngine主要类库的作用。了解ArcEngine主要控件的作用。了解使用ArcEngine开发可以选择何种开发环境以及使用ArcEngine进行开发的主要流程。了解ArcEngine许可管理方式以及应用程序部署的一般方法。了解ArcEngine开发可用的资源。本讲义侧重的是了解使用ArcEngine开发的相关知识。,主要内容,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,主要内容:体系结构,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,什么是ArcGIS?,ArcGISDesktop完整的一套GIS应用ArcGISEngine可封装的开发组件ServerGISArcSDE,ArcIMS,ArcGISServer移动GISArcPad和ArcMaptabletPC,一个完整的GIS平台,ArcGIS9的改变,新的产品:Engine和Server新组件标准的ArcObjects库结构新的开发者帮助系统和文档新的开发应用程序接口(APIs):COM、.NET、Java、C提供夸平台支持:Windows、Unix、Linux更多的开发和部署选择,ArcGIS与ArcObjects,ArcGIS是构建在名为ArcObjects的软件组件库之上的ESRI使用ArcObjects来开发软件和应用程序开发者使用ArcObjects去客户化软件与创建自己的应用程序ArcObjects是ArcGIS的核心,ArcGIS软件体系结构,产品共享ArcObjects组件库和底层功能ArcGISEngine包含了核心的功能,ArcGISDesktop,ArcGISEngine,ArcGISServer,ArcGIS基于标准的互操作,ArcGIS支持OGC标准,支持OGC的标准:WebMapStandardWebFeatureServiceWebCoverageServiceGeographicMarkupLanguage,遵循标准的ArcGIS体系结构,由于遵循了主流的标准,信息能根据标准来交互,ArcGIS是一个开放的平台。,主要内容:主要功能,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,ArcEngine产品结构,ArcEngine是开发人员用于建立自定义应用程序的嵌入式GIS组件的完整类库。包含以下五个部分:,基本服务:由GIS核心ArcObjects构成。几乎所有的GIS应用程序都需要,如几何体和显示。数据存取:对许多栅格和矢量格式的数据进行存取,包括GeoDatabase。地图表达:创建和显示带有符号、标注的地图以及专题地图的ArcObjects对象。开发组件:快速应用开发的高级用户接口控件和综合帮助系统。运行时选项:与标准功能或其他高级功能一起部署的部件。,ArcEngine与DeskTop的区别,ArcObjects对象:8x的esriCore.olb是一个大包;9x重新根据功能封装,提高了灵活性。Engine没有包含UI对象。,ArcEngine产品,ArcEngine包含了两个产品:ArcEngineRuntime运行所有ArcGISEngine应用程序所必须的最终用户需要安装的可以进行不同的运行时选项选择ArcEngineDeveloperKit开发者使用的包含了所有开发库和开发者资源可以进行所有的选项开发两个产品都通过软件许可文件授权,ArcEngineDeveloperKit产品,是ESRI新的开发产品,用来创建独立、嵌入式的桌面应用程序。包含构建ArcEngine应用程序所需的许可是在ArcObjects基础上构建的不包含ArcMap,ArcCatalog,ArcToolbox,ArcScene等应用程序框架运行在桌面上(Windows,Unix&Linux)提供多种开发APIsC+,.Net,Java,COM4种APIs使用了相同的对象包括了构建定制ArcEngine独立应用的所有功能,ArcEngineDeveloperKit产品,不是最终用户的应用产品是面向开发人员的工具包开发工具包包含对象/控件文档帮助/教程示例代码开发工具和Addins,ArcEngineRuntime产品,是基于ArcEngine应用的运行时(runtime)ArcEngine运行时可再分发安装跨平台Windows,UNIX&Linux也没有ArcGIS桌面应用框架或对话框需要许可授权通过代码或应用工具配置,ArcGISEngineRuntime产品,ArcEngine运行时包含了:标准EngineRuntimeEngine扩展企业GeoDatabase编辑更新要素和编辑方案空间分析3D分析StreetMapUSA,标准Engine功能,地图浏览和地图制作数据查询数据分析所有的开发控件MapControl,PageLayout,Toolbar,TOC,ArcReader对所有矢量和栅格数据源的读权限(除了街道图)对Shapefile和pGDB的写权限读/写MXD文件,标准ArcEngine开发组件,标准的ArcEngine开发组件包含了:数据和地图的显示(MapControl&TOC)跟踪形状和显示绘制(Map)定制工具和命令(Toolbar)地图布局和打印(PageLayout)访问底层的ArcObjects访问ArcEngine的ArcObjects可以不需要通过这些控件。,ArcEngine扩展模块,GeoDatabaseUpdata3D分析空间分析StreetMapUSA(过年一般不用),GeoDatabaseUpdata扩展,提供创建、更新多用户企业地理数据库的功能。操作Schema和版本管理提供了拓扑、子类和几何网络等地理数据库行为的程序实现。释放相应的ArcObjects的功能。,空间分析扩展,创建、查询和分析基于像元的栅格数据坡度计算坡向计算用数字高程模型生成等高线,3D分析扩展,实现数据的三维可视化提供SceneControl和GlobeControl创建表面和分析表面的多层3D数据把3D功能嵌入到应用系统中。,小结ArcEngine的功能,显示多个图层地图漫游和缩放识别地图上的要素显示字段值的文本标注绘制航空相片或卫星影像绘制描述性文本用线、框、区域、多边形和圆选择要素选择与某些要素的距离在一定范围的要素用结构化查询语言表达式查找和选择要素定制地图的专题显示方式动态显示实时或时间序列数据转换地图的坐标系统在要素几何形状上执行几何操作以创建缓冲区、计算差异、发现交叉、合并和求异等。处理要素形状或者旋转地图创建和更新地理要素及其属性地图制图输出3D显示、空间分析,主要内容:类库,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,ArcEngine类库图,ArcEngine类库:System,System类库时ArcGIS系统结构中最底层的类库。System类库包含构成ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口。如AoInitializer对象就是在System类库中定义的。所有开发者必须使用这个对象来初始化ArcEngine。,ArcEngine类库:SystemUI,包含用户界面组件接口定义。如:Icommand、Itool和IToolControl接口。开发者使用这些接口来扩展UI组件。包含的对象是一些使用工具对象,通过使用这些对象来简化用户界面的开发。,ArcEngine类库:Geometry,处理存储在要素类中的要素几何图形或形状或其他图形元素。如:Point、MultiPoint、Polyline、Polygon等。存储构成几何要素的子要素。如:Segement、Path、Ring等。存储几何要素的空间参考对象。包括:投影坐标和地理坐标系统等。,ArcEngine类库:Display,用于控制地图显示、用户交互。包含用于显示GIS数据的对象。包含符号、颜色等用来控制显示的对象。包含显示交互提供给用户可视化反馈对象。,ArcEngine类库:Server,用来连接并操作ArcGISServer。连接ArcGISServer,并访问ArcGISServer的ServerObjectsManager对象。操作ArcGISServer的ServerContext对象。,ArcEngine类库:Output,用来控制地图的输出用户创建图形输出到打印机或者绘图仪等设备。输出成JPG、BMP、增强图元文件等格式。,ArcEngine类库:GeoDatabase,为GeoDatabase提供编程API。其中的对象为ArcGIS支持的所有数据源提供了一个统一编程模型。定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口。,ArcEngine类库:GISClient,允许开发者使用Web服务。可以连接到ArcIMS。支持以无状态方式或者通过Web目录操作ArcGISServer对象的编程模型。,ArcEngine类库:DataSourcesFile,包含用于基于文件数据源的GeoDatabaseAPI实现。文件格式为:shapefile、coverage、TIN、CAD、SDC、StreetMap和VPF。,ArcEngine类库:DataSourceGDB,包含用于数据库数据源的GeoDatabaseAPI实现。数据源包括:Access、DB2、Informix、SQLServer、Oracle。,ArcEngine类库:DataSourcesOleDB,包含用户MicrosoftOLEDB数据源的GeodatabaseAPI实现。只能用在MicrosoftWindows上。这些数据源包括支持数据提供者和文本文件工作空间的所有OLEDB。,ArcEngine类库:DataSourcesRaster,包含用于栅格数据源的GeoDatabaseAPI实现。这些数据源包括ArcSDE支持的关系型数据库管理系统:DB2、Informix、SQLServer、Oracle。以及其支持的RDO栅格文件格式。,ArcEngine类库:GeoDatabaseDistributed,通过提供地理数据库导入和导出工具。可以支持对企业级地理数据库的分布式访问。,ArcEngine类库:Carto,包含操作2D地图的对象。支持2D地图的创建和显示。提供Map和PageLayout等基础对象。提供MapDocument对象来操作地图文档。,ArcEngine类库:Location,包含支持地理编码和操作路径事件的对象。提供线性参考功能。,ArcEngine类库:NetWorkAnaliysis,提供用于在地理数据库中加载网络数据的对象。提供对象用于分析加载到地理数据库中的网络。,ArcEngine类库:Controls,用来构建或扩展具有ArcGIS功能的应用程序。提供一系列的开发控件。通过封装ArcObjects提供粗颗粒度的API来简化开发过程。提供HookHelper对象,简化命令操作的创建。,ArcEngine类库:GeoAnalyst,包含支持核心空间分析功能的对象。这些功能用于SpatialAnalyst和3DAnalyst两个类库中。,ArcEngine类库:3DAnalyst,包含操作3D场景的对象。主要对象为:Scene。运行时使用该模块需要3D许可选项,ArcEngine类库:GlobeCore,包含操作Globe数据的对象。主要对象为:Globe。运行时需要3D许可选项。,ArcEngine类库:SpatialAnalyst,包含在栅格数据和矢量数据上执行空间分析的对象。通常是直接使用给类库中的对象,不做扩展。运行时需要空间分析选项许可。,主要内容:控件,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,ArcEngine控件概念,嵌入式组件每个ArcGIS控件都是嵌入式组件,可以拖放到可视化设计环境提供的容器窗体或对话框中。一旦放在了容器内,就可以改变ArcGIS控件的大小和位置,以便与其他嵌入式组件一起为应用程序提供用户界面。,ArcEngine控件概念,属性页一旦控件放入了容器中,就可以使用右键点击该控件来弹出属性页面。可以方便的访问控件的属性和方法。减少代码的编写。,ArcEngine控件概念,封装ArcObjects每个ArcGIS控件都封装了粗颗粒度的ArcObjects。同时又提供对细颗粒度的ArcObjects的访问,简化了开发过程。如PageLayoutControl封装了PageLayout对象。PageLayout对象至少包含一个Map对象,而Map对象又可以包含一个或者多个图层对象。ArcGIS控件是开发程序的起点,通过他们可以直接快速进入开发的对象模型。,ArcEngine控件概念,事件每个ArcGIS控件都会响应终端用户的键盘和鼠标交互而触发的事件。在事件中加入响应交互的处理代码。,ArcEngine控件概念,伙伴控件这种类型的ArcGIS控件不能单独使用,需要和另外一个控件一起协同工作。ToolbarControl和TOCControl是伙伴控件对应的伙伴控件一般为:MapControl、PageLayoutControl、ReaderControl、SceneControl或GlobeControl控件。可以通过属性页面来设置伙伴控件的关联属性。,ArcEngine控件概念,控件命令ArcEngine提供了一系列的命令、工具和菜单与ArcGIS控件系统工作。如放大、缩小、漫游等等。开发人员也可以通过创建自己定义的命令、工具和菜单来扩展ArcEngine提供的命令集。可以使用HookHelper、GlobeHookHelper和SceneHookHelper等对象来简化自定义的命令。,ArcEngine控件概念,地图制作ArcGIS控件可以装载使用ArcGISDeskTop预定义的文档。如:ArcMap制作的MXD文档可以被MapControl和PageLayoutControl来加载。使用预定一的文档可以节省开发时间,不需要从零开始编程建立地图及其符号化体系。,ArcEngine控件:MapControl,MapControl对应了ArcMap桌面程序的“数据视图”。主要用于地图数据的显示、浏览、查询、编辑、修改、分析和地图表现。,ArcEngine控件:PageLayoutControl,对应了ArcMap桌面应用程序的“布局视图”。主要用于地图的布局和打印。包含了可创建的布局类在一个视图上绘制多个元素(elements)用来创建布局和打印,ArcEngine控件:3D控件,SceneControl对应与桌面的ArcScene桌面应用程序的三维视图。拥有导航功能,允许用户三维地显示地图数据。GlobeControl对应与桌面的ArcGlobe桌面应用程序的三维视图。拥有导航功能,允许用户三维地显示地图数据。,ArcEngine控件:ReadControl,ReadControl对应于ArcReader桌面应用程序地“数据”和“布局”视图及其内容表“TOC”。ReadControl还包含有一定的工具菜单。方便使用。访问ArcGISPublisher扩展模块发布的PMF数据。,ArcEngine控件:TOCControl,需要和一个伙伴控件协同工作。用来显示图层的内容以及图层的表现方式等等。,ArcEngine控件:ToolbarControl,需要和一个伙伴控件协同工作。为伙伴控件提供命令、工具和菜单功能。,主要内容:开发环境与流程,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,ArcEngine开发环境,ArcEngine支持一下四种开发环境COM:VB6、VC等.Net:VB.Net、C等Java:标准的JavaC:标准C每种开发环境下的ArcEngine的开发大体是一样的。只有少数的区别。,ArcEngine开发所需要的预备知识,理解COM组件技术了解一门编程语言(VB,.NET,VC+,Java)怎么使用ArcObjects知道开发者资源理解授权与部署的模型注:不管何种开发方式,使用ArcEngine进行应用程序的开发成功与否取决于开发人员掌握的编程环境和ArcObjects的技能。,ArcEngine开发流程,数据准备确定应用程序类型选择API和开发环境开发应用程序部署应用程序,数据准备,收集和整理系统开发中所需要到的数据。包括:属性数据、矢量数据和影像数据等。确定待开发的系统的数据结构等,确定应用程序类型,使用ArcEngine可以开发多种应用程序。独立的非可视化应用程序。如控制台和实用工具应用程序。独立的可视化应用程序。如Wiondows和基于控件的应用程序。嵌入式应用程序。如嵌入到现有的应用程序中的组件。跨平台的上述应用程序。用Java或C+编写。,选择API和开发环境,选择合适的API和开发环境:COM:VisualStaudio6.0(VB,VC+).Net:VisualStudio.Net(VB.Net,C)Java:Eclipse,WebsphereStudio,IntelliJ,Jbuilder等。C+:VisualStudio6.0,C+Builder主要根据开发人员熟悉何种环境和语言、打算使用何种API、待开发的系统在何种平台和环境下运行等因素综合考虑确定。,开发应用程序,具体的功能代码开发。主要考虑:将使用到ArcEngine的何种功能。决定要引用的ArcEngine的类库。运行应用程序所需要的ArcGIS何种许可。是否需要ArcEngine运行时的选项。具体代码编写。计划如何部署应用程序。是否实现了正确的许可建处代码。在这个过程中将使用到ArcGIS的开发帮助系统。,部署应用程序,把最终开发完成的程序部署到目标机器上。主要考虑:目标机器的ArcGIS产品的安装情况。是单独安装ArcEngine还是同时还安装ArcGISDesktop。目标机器采用何种许可认证方式。开发人员如何打包和部署安装程序。将来是否提供新版本进行升级。如何分发开发的应用程序。如网络安装、光盘介质。,使用ArcEngine开发例子(VB),创建工程,使用ArcEngine开发例子(VB),装载ArcEngine控件,使用ArcEngine开发例子(VB),引用ArcEngine类库,使用ArcEngine开发例子(VB),构建界面,使用ArcEngine开发例子(VB),编写代码,使用ArcEngine开发例子(VB),运行结果,主要内容:许可与部署,ArcGIS体系结构ArcEngine的主要功能ArcEngine类库ArcEngine控件ArcEngine开发环境与流程ArcEngine许可与部署ArcEngine开发资源,ArcEngine许可管理,ArcEngine许可初始化使用ArcObjects开发的每个独立应用程序必须用一个合适的许可进行初始化,以保证安装了该应用程序的任何机器上成功地运行应用程序。许可初始化必须由应用程序在启动和访问任何ArcObjects前执行。ArcEngine开发的独立应用程序可以使用的许可种类有三种:ArcEngine单用户许可、ArcGISDesktop单用户许可、ArcGISDesktop多用户许可。一旦应用程序使用了某个许可进行了初始化,就不能再进行重新初始化了。应用程序的许可初始化针对的是整个生命周期。虽然ArcEngine可以使用Desktop的License,但是不提倡这样使用,因为者将占用了Desktop的有效License数目。,ArcEngine控件开发的许可,开发许可只是在设计和开发应用程序时需要,运行时不需要该许可。该许可不需要人为捡出,它会自动捡出。每个控件设计时所需的许可如下图:,ArcEngine控件运行的许可,需要应用程序明确指定和捡出。ArcEngine每个控件运行时所需的许可如下图:,用许可初始化应用程序的顺序,检查产品的可用性。检查扩展许可的可用性(如果有需要)。用产品许可初始化应用程序。如果需要,执行扩展模块的捡入与捡出。关闭应用程序前关闭许可对象。关闭应用程序。,ArcEngine运行时的部署,部署的两种方式在目标机器上,用户直接运行ArcEngine运行时安装程序。在应用程序的安装程序中包含ArcEngine运行时安装程序。注意事项安装ArcEngine9.0运行时的机器上不能有低于9.0版本的ArcGIS产品。在卸载开发人员开发的应用程序过程中,一定不要卸载ArcEngine运行时。只有在确认没有第三方应用程序使用ArcEng

温馨提示

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

评论

0/150

提交评论