ArcEngine介绍

本文详细介绍了ArcEngine作为GIS开发框架的核心功能,包括其嵌入式特性和结构,如ArcEngine的组件、运行时环境以及核心库。此外,文章探讨了ArcEngine的C#开发,包括环境配置、界面设计、地图装载、自定义工具栏、许可初始化、右键菜单实现等关键步骤,展示了如何利用C#构建ArcEngine应用。

一、ArcEngine简介
ArcEngine被定位为一个嵌入式的产品,它并非面向最终用户,而是一个面向开发者的产品。对于繁冗的GIS开发工作而言,理想的解决方案是一个基于组件的实用的开发框架,且该框架允许解决方案提供商或机构内部开发人员快速构建行业专用GIS应用软件。一个GIS开发框架应提供应用软件所需的必要的空间分析功能,并允许软件开发人员集中精力构建软件的特定逻辑。ArcEngine就是这样一个GIS框架,它是为响应ESRI用户的请求而创建的,可以把丰富的ArcGIS技术按产品进行分类,并将其空间分析功能嵌入新的或已有应用软件中。ArcEngine既可以将GIS功能嵌入到已有的应用软件中,如自定义行业专用产品;或嵌入到商业生产应用软件中,如Mirosoftf Word和Excel;还可以创建集中式独立应用软件,并将其发送给机构内的多个用户。
不仅对于开发者,对于用户,Engine同样是一个轻量级的产品。使用Desktop开发的产品如果交付给用户使用,用户需要购买一套桌面软件,价钱昂贵。 而对于Engine开发的产品,用户只需要一个Runtime即可。

二、ArcEngine结构
ArcEngine也是建立在ArcObject之上的,ArcObjects是整个ArcGIS软件的核心功能库,它是由平台独立的COM对象组成。ArcEngine在核心ArcObjects组件上又做了一次封装,开发人员可以用来构建自定义GIS和制图应用程序。这些对象是平台独立的,可以从不同的平台来访问。开发人员可以扩展对象库,并且完全控制应用软件用户界面的外形和感觉。
ArcEngine由两个产品组成:构建软件所用的开发工具包以及使已完成的应用程序能够运行的可再发布的Runtime(运行时环境)。ArcEngine开发工具包是一个基于组件的软件开发产品,可用于构建自定义GIS和制图应用软件。它并不是一个终端用户产品,而是软件开发人员的工具包,适于为Windows、UNIX或Linux用户构建基础制图和综合动态GIS应用软件。ArcEngine Runtime是一个使终端用户软件能够运行的核心ArcObjects组件产品,并且将被安装在每一台运行ArcEngine应用程序的计算机上。

三、ArcEngine的核心库
System库
是ArcGIS结构中最底层的对象库。该库中的组件暴露服务给组成ArcGIS的其他对象库。用于初始化Engien许可的AoInitializer就包含在System库中,开发者不能扩展这个库,但可以扩展它的接口来扩展ArcGIS。
SystemUI库
包含了ArcGIS系统中所使用的用户界面组件的接口定义,例如ITool、ICommand这些接口,开发者亦不能扩展这个库。
Geometry库
处理存储在要素类中的要素几何图形或其他图形要素。包含了核心几何对象,如点、多边形、线及其几何类型和定义等。开发者可以通过添加新的控价参考和投影来扩展空间参考系统。
Display库
包含了用于显示GIS数据的对象。除了包含向输出装置输出图像的显示对象,还包含符号的表示和颜色的使用的对象和交互时提供给用户可视化反馈的对象。
Server库
包含了用于获取到ArcGIS Server的连接的对象。该连接通过本库中的对象进行管理。
Output库
包含了生成输出所必需的对象,通常是从地图或页面布局输出到打印机、绘图仪,或者导出到文件中。
Geodatabase库
为ArcGIS支出的所有数据源提供了一个统一编程模型。定义了许多由AO架构中更高级的数据源提供者所实现的接口。
GISClient库
包含了GIS Web服务的对象。ArcIMS或ArcGIS Server都可以提供这些服务。
DataSourcesFile库
包含了基于文件数据源的GDB API的实现,这些数据源包括shapefile,coverge,TIN,CAD等。
DataSourcesGDB库
包含了数据库数据源的GDB API的实现。
DataSourcesOleDB库
提供了操作“基于对象连接和嵌入数据库”(OLE_DB-based)的数据源的工作空间。
DataSourcesRaster库
包含了数据库数据源的GDB API的实现。
GeoDatabse Distributed库
提供了地理数据库导入/导出工具,支持企业级地理数据库的分布式访问。
Carto库
包含了用于显示地图数据的对象。
Location库
包含了与位置数据操作相关的对象。位置数据可以是路径事件,或者地理编码的位置。
NetworkAnalysis库
支持应用网络的创建和分析。
Controls库
开发者用Controls类库来构建或扩展具有ArcGIS功能的应用程序。这个类库进一步封装了AO并提供粗粒度的API,从而简化了开发过程。开发者通过创建自己的用于操作空间的命令和工具来扩展Controls类库。
GeoAnalyst库
包含了核心空间分析的操作,这些操作可以通过空间分析和3D分析扩展模块来使用。
3Danalyst库
包含了用于进行数据3D分析以及支持3D数据显示的对象。操作该库中的对象需要一个3D分析扩展授权。
GlobeCore库
包含用于进行球体数据分析以及支持球体数据显示的对象。操作该库中的对象需要一个3D分析扩展授权。
SpatialAnalyst库
包含了用于进行栅格与矢量数据空间分析的对象。操作该库中的对象需要一个空间分析授权。
四、        C#开发ArcEngine场景
ArcEngine支持四种API,分别是:
COM--任何COM生成语言(VB,VC++,Delphi)等都可以使用这些API。
.NET--这些API支持Visual Basic.Net和Visual C#.NET。
Java--支持Sun公司的标准Java 2平台。
C++--支持Visual C++6.0,Visual C++.NET等。
这里使用C#作为开发语言,它不仅具有较高的执行效率,而且具有可视化开发环境的优势。
4.1        环境配置和界面设计
          
      
     要使用ArcEngine提供的类库,首先要在工程--“引用”中添加对该库的引用。如上图所示,本例中需要添加的库主要有:ESRI.ArcGIS.AxMapControl, ESRI. ArcGIS.AxLicenseControl,  ESRI. ArcGIS. AxToolbarControl,  ESRI. ArcGIS. AxTOCControl,  
ESRI. ArcGIS.Carto,  ESRI. ArcGIS.ControlCommand,  ESRI. ArcGIS.Geometry,  ESRI. ArcGIS.System,  ESRI. ArcGIS.SystemUI,  ESRI. ArcGIS.Utility等,这些库可以使用开发包中.NET的AddI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值