仇文顺 刘一宏 马翔宇
(1.北京市南水北调调水运行管理中心,北京 100195;2.北京市南水北调工程建设委员会办公室,北京 100086)
地下输水管网是城市重要的基础设施,担负着水资源输送的任务,是城市赖以生存的物质基础[1]。随着社会经济的发展,地下管网更加密集和复杂,现有的地下管网管理工作效率低下、流程复杂,迫切需要引入GIS技术实现地下管网的管理工作。传统的二维地下管网图只能表达管线的平面位置,无法表达管线之间以及管线与其他地下设施之间的空间层次关系[2]。二维GIS使用二维符号抽象现实世界,会遗失或舍弃部分立体空间信息,不能满足地下管网表达,而运用三维GIS技术,则能真实有效地反映地下管网的空间分布及空间关系,破解地下管网管理的难题。
目前,已有三维地下管网实现的实例,例如陈金川等设计和实现了虚拟煤矿三维引擎[3],尹志永基于OSG开发了三维管线信息系统[4]等。本研究以北京市南水北调输水管网系统为例,通过osgEarth实现三维输水管网系统。南水北调北京段输水管线采用地下输水模式,基于osgEarth基础功能框架,在三维球体地表场景的基础上扩展了三维地下场景,实现基于数字地球的地上地下一体化、室内室外一体化的三维管网管理系统。
osgEarth是基于 OSG(OpenSceneGraph)开发,集成了地形模型和影像数据的加载、渲染和调度的数字地球三维引擎。osgEarth支持全球范围的数据建模,基于分层和分块模型的LOD技术,解决了对海量地理数据、地形数据和影像数据等进行管理的问题,提供灵活的插件管理机制,极大方便了基于osgEarth的扩展功能的开发。
北京市南水北调管网系统包括地下输水管线、检修井、排气口和分水口等部分,通过分水口向水厂供水,通过检修井对管网进行维护,排气口向地表排气,在分水口地表建设分水口控制室。管网结构如图1所示。
图1 输水管网结构图
osgEarth使用基于XML的earth文件保存三维数据模型。osgEarth读取该文件时,通过读取三维模型数据的地址,调用相应驱动器,实现三维空间数据加载,如使用TMS驱动器处理采用TMS协议的瓦片数据等[5]。
本研究的三维空间数据包括三维场景数据和三维管网数据,其中,三维场景数据主要包括地形、地貌和地物。地形地貌可以基于OSG扩展的Virtual Planet Builder构建三维模型;空间地物由于工作量大,需要使用成熟的三维建模软件构建三维模型。
目前,三维管网数据主要采用三维自动化生成技术和手动三维建模两种方式生成。管线模型自动生成技术可以实现管道的无缝对接,管道位置精确,但分水口、控制室等复杂地物自动建模复杂;管道模型手动建模方法建立模型简单,快速高效,但由于三维管线模型跨度大,载入三维场景中会出现位置偏移等问题。因此,本研究将两种方法结合,使用管线模型自动算法计算搭建管道模型,对于复杂的管网系统附属设施使用建模软件手动建模。
本系统主要分为三维可视化、查询定位、输水管道、供水调度模型和数据接入5个功能模块。
三维可视化模块:可以通过该模块实现对输水管网的地上地下环境、输水管网及其附属设施的地上地下一体化渲染,同时可以通过控制漫游面板实现对三维场景的漫游。
查询定位模块:可以通过该模块实现输入输水管网的相关属性,在查询结果面板和三维场景中显示查询结果。
输水管道模块:该模块可以控制管网的现实模式,计算管线某一位置水流的流量和流向,获得管线的纵横剖面图和管网的正反流量,可以测量管线的长度和面积。同时,可以对感兴趣的局部场景进行快速定位和显示。
供水调度模型模块:在该模块中,将供水参数输入供水调度模型,计算供水调度方案,并实现对方案的对比和管理。
数据接入模块:通过该模块可以阅览管道沿线的相关检测数据,如应力数据、水质数据、渗压计数据等,也可以实时接入摄像头,显示摄像内容。
在 Win7(SP1)平台上,以 Visual Studio 2010为编译环境,使用MFC搭建系统界面,采用OSG3.1、osgEarth2.5实现三维场景渲染,使用3dMax完成三维静态模型的构建。
3.2.1 管道快速自动建模
管道主要分为直线管道、转弯管道,其中,直线管道是普通的管线,转弯管道是管道转弯处管道。一般情况下,管道是圆柱或圆台管道。为了实现快速建模,可以将直线管道部分坐标标准圆管简化,其空间几何属性由位置(三维坐标)、管径、长度、壁厚等参数确定[6]。在进行快速建模时,弯线管道在矢量旋转法的基础上,使用内插的方式建模。
综上,地下管网的快速自动建模主要包括两个方面:管道中心线位置的确定;直线管道和转弯管道的生成。
(1)直线管道建模
直线管道建模先确定管道的中心线及管道两端点的位置,再根据中心点和管径对管道端点断面进行均分,生成管道表面几何矩形,从而模拟管道。
直线管道的空间位置包括直线管道起点坐标、直线管道的终点位置、管径[7]。 设管道中心线起点坐标 P1(x1,y1,z1),终点坐标P2(x2,y2,z2),管道前进方向向量与三维空间X、Y、Z三个坐标轴正向夹角分别记为α、β、γ,它们是的方向角,其中0≤α≤π、0≤β≤π、0≤γ≤π,各角余弦可表示为:
直线管道使用圆柱体表示,圆柱体的截面半径为管线半径,轴心是管道中心线。管道表面可使用OSG提供的几何矩形模拟,将n个矩形连接构成棱柱体。随着n的增大,不断逼近圆柱,进而实现直线管道的渲染。该方法无论是在算法上,还是在实践上都是可行的。
如图2所示,将圆柱体截面分为n份,形成的n个等分点形成内切等边N边形,进而拟合圆。
图2 直线管道截面分解图
在图2中,圆心位于直线管道中心线上,设其坐标为O(xo,yo,zo),k 为圆的等分点,则 k 点的坐标(xk,yk,zk)的计算公式是:
xk=x0+R×cosθ×sinα
yk=y0-R×cosθ×cosα 1≤k≤n
zk=z0+R×sinθ
式中,θ=360/n×k(1≤k≤n),R 为直线管道管径,α 为直线管道与X轴夹角。
在实现过程中,分别在直线管道中心线起点和终点处拟合圆多边形上的相对应的C1和C2,构成一个矩形,最终形成表面具有n个矩形的棱柱体,最终实现拟合直线管道。理论上讲,n的值越大,拟合圆柱的效果越好,但在实际应用中,随着n值的变大,计算量也变大,反而会影响效率,因此,n必须取一个合理值。本研究将圆柱截面按15度形成24边形进行拟合,使得显示的真实性和渲染效率获得很好的平衡。
图3 转弯管道内插点划分方法示意图
(2)转弯管道建模
三维管道建模的一个难点是转弯管道的建模,转弯管道不是直线,需要将转弯管道进行切片,对每个切片按直线管道建模方法建立斜棱柱模型,进而实现转弯管道建模。切片数量越多,转弯管道越平滑。具体的计算方法如下:
图3中P1O1和OnP3为直线管道,按照直线管道建模方式建模;O1P2On是转弯管道,采用弯线建模方法,其中,矢量和矢量之间的夹角是α。
①在P1P2P3组成的平面内,在O1O2处分别做P1P2和P2P3的垂线,则两条垂线的交点O即是转弯管道的转弯中心线的圆心,OO1和OO2的长度为半径R,半径R可通过O1P2和P2O2的长度计算得到,具体计算公式是:令O1P2=P2O2=L,则
通过上式即可计算得到半径R。
图4 单个内插模型图
②图4是单个内插模型图,其中,O为第二步计算的转弯内径圆心,O1为内插模型起点面的圆心,O2为内插模终点面的圆心。计算O2坐标的具体计算方法是:将矢量绕垂直于平面P1P2P3的法向量旋转角度α/n,得到矢量。具体计算公式是:
图5 管道自动生成效果图
3.2.2 三维管网附属设施的导入
三维管网附属设施主要包括分水口、通风井以及相关控制设施等,这些三维模型结构复杂,使用自动建模的方法建模难度大。国内外已有众多学者研究了它们的快速建模方法,如有研究者采用标准管件库的方法[8]。该方法建模简单,技术成熟,因此,本研究使用该方法实现管网附属设施的建模,将建立完成的模型直接导入三维场景。具体方法如下:(1)使用3dMax等三维建模软件建立具体需求的模型;(2)在配置文件中保存附属设施的位置信息,调用osgEarth提供的接口实现三维模型的导入。
图6 附属设施场景效果图
3.2.3 三维可视化实现
三维可视化主要包括地上地下的可视化一体化、场景漫游、附属设施的进入等。具体实施上,可视化一体化可以通过设置地表影像的材质透明度,透视地下输水管线、风水管线、检修竖井和排气管道等实现;利用osgEarth提供的EarthManipulator类,可通过控制导航栏实现场景漫游;附属设施的动态进入需调用osgEarth的碰撞检测算法实现从分水口控制室室外进入室内,osgEarth 使用 osg:LineSegment和 osgUtil:IntersectVisitor 类实现碰撞检测[9]。 其中,osg:LineSegment是一个包含起点和终点的线段类,osgUtil:IntersectVisitor是接收线段的类,用于判断与场景节点的交集[10],实现碰撞检测。
MFC提供了用于读取数据库数据、网络数据的接口和控件。在MFC的支持下,通过这些控件,可以实现查询定位和数据接入等功能。通过调用goes开源库,可以实现管道量测等功能。图7是综合输水管网系统界面。
图7 综合输水管网系统
随着城市的发展,地下管网越来越复杂,使用二维管网系统已不能适应城市管网的管理、更新需求。本研究以北京市南水北调地下管网系统为例,根据实际需求,设计和实现了三维输水管网系统。系统实现了三维重建和显示,特别是根据管道自动生成算法生成管道,同时也实现了部分业务功能,在一定程度上解决了输水管网管理中遇到的实际问题,为水网管理提供了解决方案。
但本研究还有许多方面有待进一步研究和实现,主要是三维爆管分析等空间分析功能有待加强,与成熟的二维GIS技术的整合等。
[1]熊自明,葛文,吴绍民,等.城市三维地下管网信息系统研究与实现[J].信息工程大学学报,2010,11(1):59.
[2]姜波,金明一.三维地下综合管网系统的设计及实现[J].城市勘测,2013(4):53.
[3]陈金川,毛善君,李小娟,等.虚拟煤矿三维引擎架构设计及实现[J].煤炭科学技术,2012,40(7):76-80.
[4]尹志永,王涛,周磊,等.基于开源OSG引擎开发三维管线信息系统[J].城市勘测,2013(1):56-59.
[5]吴小东,许捍卫.基于OSGEarth的城市三维场景构建[J].地理空间信息,2013,11(2):107.
[6]赖承芳.三维建模技术及其在城市地下管网系统建设中的应用[D].中国地质大学,2013.
[7]戴肖锋,何涛.管网模型中基于对象分类的构件及组合件构造方法[J].计算机辅助设计与图形学学报,2000,12(10):756-760.
[8]陈子辉.虚拟三维地下管网建模技术研究与实现[D].天津大学,2008.
[9]杨化斌.OpenSceneGraph3.0三维视景仿真技术开发详解[M].北京:国防工业出版社,2012.
[10]温转萍,申闫春.基于OSG的虚拟校园系统的设计与实现[J].计算机技术与发展,2009,19(1):219.