您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 基于GIS的管道三维可视化技术研究
基于GIS的管道三维可视化技术研究赵本福、王光振摘要:管线作为城市重要的基础设施,建立管网系统对其进行合理的、有效的管理和规划,不仅节约管道建设成本,还能提高管网维修及使用效率。管网系统的建立依赖于管道三维可视化,因此管道三维可视化技术的研究就显得十分必要。本文基于GIS平台,介绍了管道三维可视化相关技术,依据管道的几何特征,基于GIS探讨了管道的三维可视化技术,并提出了直管和弯管模型,为后续实现管道的大规模三维可视化奠定了基础。关键词:GIS;管道;三维可视化1引言随着信息技术和城市的发展,城市地下管道网络的规模也逐渐扩大,排水管线、给水管线、燃气管线、电力管线等,众多管线纵横交错、遍布整个城市,构成一张密织的网。地下管道网络作为城市重要的基础设施,担负着能源输送,信息传输等功能,是城市赖以生存和发展的重要通道。但由于权属单位繁多,单位之间的信息不能及时互通,加之管辖地域互相重叠,各个单位在管道规划与施工上难免发生冲突,导致施工延误甚至管段挖断等事故时有发生。因此很多城市利用计算机技术建立了自己的管网系统,这些管网信息系统多数是结合国内外大型基础地理信息系统软件与可视化开发语言(VB、VC、Delphi等)进行的集成式二次开发,这些系统除了满足GIS基本功能外,还具有管线管理的专业功能,如断面分析、爆管分析等,但大多数系统是2维或2.5维。尽管目前MapInfo和ArcGIS提供了简单的地面三维展示功能,但对于现实世界复杂的三维关系的描述与分析很少,与地下3维管道方面功能几乎没有,更没有提供面向三维管线的建模工具。迄今为止,国内阐述三维管线建模和相关空间分析的文章很少[1],但随着城市的高速发展,地下管线建设越来越庞杂,建立合理而有效的管线管理数据库是管线系统高效和稳定运行的重要保障,因此生成有效的三维管道数据对于建立管线管理数据库显得十分必要。地下管线分布纵横交错,二维图不能直观表现管线之间的空间关系,有些管线上下起伏,与地面垂直的管线只能在二维图上只能以一个点或标注来表示,视觉效果不直观。可视化是指运用计算机图形学和图像处理技术,将计算过程中及计算结果的数据转换为图形及图像在屏幕上显示出来,并进行交互处理的理论、方法和技术,要实现管线的三维可视化,至少需要解决管线的三维建模以及利用合理的数据模型来管理管线模型数据这两个技术难题。在技术上,一般有数学类技术和组件类技术,其中数学类技术主要利用计算机图形学和数学知识,结合OpenGL或Direct3D等技术从底层进行管线建模,组件类技术则是在成熟GIS组件的基础上进行二次开发,实现管线的三维可视化。组件类技术将所需数学知识封装在函数库里,开发者只需应用组件提供的接口和函数即可实现复杂的三维可视化及分析功能。由于现有的很多二维管线系统都是基于组件开发的,如果在此基础上再利用组件进行三维功能的扩展开发,不仅能够减小开发难度、缩短开发周期,而且开发的三维相关功能能够与已有基本功能相互兼容,既能够充分利用现有GIS软件成熟的数据编辑、空间分析等功能,又能发挥三维直观性强、表现力丰富等优点,达到优势互补的效果。2主要技术简介2.1GIS软件的组件式开发技术组件式软件技术已经成为当今软件技术的潮流之一,为了适应这种技术潮流,GIS软件与其他软件一样,已经发生着革命性的变化,即由过去厂家提供了全部系统或者具有二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来。无疑,组件式GIS技术将给整个GIS技术体系和应用模式带来巨大影响,其中以ESRI公司的ArcGISEngine(AE)在GIS行业内应用最为广泛。2.2ArcGISEngine(AE)ArcGIS是构建地理信息系统的一个平台化产品,开发人员通过ArcGIS不仅能实现客户端应用的开发,同时能够进行服务器功能的开发。开发人员可以通过ArcGIS配置/定制ArcGIS应用产品、扩展ArcGIS构架和数据模型、在其它的应用中嵌入地图和GIS功能、构建和部署定制的桌面应用、构建Web服务和应用[2]。ArcGISEngine作为ArcGIS的二次开发语言,它不仅具有丰富的GIS分析功能,而且还具有强大的3D渲染和显示功能,加上该组件具有良好的跨平台、跨语言等特点,开发者可快速定制出满足用户需求的三维应用系统[3-4]。ArcGISEngine除了提供基本的点、线、面等几何模型外,还提供了三维矢量模型。三维矢量模型包括所有含Z值的几何对象:点、线、面及多片(MultiPatch)。其中,多片是一系列三维表面的集合,这些三维表面在几何上主要有三角条带(Triangle-Strip)、三角扇(Triangle-Fan)和环(Ring)。三角条带是指一系列相互连接的三角形构成的三维几何形状,其结构如图1所示。图1三角条带结构三维管线的表面可以按一定规则分解为多个相互连接的三角形,因此,三角条带对象用于三维管线表面的模拟,本文研究的管线三维可视化就是基于这种多片三维矢量数据模型进行组织和管理的。除了具有合适的三维数据模型外,AE还提供了众多接口用于三维实体的建模,如IConstruetMulti-Patch接口提供了几种用于构建MultiPatch对象的方法;IVector3D接口提供了对三维向量进行各种运算的方法;ITransform3D接口则提供了对三维物体或空间坐标系进行旋转、平移等变换的方法。在三维显示方面,AE也提供了相应的ActiveX控件,如适合精细三维场景的刻画的SceneControl。并且AE还提供了导航、飞行、缩放、漫游等三维浏览工具可以很方便地与三维场景进行交互。3管线的三维建模管线主要由给水、排水、燃气、热力、电力、电信和工业管道等七大类型组成,每类管线按几何特征可分为管线段和管点。为了方便对管线进行三维建模与管理,需将管线数据按类型和几何特征进行分类与分层,可采用面向对象的ESRIGeoDatabase数据模型进行组织和管理。由于管线主要由直管和连接直管的弯管两部分组成,因此本文主要从直管和弯管两个方面来进行介绍。3.1直管建模在平面视图中,一段管线在地图上显示为一条直线;而在三维透视图中,一段管线可依据其实际形状是圆形或方形分别用圆柱面或四棱柱面来模拟。关于三维圆管的建模,杜国明和李清泉[5-6]采用了Grid算法,其原理是:已知管线的起点P1(X1,Y1,Z1)、终点P2:(X2,Y2,Z2)以及管径R,为了形成以P1,P2为轴线起止点,以R为半径的圆柱面,可以以P1点所在断面圆弧的两点及对应P2点所在断面圆弧的两点构成一个矩形;在每个圆周边均匀取n个这样的点,可得到n个这样的矩形,这n个矩形便构成棱柱表面。当n足够大时,在轴线上可以用该棱柱面来逼近圆柱面。后来,朱合华从基于切片建立三维几何模型的思路出发,采用了三角形面(非矩形面)来构造管线起止断面间的类圆柱表面,并采用TIN模型来表达,灵活性较强。基于AE的三维圆管建模算法描述如下:1.读取二维管线要素类中每个要素(IFeature)的起点P1(X1,Y1,Z1)、终点P2(X2,Y2,Z2)和管径R值,并构造从P1到P2的三维向量P3DvectPipe(IVector3D);2.求出以空间坐标系的坐标原点为圆心,R为半径的圆弧上12个点的空间坐标,其公式如下:α为圆弧上各顶点与原点连线到x轴的角度;3.用IConstructMuhiPatch接口的ConstructExtrudeAbsohte方法对这12个点组成的Polyline对象沿Z轴拉伸高度L(L为管线长度),即可得到三维圆柱的MultiPatch对象;4.构造Z轴正方向的单位向量p3DvectZ,并计算出向量p3DvectPipe到向量p3DvectZ的角度θ,这个角度即为管线从Z轴方向旋转到P1、P2所在方向的角度;5.使用ITransform3D接口的RotateVector3D方法将该MultiPatch对象以法矢量p3DvectN为旋转轴,θ为旋转角进行旋转变换,使其与管线向量p3DvectPipe方向相同;6.使用ITransform3D接口的Move3D方法将旋转后的MuhiPatch对象整体平移增量(X1,Y1,Z1)。该MultiPatch对象表示实际空间位置的三维管线,效果如图2所示。图2直管模型3.2弯管模型3.2.1弧角模型如果两段管线之问的夹角是180°,那么直接按照中心节点的坐标画出圆柱体即可;如果连续的两段管子之问的夹角介于0°~180°之间,圆柱面的首尾衔接处就要平滑过渡。其实现方法为将管线之间的拐角以部分圆环体替代。圆环体可以近似分解为许多规则的四边形,如果知道了这些四边形的顶点坐标(X,Y,Z)就可以生成近似圆环体,根据实际需要可以只画出部分角度的圆环体作为管线拐角处的弯管。绘制圆环的过程,实际上包含了两个操作,一个过程是把圆环体的截面圆环平均分解成若干份,相当于将圆环体转变成由若干圆台面。另一过程就是把每个圆台面分解成若干段,每段由规则梯形面代替,该过程是经过两个嵌套的循环来实现的,内循环出现条带,外循环对平滑的条带进行拟合,得到光滑的圆环体,最后图形转换到XOY平面。输入两条管线之间的起始夹角就可以得到斜圆柱体坐标的具体计算方法如下:如图3,已知圆环体的内径r和外径R,圆环体的截面半径r1。在OpenGL中,X轴是自左向右的,Y轴是自上而下的,Z轴是由里及外的。知道了绘制过程中圆环体截面被剖分的次数,如图3(b)所示,圆环体截面被剖分为8份,也就知道了夹角仅,可以计算出Z的坐标,即z=r1*cosα,如图(c)所示的1/4圆就是圆环体被剖分后的许多圆面中的一个圆面,由圆环体剖分成圆环面的个数,也就知道了夹角β,就可以算出x和y的坐标,坐标为:实验证明如果圆柱体截面半径r1等于圆环体圆心到圆环体中心轴的距离R—r1,画出来的拐角的视觉效果最好。图3圆环体剖分示意图在ArcGISEngine中按照上述方法生成圆心角位45°的弯管模型如图4所示。图4圆心角位45°的弯管示意图除了绘制相同管径的两段管线之间的弯管外,使用该方法还可以很容易地解决粗管到细管之间平滑衔接的问题,只需在圆环体表面绘制过程中依据实际情况动态修改截面圆半径的取值即可,如图5所示。图5粗细衔接管模型有了直管和弯管的建模算法,就可以对二维管线数据中呈任意连接角度的管段进行三维建模和衔接处的圆滑处理。3.2.2球体模型对于直管的弯角处的可以采用球体填充而成,其生成速度较快,如果直管直径为r,实验结果表明,当球体直径R=1.4r时,衔接效果较好,如图6所示。图6球体模型示意图但此模型仅能用于较简单的直管连接处,如要模拟复杂的管道接头模型,还需要单独建立模型或采用专业3D软件进行模型构造。3.3管道模型应用实例笔者在探讨管道模型技术之后,以此为基础开发了一个综合管线三维演示系统,在该系统中,可以对二维管线图层、以及建筑物图层进行批量建模,而且也可根据地图上选择的部分感兴趣线要素实时生成三维管线模型,也可叠加其他三维模型数据,如DEM数据,系统界面效果和管道三维局部放大效果如图7和图8所示:图7系统界面效果图图8管道三维局部放大图4结束语基于ArcGISEngine提供的三维矢量模型、相关组件和接口,建立直管和弯管模型,直接对二维矢量管线数据进行的三维建模,是本文提出的一种解决管道三维可视化的方法。该方法在小范围内不仅可以实现批量动态建模,算法效率高、模拟效果好,而且建模后的三维数据能以矢量形式进行存储和管理,可以在三维场景中进行动态增删,能以多种方式进行三维渲染,还可以和其他矢量或栅格数据一起叠加显示。由于时间比较仓促,本研究存在的不足之处如下:(1)直管模型和弯管模型之间的拼接,在局部放大之后,可能会有多余部分出露,此问题具有随机性,暂未发现处理方法。(2)少量的二维管线数据直接生成三维管道数据,其生成时间较短,但是大量的数据生成速率较慢,表明算法还需进行一定的改进。参考文献[1]李清泉,严勇,杨必胜.地下管线的三维可视化研究[J].武汉大学学报(信息科学版),2003,28(3):2
本文标题:基于GIS的管道三维可视化技术研究
链接地址:https://www.777doc.com/doc-2534001 .html