APP下载

基于AE组件和OSG的二三维联动GIS系统研究与实现

2012-09-22廉光伟义崇政曲超于克石

城市勘测 2012年6期
关键词:插件视图引擎

廉光伟 ,义崇政,曲超,于克石

(1.天津市测绘院,天津 300381;2.天津市宁河县测绘队,天津 301500)

1 引言

二维GIS系统自从上世纪90年代迅猛发展以来,经过众多学者、软件开发者、用户的多方面实践,在城建、土地、测绘、规划、林业、电力、燃气、公安等行业得到了比较广泛的应用。二维GIS以其强大的空间分析功能,具有强大的应用空间和生命力。三维虚拟现实仿真软件OSG、Vega、Skyline等的出现,加速了三维虚拟现实城市的发展。

在国内GIS系统得到实际应用的20年左右时间里,各行各业形成了大量功能完善且信息齐备的二维数据。从最初的不适应到最终适应,用户熟练使用了GIS应用系统并与其办公流程相结合。随着城市的立体式发展,地上地下建(构)筑物不断增多,仍然采用二维GIS及高程信息来管理空间复杂实体会感觉十分困难,在此情况下三维平台应运而生。然而三维平台侧重展示,分析功能弱的特点,使管理部门不能迅速将业务管理系统完全升级为纯三维系统。为了解决二维GIS不直观及三维GIS分析功能弱的矛盾,二三维一体化系统呼之欲出。目前二三维GIS主要由AE组件和SkyLine等商业引擎搭建而成[1],二者成本都很高。由于ArcGIS占有了大部分二维GIS的市场,从降低软件成本方面考虑,引入OSG来扩展二维GIS业务系统的三维模块,实现二三维联动GIS系统,是一种可靠的低成本解决方案。

2 二三维联动GIS系统设计及实现

二三维联动GIS系统是在原有二维GIS平台下,增加三维模块,并通过二三维实体的某种共性关联使得二维与三维窗口同步显示[2],来解决二维系统缺乏的真实感,三维系统易造成的迷失感[3]。二三维GIS系统综合了传统二维GIS分析管理功能强大及3DGIS生动直观的特点,具有纯二维及三维系统不可比拟的优势。以开源三维引擎OSG作为三维引擎,更具经济性及自主性。利用OSG开发的三维功能组件,可以嵌入到任意其他二维GIS系统中,如ArcGIS、SuperMap、MapGis等商业平台及SharpMap等开源GIS平台中。

2.1 AE 组件

AE组件是用来构建应用程序的一整套独立的嵌入式GIS组件库和工具库,封装了ArcGIS大部分底层,支持多种开发语言,包括C++、.NET等支持COM的语言,有完善的开发文档,功能强大。可以将GIS功能嵌入到已有的应用程序中,包括Microsoft Office产品的Word和Excel,脱离ArcGIS Desktop而运行。AE组件由5个部分功能模块构成,详见表1。

表1 AE组件功能表

2.2 开源三维渲染引擎OSG

OSG是近年来流行的三维渲染引擎之一,采用标准C++,C++标准模板库(STL)编写,是一个开放源码、跨平台的图形开发包,作为中间件为应用软件提供了各种高级渲染特性,IO以及空间结构组织函数。为诸如飞行器仿真,游戏,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。OSG关键优势在于它的高性能、可扩展性、可移植性和快速开发,模块设计合理,功能接近商业三维引擎,易于创建高性能、跨平台的交互式图形程序。开发人员可以更关心实质性内容和如何操控它们,而不再是底层的代码,很容易适应OSG并且把它集成到自己的应用程序中。在数据组织方面则可以通过VirtualPlanetBuilder生成大规模海量空间场景数据,使用OSG的数据分页调度机制(PagedLOD)可以调度查看海量数据,能够使用一个场景树来管理整个场景的相关信息,方便地对场景物体进行加载和卸载。其多视景器(Composite Viewer)则可以把多个视图分别浏览不同的场景,并拥有自己的全局渲染状态。其数据库支持库(osgDB)支持动态的插件机制,从而支持大量数据格式,目前的发布版本有70种单独的插件支持3D数据和图像格式的装载[4]。

2.3 系统设计与实现

(1)系统架构

系统以AE组件和OSG三维扩展库为依托,采用“空框架+插件”的设计理念,减轻模块间的耦合度。系统各个功能模块以插件的方式存在,通过通信契约与主框架协作。插件(plug-ins)技术是在软件的设计和开发过程中,将整个应用程序划分为宿主程序和插件对象两部分,宿主程序能够调用插件对象,插件对象能够在宿主程序上实现自己的逻辑,而两者的交互基于一种公共的通信契约[5]。插件式架构具有软件复用性高、模块化和封装性强、可扩展性灵活、易移植性等特点。系统以定义好的通信接口作为软件主框架和各个子功能模块通信的桥梁。每个功能模块作为一个插件,遵循定义好的通信契约,通过AE组件和OSG扩展库来实现二维和三维部分的各个功能,各个插件之间耦合性小,支持热插拔,方便应对客户变化的需求,而不会对原有功能产生影响。充分利用插件技术的这些突出特点,二三维联动GIS系统设计时,从基础地理信息数据、业务管理数据、专题数据的使用需求来划分系统功能模块,以数据更新维护容易、业务管理功能拓展灵活、模块耦合性弱等特点来编写软件框架。图1是二三维GIS系统软件的架构图:

