中国政府网
您现在的位置:首页 > 专题 > 科技 > 国土资源信息化 > 规划方案

基于Arc GIS Engine 的GIS 开发的系统设计与实现

2010-03-06      来源:国土资源信息化     作者:杨海燕,周荣福,谷双喜
【字号: 【打印】 【关闭】  分享到:

0 引言

目前,地理信息系统已广泛地应用于众多领域,为各个相关行业提供了高效的空间信息处理能力和强大的决策支持服务。为满足需求,GIS 开发人员需要具有构建领域专用且易于使用的应用软件的能力,软件需将广泛应用的GIS 技术与友好用户的经验结合起来。这些软件如果从头开始构建,将是一项繁冗的开发工作,会很耗费时间,并且成本不菲。现阶段,组件技术已经广泛的被引人到GIS 软件的设计与开发中,使得高效便捷的开发应用型地理信息系统成为现实。国内外著名的GIS 厂商都相继推出了他们的Gls 组件,其中以ESRI 公司的组件产品Arcobjects 最为著名。ArcGIS Engine 是一组打包的核心Arcobjects 组件,相比ArcobjectS 降低了开发难度,也大大提高了GIS 应用程序的开发效率。因此,本文主要以ArcGIs Engin 。为研究对象,剖析其系统开发方法,并作出最终的开发实例。

1 ArcGIS Engine 开发简介

ArcGIS 是一组集成家庭式的GIS 软件产品,可在单项工程、工作组以及企业级项目中用于发布完善的、可升级的GIS 系统。它是基于一个可共享的GIS组件一Arc ohjects 的公用库来构建的。Arcobjects 是基于Microsoft COM 技术所构建的一系列COM 组件产品,不是为最终用户而是专门为开发人员提供的二次开发软件,通过Arcobjects ,用户可以非常方便地开发出功能强大的GIS 应用系统。但它不是一个独立的应用产品,不能脱离ArcGIS 平台,只有在购买ArcGIS 产品后,才能利用其提供的组件对象进行应用开发。

ArcGIs Engine是一组完备的并且打包的嵌人式GIS 组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。使用ArcGIS Engine ,开发人员可以将GIS 功能嵌入到已有的应用软件中,或嵌人到商业生产应用软件中,还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。ArcGIS Engine 由两个产品组成:构建软件所用的开发工具包于以及使已完成的应用程序能够运行的可再发布的Runtime (运行时环境)。AreGIS Engine 开发工具包是一个基于组件的软件开发产品,可用于构建自定义GIS 和制图应用软件。ArcGIS Engine Runtime 是一个使终端用户软件能够运行的核心Arcobjects 组件产品,并且将被安装在每一台运行ArcGIS Engine 应用程序的计算机上。

ArcGIs Engine 开发包包括三个关键部分:

( l )控件是ArcGIS 用户界面的组成部分,包括地图控件和框架控件,地图控件提供了可视化的组件允许开发者对数据进行渲染、交互、分析等,比如地图控件:M Control Page Layout Control scen control ; 框架控件TOolbar Control TOC Control 在平常GIS 功能中大部分都与地图控件打交道,可以把地图控件与框架控件进行关联,能快速直接反映地图控件中图层的变化及可见性。

 ( 2 )工具条是GIS 工具的集合,在应用程序中用它来和地图及地理信息交互。工具包括平移、缩放、点击查询和与地图交互的各种选择工具。工具在应用界面上用工具条的方式展现。通过调用一套丰富的常规的工具和工具条,建立定制应用的过程被简化了。开发者可以很容易地将选择的工具拖放到定制应用中或创建自己定制的工具来实现与地图的交互。

( 3 )对象库是可编程ArCobjectS 组件的集合,包括几何图形到制图、GIS 数据源和geodat ase 等一系列库。在windows , uNIx Linu、平台的开发环境下使用这些库,程序员可以开发出从低级到高级的各种定制的应用。

2 ArcGIs Engine 系统开发

ArcGIs Engin 。是一个独立的应用产品,具备快速开发和功能扩展能力,最少的开发成本,可以非常方便地开发出功能强大的GIS 应用系统。本系统采集某区的交通旅游数据,采用VB6.0 作为开发前端,基于ArcGIS Engine 来进行设计开发,来说明GIS 开发中ArcGIs Engin 。开发的系统设计与实现。

2 . 1 系统功能模块

系统以VB6 . O 为开发工具,主要使用ArcGIS Engine 中的Map Control olbar control Toccontrol 控件来进行开发。具体功能包括:数据加载和图层添加;空间数据浏览的基本功能:地图放大、缩小、漫游和视图转换等;数据编辑的基本功能和打印功能;空间数据和属性数据的双向查询、实体查询功能等。具体功能如下图所示:

