基于ARCGISENGINE的校园三维虚拟沙盘设计
2012-10-17寇崇晖
张 棫,李 燃,林 瀚,寇崇晖
(闽江学院 地理科学系,福建 福州 350108)
基于ARCGISENGINE的校园三维虚拟沙盘设计
张 棫,李 燃,林 瀚,寇崇晖
(闽江学院 地理科学系,福建 福州 350108)
GIS作为一门综合性技术,不断与其他技术相结合,特别是计算机技术的发展密切相关.ArcGIS Engine带来开发平台的灵活性,能够使GIS功能嵌入非GIS软件或将其他软件功能引入GIS软件平台.本文结合闽江学院校园三维虚拟沙盘来阐述利用ArcGIS Engine进行地理信息系统二次开发的原理和方法.
ArcGIS Engine;三维;虚拟沙盘
1 前言
经历30多年的发展,GIS正在形成完整的技术系统并在建立其他理论体系,形成了多层次和不同尺度的应用格局,成为信息产业的重要组成部分[1-2].GIS技术的应用越来越广泛,已广泛应用到国土、农业、海洋、汽车导航、防灾、等各行业中[3-5].各种应用型GIS系统也层出不穷,但传统GIS的开发存在很多弊端.传统GIS开发方式主要采用GIS平台提供的宏命令语言,如ArcInfo的AML,加上庞大的函数、命令库,使得普通的开发技术人员难以掌握,延长了应用产品的开发周期.在数据管理方面,传统GIS系统中的空间数据管理也存在不足[6].此外,传统GIS系统与MIS系统,多媒体开发工具的兼容性都相对较差.传统GIS开发模式不灵活的开发方式及昂贵的价格,在相当大的程度上限制了GIS应用领域的发展.采用组件技术把GIS的功能适当抽象,以组件的形式供开发者使用,带来许多传统GIS工具无法比拟的优点:小巧灵活,价格便宜,直接嵌入MIS开发工具,强大的GIS功能,开发简捷等.其典型代表是ESRI公司推出的产品——ArcGISEngine,使得GIS应用开发彻底地脱离了ArcGIS桌面平台,大大提高了GIS开发的效率,极大地促进了GIS的应用开发[7].用户只需用ArcGIS Engine一个软件包就可以开发实用的有针对性的GIS,不仅方便了开发,还大大节约了开发费用.ArcGIS Engine的是地理信息系统的二次开发的一个里程碑.
本文基于COM技术的ArcGIS Engine进行地理信息系统的开发,并结合校园三维虚拟沙盘来说明其开发的原理和方法.
2 ArcGIS Engine和COM
2.1 ArcGIS Engine
ArcGIS Engine是一个基于ArcObjects构建的可编程的嵌入式GIS工具包.ArcGIS Engine是由一组核心的ArcObjects包组,与平台无关.它是一种新的部署策略和资源.开发人员能利用ArcGIS Engine开发出功能强大的GIS应用系统.ArcGIS Engine开发包包括三个关键部分[8]:
2.1.1 控件
控件是ArcGIS用户界面的组成部分,你可以嵌入并在你的应用程序中使用.
2.1.2 工具条和工具
工具条是GIS工具的集合,在应用程序中用它来和地图和地理信息交互.
2.1.3 对象库
对象库是可编程ArcObjects组件的集合,包括几何图形到制图、GIS数据源和geodatabase等一系列库.
2.2 COM 原理
COM(Component Object Model,组件对象模型)是一种以组件为发布单元的对象模型,COM是OLE和ActiveX共同的基础,COM不是一种面向对象的语言,而是一种二进制标准[9-10].COM所建立的是一个软件模块与另一软件模块之间的链接,当这种链接建立之后,模块之间就可以通过接口机制来进行通信.COM接口是一组逻辑上相互关联的操作,这些操作定义了某种行为,即这组操作的规范,而非特定的实现,实质是接口代表了接口调用者和实现者之间的一种约定.COM标准增加了保障系统和组件完整的安全机制,从而扩展到分布式环境.
3 ArcGIS Engine开发实例
ArcGIS Engine可 以 在 Windows、UNIX 和Linux桌面上运行并支持一系列的应用软件开发环境,包括:Visual Basic 6,Microsoft Visual Studio.NET和Java开发环境.因此ArcGIS Engine允许开发者在自己熟悉的环境下进行开发.ArcGIS Engine通常是通过添加控件、工具、菜单条和对象库,在应用中嵌入GIS功能.以下结合校园三维虚拟沙盘详细介绍其具体开发方式.
3.1 ArcGIS控件加载
(1)启动 Microsoft Visual Studio 2005,并新建一个工程;
(2)工程命名为“三维虚拟沙盘校园”并保存该工程;
(3)右击工程,选择“添加引用(R)…”(见图 1);
(4)在添加引用对话框中选择所需要添加的库.
图1 添加控件
3.2 ArcGIS控件嵌入
(1)在设计模式下打开Form1窗体;
(2)在窗体中添加相应的控件;
(3) 再 将 PageLayoutControl、TOCControl 和ToolbarControl添加到窗体中;
(4)重新调整窗体上各控件的大小和位置;
(5)结合闽江学院三维虚拟沙盘校园的具体需要,设计最终窗体(见图2).
图2 校园地理信息系统窗体设计
3.3 设置工具条控件和目录树控件与地图控件的链接
对于此应用程序,TOCControl和ToolbarControl控件将与PageLayoutControl相互协作,而不是MapControl,为此PageLayoutControl必须设置为绑定控件.TOCControl使用绑定的ActiveView显示图形、图层和符号,而位于ToolbarControl上的任何命令、工具或菜单项会受绑定控件的显示影响.
可以用设置“属性”的办法设置绑定控件,如图3和图4:
图3 ToolbarControl属性页
图4 TOCControl属性页
也可以用代码的形式实现,代码如下:
3.4 增加ToolbarControl命令
ArcGIS Engine提供了120多个命令和工具,它们能直接和 MapControl、PageLayoutControl和ToolbarControl相互协作.这些命令和工具提供了大量的GIS功能,包括地图导航、属性查询、地物选择等.在应用程序中增加一些对本次开发有用的命令和工具.
在Form_Load事件中的加载文档代码之前添加如下代码:
3.5 添加PageLayoutControl弹出式菜单
和绑定控件协作的ToolbarControl增加ArcGIS Engine命令一样,按照前面的步骤,可以从ArcGIS Engine命令创建弹出式菜单.下面将在应用程序中增加与PageLayoutControl协作的弹出式菜单,当在PageLayoutControl可视区域点击鼠标右键的时候,弹出式菜单将显示.
在Form_Load事件中向ToolbarControl增加命令代码的后面加载文档代码的前面增加如下代码:
3.6 在MapControl控件中选择元素并在SceneControl中三维显示
MapControl控件中的显示的就是二维数据,可在其中选择元素并利用图层加载的办法,加载入SceneControl控件中.在SceneControl控件中便可进行三维的显示.
(1)添加一个新的窗体Form2,并在其中部署ToolBarControl控件和SceneControl控件,如图5:
图5 三维显示窗体
(2)在Form1中添加axMapControl1_OnMouse-Down事件并添加下列代码:
(3)最后在Form2的Load事件中添加下列代码:
(4)运行结果如图6:
4 结论
图6 三维显示结果(校园部分角落——食堂)
校园三维虚拟沙盘系统是对ArcGIS Engine二次开发进行的一次有意义的尝试,开发利用ArcGIS Engine的各个模块之间的联合,开发出适合于三维虚拟沙盘校园的系统.基于ArcGIS Engine的开发与开发平台无关,且各个组件之间能自由的组合开发出各种各具特色的系统.从运行的结果分析,此次开发基本达到了研究项目的目的,但由于研究系统的复杂性,在一些方面还不够深入.通过以上的研究表明,利用ArcGIS Engine进行二次开发表明其具有开发的简捷性、方便性、高效性等特点,且能适合不同的开发要求.
〔1〕丁院锋,丁贤荣,赵吉祥.基于 ArcGIS Engine 实现河道工程对象3D建模[J].电脑开发与应用,2007(20)11:47-49.
〔2〕庄晨辉,陈铭潮,潘俊忠.林业资源管理地理信息系统的研制与开发[J].福建林学院学报,2005,25(1):1-4.
〔3〕张健.欧美大学校园规划例程初探[D].重庆:重庆大学,2004.
〔4〕邹杰,邹峥嵘,丁孝兵.基于 IMAGIS的城市三维景观的构建[J].城市勘测,2005(6):16-18.
〔5〕朱庆,林珲.数码城市地理信息系统——虚拟城市环境中的三维城市模型初探[M].武汉:武汉大学出版社,2004.
〔6〕刘晓艳,林珲,张宏.虚拟城市建设原理与方法[M].北京:科学出版社,2003.
〔7〕ArcGIS Engine Developer Guide[R].ESRI Corp,2007.
〔8〕沈百玲.ArcGIS Engine简介[J].中国通讯,ESRI中国(北京)有限公司,2003(10):3-5.
〔9〕吴柏青,魏仰苏,蒋国明.基于COM原理的UML模型信息提取技术[J].计算机工程与设计,2007,28(17):4099-4101.
〔10〕ESRI.Desktop Developers Guides.Environmental Systems Research Institute,Inc,2002.
P208
A
1673-260X(2012)03-0114-04