您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页ArcGISEngine的开发及应用研究

ArcGISEngine的开发及应用研究

来源:爱go旅游网
󰀁第2期

刘莹󰀂ArcGISEngine的开发及应用研究

37

󰀁󰀁文章编号:1672-8262(2006)02-37-03󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁中图分类号:P208󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁文献标识码:B

ArcGISEngine的开发及应用研究

刘莹

*

(武汉大学遥感信息工程学院,湖北武汉󰀁430079)

DevelopmentandApplicationofGISBaseonArcGISEngine

LiuYing

摘󰀁要:着重分析了ArcGISEngine在开发、部署和应用等方面的优越性,探讨了应用ArcGISEngine进行GIS开发的关键技术,并结合荆江分洪区的工情数据设计开发了一个实验系统,并对ArcGISEngine在GIS应用系统开发中的性能进行了总结。

关键词:GIS;控件;引擎;开发

1󰀁引󰀁言

ArcGIS是ESRI全面整合GIS数据库、软件工程、人工智能、网络技术及其他多方面的计算机交流技术之后,成功推出的代表GIS最高技术水平的全系列GIS平台。ArcGISEngine是ESRI在ArcGIS8X基础上推出的ArcGIS9家族中的新成员之一,因其具有可以跨越所有ArcGIS部件(Engine、Server及Desktop)来进行开发的特点,一经问世便备受关注。因此,Arc󰀁GISEngine的特性及其在GIS开发中的应用一段时期以来一直成为研究者讨论的热点问题。

Linux桌面上并支持C

++

、VB、.NET、Java等一系列应用

软件开发环境。此外,利用AE开发者能将ArcGIS功能集成到一些应用软件,如MicrosoftWord和Excel中,还可以为用户提供针对GIS解决方案的定制应用。

ArcGISEngine组件开发平台由开发包(DeveloperKit)和运行环境(Runtime)两部分组成,如图2所示。

2󰀁ArcGISEngine分析

ArcGISEngine(AE)是一个创建定制的GIS桌面应用程序的开发产品,包括了构建ArcGIS产品ArcView、ArcEditor、ArcInfo和ArcGISServer的所有核心组件。使用ArcGISEngine可以创建界面版本的应用程序,也可以对现有的应用程序进行扩展,为GIS和非GIS用户提供专门的空间解决方案。其架构如图1所示。

图2󰀁ArcGISEngine组成结构

(1)Engine运行环境(Runtime)是运行自定义En󰀁gine应用的可分发的ArcObjects。它包含了ArcObjects的核心组件,提供所有ArcGIS应用程序所需的核心功能,为执行用户定制的ArcGISEngine应用程序提供运行环境,其必须随着定制的应用程序一起安装。

标准Runtmie允许用户编辑基本地图及资料,以及执行GIS分析。用户可以运用全读-写存取功能将标准

图1󰀁ArcGISEngine架构

Runtmie加强为版本化或多人使用的地理资料库。另外,标准的Runtmie除了提供所有ArcGIS应用程序的核心功能外,还可以通过使用下列可选项而得到增强:

空间分析选项(SpatialOption):在ArcGISEn󰀁

由上图可知,AE可以在没有安装任何ArcGIS桌面软件的环境下提供所有GIS功能,是一组设定良好的跨平台、跨语言部件。它可以运行在Windows、UNIX和

*󰀁收稿日期:2005󰀂08󰀂28

作者简介:刘莹(1980󰀂),女,硕士研究生,主要研究方向为GIS开发、应用。38

城󰀁市󰀁勘󰀁测2006年

gine运行环境中,空间分析选项扩展增加了栅格空间处理功能。该项附加功能需要通过访问空间分析对象库来实现。

!三维选项(3DOption):在标准的AE运行环境中,3D选项扩展增加了3D分析和可视化功能,包括Scene和Globe开发控件和工具条,此外还有一套针对Scene和Globe的3D对象库。