2 . 2 具体模块实现开发方法

( l )数据加载:实现从指定路径读入* . mxd 文件并显示,如果不存在显示出错信息。

On Error Resume Next

Dim sFileName As String

With CommonDialogl

 . DialogTitle = " open Map Document "

 . Filter = " Map Documents ( * . mxd ; * . pm I * . mxd ; * . pmf

. Showopen If . FileName = Then Exit Sub

sFileName = . FileName

End With

If MapControll . CheckMxFile ( sFileName ) Then

 MapControll . LoadMxFile sFileName

 MapControll . Extent = MapControll . FullExtent

 Else

 MsgBox sFileName & " is not a valid ArcMap document , ,

Exit Sub

 End If

( 2 )数据编辑及打印:实现数据的基本编辑功能,如改变显示范围;打印功能主要通过Ipage Layout ControlZ 类来进行。

AxMap Controll . On Mouse Down

 If ( e . hutton = 2 ) Then

 Dim rect As IEnvelope

 rect = mmapControl·TrackRectangle

AxMapControll . VisibleRegion = rect . Envelope

 End If 实现显示范围的选择

 AxPageLayoutControl 1 . ZoomTowholePage ( )

 If Not AxPageUyoutControl 1 . Printer 15 Nothing Then

 AxPageLayoutControll pag ormID = esriPageFormID . esriPageFormLetter

 AxPageLayoutControll . Page . orientation = 1

 Dim pageCount as Integer = AxPageLayoutControll . get - - PrinterPageCount ( )

 AxPage youtControll . PrintPageLayout ( 1 , pageCount ,0.0)’打印页面范围

 End If

( 3 )信息查询:主要实现由空间对象查询属性,由属性查询空间对象以及基于空间关系的查询3 类查询。由空间对象查询属性,一般是交互方式查询,其实现方法如下:

 Dim pselectedFeature As IFeature

 Dim pFields As IFields

 Dim pField As IField

 Set pFields = pselectedFeature . Fields

 Dim IFieldCount As Long

 Dim IFieldlndex As Long

 IFieldCount = pFields . FieldCount

 For IFieldlndex = 0 To IfieldCount l

 pFields . Field ( IFieldlndex ) . Name ’属性名

 pselectedFeature . Value ( IFieldlndex ) ’属性值

Next 由属性查询空间对象首先要使用查询过滤器,设置查询条件,实现方法如下:

Dim pQue Filter As Ique Filter ’定义查询过滤接口

 Set pQue Filter = New QueryFilter pQue Filter . WhereClause = strExpression

 Set pFeatureCursor = pFeatureClass . Search ( pQueFilter , False )

空间关系查询选择空间对象作为查询目标,分析各个要素和目标的空间关系,实现方法如下:

Dim pspatialFilter As ISpatialFilter

 Set pspatialFilter = New SpatialFilter

pspatialFilter . SpatialRel " esrispatialRellntersects

 pspatialFilter . GeometpsearchGeomety ’空间查询的目标对象

 pspatialFilter . Geomet Field = strFieldName

 pFeatureClass . Search ( pspatialFilter , FALSE )

 3 结语

ArcGIs Engine作为基于Arcobjects 构建的嵌人式开发产品,可以完全脱离ArcGIS 环境,并且携带有很多控件,进一步简化了开发难度。这使得开发人员可以快速的开发出功能强大、适应用户要求的GIS 系统。本文探讨了基于ArcGIS Engine 利用VB6 . 0进行应用程序开发的方法,体现了其低成本、完整、高效的特点。

参考文献

[1]韩鹏,徐占华,等.地理信息系统开发.武汉:武汉大学出版社,2005 .

[2]ESRI Corp. AreGIS Engine 开发指南.

[3]朱政.ArcGIS Engine 的开发与部署.

[4]沈百玲.ArcGIS Engine 简介.中国通讯,ESRI 中国(北京)有限公司,2003;10:35

[5]汤国安,杨听.ArcGIS 地理信息系统空间分析实验教程[M] .科学出版社,2006

扫描二维码分享本页面

快速入口
网站地图 - 关于本站 - 使用帮助 - 联系我们 - 网站调查 主办:中华人民共和国自然资源部承办:信息中心版权所有   自然资源部门户网站 政府网站标识码:bm16000001京ICP备18044900号

京公网安备 11010202007799号


建议使用IE9.0以上浏览器或兼容浏览器,分辨率1280*720