图1 二三维GIS系统架构图

(2)二三维联动原理

二三维联动是指当操作二维或三维中的一个视图时,另一视图同步显示相同的区域,使得二维实体与三维场景相对应,具有二维分析能力强以及三维直观性强的综合优势。二三维GIS系统联动的基本原理之一是基于二维GIS和三维GIS所具有的统一坐标系,通过彼此之间坐标的对应关系来实现二三维的联动[6]。通过研究两个视图的空间一致性,发现两个视图的中心点坐标及视图比例尺一致性,可以实现两个视图空间位置的同步。当两个视图其中一个位置状态发生改变时,通过事件机制,使另一视图发生相同范围的改变。基于这种原理,能够轻松实现二维、三维界面的数据同步调度显示,达到实体数据联动。

当二三维视图联动时,引申出另外一些联动效果,如属性查询一致性、选择一致性、分析一致性。属性查询一致性是指在二维或者三维视图里点击同一实体,显示相同的属性信息;选择一致性指在一个视图里选择高亮的实体,另一视图也会同时高亮;分析一致性指当两个视图都实现的分析功能,进行分析时,保持表现形式的一致性(如图2、图3、图4所示)。

图2 二三维空间位置一致性

图3 二三维属性一致性

图4 二三维扯旗分析一致性

(3)系统功能

二三维联动GIS系统集成了二维系统和三维系统各自的优秀功能,并实现实时的坐标联动、实体数据联动、属性信息联动。系统具有管理海量三维数据和二维数据的能力,使用PagedLOD技术,能够有效调度大区域内的场景、地形、三维城市模型(3D City Models,3DCM)等海量三维景观数据,同时使用Oracle数据库管理二维数据。以我们实现的二三维地下管线综合管理系统为例,针对地下管线,利用AE及.NET实现在二维视图中提供空间查询、属性查询、管线横断面分析、扯旗标注、爆管分析、净距分析、管线统计、管线资产管理、管线工程规划流程管理、建设单位信用评价等功能;利用OSG实现在三维视图中提供图层管理、三维场景漫游、管线量测、净距分析、三维属性查询、空间定位、漫游路径、路由设计、挖方体积计算、三维扯旗标注、隧道设计及拆改管线统计等功能。图5为二三维地下管线综合管理系统的功能结构图,图6为二三维地下管线综合管理系统的界面。

图5 二三维地下管线综合管理系统功能结构图

图6 二三维地下管线综合管理系统界面

3 应用

在天津市数字化测绘生产向信息化测绘服务转变的过程中,我们基于OSG开发出的三维核心组件库,分别在三维地籍课题、地下空间信息管理、住建部三维技术课题、城市地下管网综合信息系统建设项目以及数字社区项目中取得了良好的经济效益和社会效益,为管线权属、维管部门及规划管理部门带去了新的管理方式。就自身而言,一批优秀的技术人才也得到了锻炼和培养,掌握了一定数量的三维核心技术,形成了一套较为完善的三维技术应用服务体系。

4 结语

以开源三维引擎来开发三维组件,嵌入到原有二维GIS系统中,以较低的成本将原系统升级为二三维一体化联动系统,能顺应新时期各行业的业务管理需求。这种解决方案不需要客户增加过多的软件购置和维护等技改经费,具有较强的可行性。

当然,新建GIS业务管理系统时二三维模块也可以都采用开源引擎,实现完全的自主知识产权体系。需要注意的是三维模块方面还有很多亟待解决的问题,如3DCM数据库的建立与应用、3DCM数据的增量式更新、实时三维模型数据引擎研发等,在研发中需要完善这些关键性问题,促进二三维联动GIS系统在城市规划建设管理中的进一步发展应用!

[1]李娟娟,施昆,邱飞廷.基于ArcEngine与Skyline的二三维联动GIS系统平台设计与应用—以昆明三维城市规划辅助决策系统为例[J].江西科学,2010;28(5):696~700

[2]邵明旭,许惠平,覃如府等.二三维联动的虚拟校园设计与实现[J].地理信息世界,2008(2):73~75

[3]孙英君,丁宁,王倩.基于二三维联动机制的数字校园系统研究[J].山东建筑大学学报,2009(8)

[4]王锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009

[5]陈红华,李满春,李飞雪.插件式GIS应用框架的设计与实现[J].地理信息世界,2011(4)

[6]万幼,边馥苓.二三维联动的GIS系统体系结构构建技术[J].地理信息世界,2008,6(2):48 ~52

猜你喜欢

插件视图引擎
自编插件完善App Inventor与乐高机器人通信
蓝谷: “涉蓝”新引擎
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用
无形的引擎
基于Revit MEP的插件制作探讨