∀Geodatabase更新选项(GeodatabaseUpdateOp󰀁tion):利用ArcGISEngine应用软件,该选项扩展增加了对Geodatabase的写入和更新能力。这被用来构建定制的GIS的编辑应用。附加功能通过访问企业级Geodatabase对象库来实现。

#StreeMtapUSA选项:该选项提供遍布全美国的地址道路及市街地图呈现。StreeMtap图层自动管理、标示并描绘色彩,诸如当地地标、街道、公园、水池及其他特色。利用单一地址或多个地址档案进行互动式找路,StreeMtap几乎可以找到美国的任何地址。

(2)Engine开发包(DeveloperKid)是一套让开发者开发自定义GIS和制图应用的工具,这些定制的应用程序可在脱离ArcGISDesktop环境下单独执行,它包含了支持开发任务所需要的所有开发资源。

ArcGISEngine开发包包括以下3个关键部分: 控件是ArcGIS用户界面的组成部分,开发人员可以嵌入并在应用程序中使用。例如:开发人员可以在自己的应用程序中加入MapControl和TocControl控件来显示地图,并对其进行交互式运用。ArcGISEngine的控件包括:MapContro,lPageLayoutContro,lReaderContro,lTocCo󰀁ntro,lToolbarContro,lGlobeContro,lSceneContro。l

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

∀对象库是可编程ArcObjects组件的集合,包括从几何图形到制图、GIS数据源和Geodatabase等一系列库。在基于Windows、UNIX或Linux平台的开发环境下使用这些库,程序员可以开发出从低级到高级的各种定制的应用。对开发者来说,这些ArcObjects库支持所有的ArcGIS功能,并且可以通过大多数通用的开发环境来访问。

(3)相对于ArcObjects的优点:所谓ArcObjects(AO),一般是指ArcGISDesktop版本的组件开发集。AO版本包括了所有的类库。其中所含的ArcMap、ArcMapUI、ArcCatalog、ArcCatalogUI等组件库必须在安装了ArcGISDesktop版软件后才能使用,这使得AO的开发成本大大增加。基于产品策略上的考虑,ESRI将AO中的某些组件集单独封装出来,形成于ArcGIS平台的嵌入式组件库,起名为ArcGISEngine(AE),使用AE开发的软件仅需要在一个Runtime下运行,而不需要安装ArcGIS软件。

因此,AE只是AO的一个子集,使用AE开发的软件,在AO环境中使用没有问题,但是AO开发的程序,如果使用的组件库不被包含在AE中,就无法使用,比如IIdentifyDialog对象,就是只有在AO中才能使用。除此以外,AO版本的控件只有MapControl和PageLay󰀁outControl两个,而AE的控件则丰富得多。

(4)相对于MapObjects的优点:

ArcGISEngine与MapObjects(MO)相比较,具有以下几方面的优点:

能够读/写Geodatabase󰀂󰀂󰀂注记,栅格,自定义要素等;

!能够读/写MXD文件;∀更好的标注;#更好的编辑;∃更多的符号和风格;

%支持ArcIMS和ArcGISServer的服务;&高级的功能(3D,Globe和Spatial);∋以ArcObjects为基础;

(可以使用ArcMap来创建地图。

3󰀁基于ArcGISEngine的GIS系统开发

如前文所述,虽然基于AO组件可以二次开发许多应用程序,但开发的应用程序一般基于VBA或其他宏命令语言,并不能脱离ArcMap或ArcCatlog等应用环境使用,这就使得程序过于庞大并且不能在没有ArcGIS的桌面环境中运行。然而Engine在这方面具有明显的优势。本实验系统结合荆江分洪区的工情数据,基于ArcGISEngine来进行设计开发,借以说明在实际应用开发中ArcGISEngine的功能实现。3󰀂1󰀁系统的功能模块

实验系统的功能包括:空间数据的浏览、查询和分析功能;GIS的基本功能:地图的放大、缩小、漫游、图层操作等;以及在此基础上实现的空间/属性信息双向查询、面积和距离的量测、专题图统计分析等功能。具󰀁第2期

刘莹󰀂ArcGISEngine的开发及应用研究

39

体如图3所示。(4)专题图统计分析:用户可以该项功能来选择感兴趣的主题制作专题图,在地图上以颜色的深浅区分显示。比如:以地区为单位的人口和土地面积统计的专题地图等。

)**预备开始在地图上重新绘制

)**根据专题图统计分析的条件不同,在地图上以颜色的深浅区分显示

