ArcGIS Engine嵌入式开发组件简介
2009-06-04李孟军
李孟军
摘要:本文紧紧围绕ArcGIS?Engine 开发组件加以介绍。综述了ArcGIS?Engine是什么,ArcGIS?Engine能做些什么,简略叙述了运用ArcGIS?Engine开发的必备环境。本文理论较多,概念性较强。目的为GIS编程开发人员抛砖引玉的作用。
关键词:ArcGIS Engine 开发 地理信息系统 程序开发
引言
ArcGIS 9.0版本中新增了面向开发人员的开发产品ArcGIS Engine,这对不适应用ArcObjects开发和定制GIS功能的软件开发人员来说无疑是一个惊喜。ArcGIS Engine可以在自定义的软件应用中嵌入GIS功能。ArcGIS Engine是一个完整的嵌入GIS组件库和工具,我们可以用来创建新的应用程序或者在自定义的软件应用中扩展GIS的功能。使用ArcGIS Engine,我们可以嵌入GIS功能到已经存在的应用中,比如自定义的工业软件和商用软件,Microsoft Word和Excel,这样的应用程序就可以让很多用户都实现GIS的功能。ArcGIS Engine由两个产品组成:一个软件开发包和一个可分发的运行库。
1. ArcGIS Engine 是什么?
ArcGIS是构建地理信息系统的一个平台化产品,那么一直到了ArcGIS 9.0以后,ArcGIS才成为一个完整的系统体系,我们通过ArcGIS不仅能实现客户端应用的开发,同时能够进行服务器功能的开发。ArcGIS Engine开发包软件能够使你在已有的应用中增加动态制图和GIS功能,或者构建定制的制图和GIS解决方案。ArcGIS Engine开发包使你具有空前的灵活性来创建定制的地图界面,你可以在各种工业标准的编程环境中用它来创建独立的应用或将Engine的组件嵌入到其它的软件组件中来实现地图和你或你的用户管理的其它信息之间的协同关系。
2. 用ArcGIS Engine做点什么?
ArcGIS Engine开发人员可以实现:多图层显示地图;地图的漫游和缩放 ;点击查看地图要素 ;查询和搜索要素 ;通过字段标注文本 ;显示航片或卫星影像 ;编辑显示图形要素;绘制描述性文本 ;通过线选择要素,或者通过面等选择在其内的要素 ;通过指定距离选择要素 ;通过SQL表达式选择和查找要素 ;通过专题图方法渲染要素,比如按值渲染、分类渲染以及点密度渲染等 ;动态显示实时数据和时间序列的数据 ;通过提供的街道地址和交叉口来定位 ;空间运算生成缓冲区、计算差异,或者查找相交部分、联合或反选相交部分等 ;操纵地图的形状或角度 ;编辑地理要素和属性数据 。ArcGIS Engine即适合构建基本的制图应用,也可以构建高级的GIS应用。
3. 用ArcGIS Engine怎么做?
3.1结构和对象库简介
ArcGIS Engine开发人员有权使用一系列的控制器,这些控制器准许很多属性、事件和方法的使用。尽管一个简单的应用软件仅仅通过高级控制器就能够构建,但是ArcGIS Engine实用软件需要熟悉组成ArcGIS Engine的不同对象库。
对象库是ArcObjects组件的逻辑集合,从纹理细密的对象(如单独的几何对象)到纹理粗糙的对象,它聚集了功能的逻辑集合。在实现ArcGIS Engine应用软件时,编程人员将对几种基于标准的应用程序接口(COM、.NET、Java和C++)进行选择。
System库是ArcGIS结构中最低级的对象库。该库包含了揭示ArcGIS中其他对象库所使用的服务的组件。SystemUI库主要定义了ArcGIS系统中所使用的用户界面组件的类型。Geometry库包含了核心几何对象,如点、多边形、线及其几何类型和定义等。Display库包含了支持向输出装置绘制符号体系的组件。Server库包含了用于获取到ArcGIS Server的连接的对象。该连接通过本库中的对象进行管理。Output库包含了生成输出所必需的对象,通常是从地图或页面布局输出到打印机、绘图仪,或者导出到文件中。Geodatabase库包含了所有与数据访问相关的定义的类型。GISClient库包含了操作远程GIS服务的对象。ArcIMS或ArcGIS Server都可以提供这些服务。DataSourcesFile库包含了适用于地理数据库应用程序接口(API)所支持的矢量数据格式的工作空间工厂和工作空间。DataSourcesGDB库包含了适用于存储在RDBMS中的地理数据库所支持的矢量和栅格数据格式的工作空间工厂和工作空间。GeoDatabse Distributed库包含了支持分布式地理数据库的检出/检入操作所必需的对象。DataSourcesOleDB库提供了操作“基于对象连接和嵌入数据库”(OLE_DB-based)的数据源的工作空间。DataSourcesRaster库包含了适用于基于文件的栅格数据格式的工作空间工厂和工作空间。Carto库包含了用于显示数据的对象。Location库包含了与位置数据操作相关的对象。位置数据可以是路径事件,或者地理编码的位置。
3.2 配置IDE工具
开发人员可以在其集成开发环境(IDE)中注册ArcGIS Engine开发工具包,然后通过添加ArcGIS Engine组件和编写代码来创建基于表单的应用程序,开发人员可以将ESRI的ArcMap地图定义文件(.MXD)、ArcScene文件(.SXD)、或ArcGlobe文件(.3DD)与控制器联系起来,可以为集中式任务编写附加按钮和其他功能的程序。已完成的应用程序可以安装在任一ArcGIS Engine Runtime(实时运行环境),也可以基于ArcGIS Desktop软件来进行配置。ArcGIS Engine组件可以嵌入到Microsoft Word文档中,来帮助在文本与表格信息和空间数据之间建立联系。
3.3 ArcGIS Engine应用软件运行
所有用ArcGIS Engine构建的应用需要ArcGIS Engine运行库,Engine运行库提供了ArcGIS应用的核心功能。ESRI在桌面应用和服务器应用中使用了Engine运行库,这与你构建部署你的应用的方法是一样的。标准的Engine运行库可以通过增加专门的读写扩展,来增加对Geodatabase的读写支持,同样适用于空间分析扩展和3D分析扩展。
ArcGIS Engine应用软件需要将ArcGIS Engine Runtime软件安装在终端用户的机器上。为确保ArcGIS Engine Runtime已安装,开发人员可以让用户直接运行ArcGIS Engine Runtime的安装程序并安装授权码,或者将ArcGIS Engine Runtime安装程序包含在应用软件的安装程序组里。
4. ArcGIS Engine的实际应用
当今正在开展的第二次土地调查,使用的“国图软件”,其中“空间数据建库”与“管理系统”(DDP,Dist Data Platform)是基于ArcGIS Engine 技术研制开发的。为海量、多源、多时向、多比例尺的空间数据入库,提供从数据检测、规整、入库、到数据管理、应用、数据发布及更新的整体解决方案。◆
参考文献:
[1] 蒋波涛.插件式GIS应用框架的设计与实现.电子工业出版社.2008,10