pScreenDisplay.StartDrawingpScreenDisplay.hDC,esriNo󰀁ScreenCache

DoWhileNotpFeatureIsNothing∗∗∗∗

)**通过计算,得到不同的充填颜色--pRgbColorpSimpleFillSymbo.lColor=pRgbColorpScreenDisplay.SetSymbolpSimpleFillSymbolpScreenDisplay.DrawPolygonpPolygonSetpFeature=pFeatureCursor.NextFeatureLoop

)**结束绘制pScreenDisplay.FinishDrawing

图3󰀁系统功能结构图

3󰀂2󰀁实验系统开发

实验系统采用VB6.0为开发前端,运用ArcGISEngine中的ToolbarControl、TOCControl和MapControl开发控件以及自定义的功能Button,以此来进行相关GIS功能的系统开发。具体实现方法如下:

(1)地图加载:此项功能主要用于从指定路径读入MXD文件,并在MapControl控件中显示地图信息。

DimsFileNameAsString

sFileName=\"*******.mxd\"󰀁󰀁)**指定MXD文件所在路径

IfMapControl1.CheckMxFile(sFileName)Then󰀁)**检查路径是否正确

MapControl1.LoadMxFilesFileName󰀁)**路径正确,则在MapControl控件加载地图

EndIf

(5)面积和距离量测

测面积:此项功能将根据用户选择的区域,计算并以弹出式对话框的形式告知用户该区域的面积大小。

DimpAreaAsIArea󰀁󰀁)**定义IArea接口SetpArea=pFeature.ShapeMsgBoxpArea.Area󰀁)**用弹出式对话框显示所选区域面积信息

测距:此项功能可测量出地图上任意两点间的大致距离,并以弹出式对话框的形式告知用户。

DimplinemeasureAsIPolyline

Setplinemeasure=MapControl1.TrackLine󰀁)**使用TrackLine方法在MapControl控件

󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁)**上捕捉MsgBoxplinemeasure.length󰀁)**用弹出式对话框显示所捕捉线段的长度

(2)添加图层:此项功能主要用于按照用户指定的路径将图层文件打开,添加到原地图集中,供以后操作使用。

∗∗∗∗

)**取得要添加的图层文件,赋到pGxObject中IfpGxObjectIsNothingThenExitSubWhileNotpGxObjectIsNothingSetpFLayer.FeatureClass=pGxObject.DatasetpFLayer.name=pGxObject.Dataset.name)**在MapControl控件中加入图层MapControl1.AddLayerpFLayerSetpGxObject=pEnumGxobject.NextWend

结合上述的开发技术和方法,基于ArcGISEngine的荆江分洪区实验系统已初具雏形,如图4~图5所示。

(3)信息查询:此项功能用于通过图形与属性数据的连接,实验系统实现信息的双向查询,即根据图形查找其对应的属性,或是根据某一属性查找对应的图形。

DimpQueryFilterAsIQueryFilter󰀁)**定义查询过滤接口

SetpQueryFilter=NewQueryFilter

)**根据查询条件设置WhereClause属性pQueryFilter.WhereClause=\"***********\"DimpFeatureCursorAsIFeatureCursor

)**执行过滤行为,剔除不满足条件的信息SetpFeatureCursor=pFeatureClass.Search(pQueryFilter,False)图4󰀁荆江分洪区水情管理信息系统界面

(下转第57页)

󰀁第2期

钱业宏󰀂基于AutoCAD数字化地形图线状符号二次开发方法探讨

((((󰀁(󰀁()

57

(defunc:Wjgdk(/BlipscalesP1P2D1KSS)(setqBlip(GETVAR+BLIPMODE,))(setvar+BLIPMODE,0)(setvar+CMDECHO,0)(setqm:err*error**error**merr*)

(setqscales(/(GETVAR+USERR2,)1000))󰀁󰀁;将比例尺除以1000赋值与scales(command+layer,+s,+DMDZ,+,)󰀁󰀁;将当前图层设定为+DMDZ,(command+linetype,+s,+continuous,+,)󰀁󰀁;将当前线型设定为+continuous,

(setqD1(*scales2󰀂0))󰀁󰀁;设定陡坎上短线符号排列间距;以下程序是将Pline命令作适当修改,以便能够交互输入点(initget17)

(setqp1(getpoint+\\n起点:,))(command+pline,p1+w,0󰀂00󰀂0)(initget17)

(setqp2(getpointp1+\\n下一点:,))(whilep2

󰀁󰀁󰀁󰀁󰀁󰀁(commandp2)󰀁󰀁󰀁󰀁󰀁󰀁(setqP1p2)󰀁󰀁󰀁󰀁󰀁󰀁(initget16)

󰀁󰀁󰀁󰀁󰀁󰀁(setqp2(getpointp1+\\n下一点:,)))(command+,)(initget+YesNo,)

(setqK(getkword+\\n是否光滑?,))(if(=K+Yes,)(command+pedit,+l,+f,+x,))

setqSS(ssget+L,))󰀁󰀁;将绘制好的pline线保存于SS中

initget1+LeftRight,)

setqK(getkword+\\n符号方向:,))if(=K+Left,)

󰀁󰀁(command+measure,SS+b,+DKL,+Y,D1))if(=K+Right,)

󰀁󰀁(command+measure,SS+b,+DKR,+Y,D1))setvar+BLIPMODE,Blip)

将程序保存为DK.lsp,并放在AutoCAD可搜索到路径中,然后进入AutoCAD,在命令中输入(load+DK,),Au󰀁toCAD将装载此函数,再运行命令:wjgdk,就可以绘制任意未加固陡坎(事先要创建层、图块,设定比例尺)。同理我们可以编程序绘制依比例尺围墙、依比例尺铁路、依比例尺斜坡等等,由于篇幅所限,这里不再一一赘述。

参考文献

[1]󰀁郭朝勇等.AutoCADR14(中文版)二次开发技术.北京:

清华大学出版社,1999.

[2]󰀁GB/T7929-1995.1−5001−10001−2000地形图图

式.

[3]󰀁二代龙震工作室.AutoCAD2000系列程序设计基础教

程.济南:济南出版社,2000.

(上接第39页)

一般基于VBA或其他宏命令语言,并且不能脱离Arc󰀁GIS的桌面环境来运行,这使得程序过于庞大,而Arc󰀁GISEngine开发的系统可以在没有安装ArcGIS的桌面环境来运行,缩减了应用的体积;其次,ArcGISEngine携带了很多控件,以前需要编写大量代码才能实现的功能现在只用简单的引用控件就能实现,缩短了应用的开发周期。因此,ArcGISEngine开发出的客户化应用程序具有低成本、轻量级、完整、高效的特点。

参考文献

[1]󰀁朱政.通过ArcGISEngine构建GIS应用.2004年第六届

ArcGIS暨ERDAS中国用户大会.2004[2]󰀁朱政.ArcGISEngine的开发与部署.

[3]󰀁ESRI中国(北京)有限公司.WhatisArcGIS(ESRI公司

ArcGIS系列产品介绍).2005

图5󰀁实验系统结果

[4]󰀁沈百玲.ArcGISEngine简介.中国通讯,2003,10:3-5[5]󰀁ESRI总代理仲琦科技.ArcGISEngine介绍.http://www.

hitrontech.com/Product

[6]󰀁张斌.基于ArcGISEngine的GIS开发技术.武汉大学研

究生学报,2004,3-21

[7]󰀁ESRICorp.ArcGISEngineDeveloperGuide.

4󰀁结󰀁语

实验系统是利用荆江分洪区的工情数据,在VB6󰀂0环境下利用ArcGISEngine自行设计开发的一个实验性系统。由于以往基于AO组件来二次开发的应用程序

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务