数字城市地下管线虚拟现实三维可视化实现
来源:第三维度
作者:李清泉 严勇 杨必胜 花向红
摘 要: 地下管线是城市的重要基础设施,三维管线建模与可视化是构建三维“数字城市”,实现城市现代化管理中不可或缺的重要组成部分。本文首先介绍管线管理的现状,然后提出管线数据的层次模型和组织方式,研究地下管线的三维模型建立,提出分段渐次推算的模型计算方法,并简要介绍对管线的交互操作与遇到的问题及解决方案。最后介绍基于Visual C++和OpengGL技术所开发的系统与一些实验结果。
1、前 言
结合国外大型基础地理信息系统软件(如、ARC/INFO等)与可视化开发语言(VB、VC、Delphi等)进行集成式二次开发。武汉吉奥和中地公司以自主开发的GIS软件为平台,运用二次开发控件进行了管线信息系统的开发。这些系统除满足GIS基本功能外,还具有管线管理的专业功能,如断面分析、爆管分析等,但大多数系统是2D或2.5D的。管线在地下的分布纵横交错,二维图形无法表现管线之间的空间关系。有些管线上下起伏,与地面垂直的一段管线在平面图上只能以一个点与相应注记来表示,视觉效果不直观。因此,在国内外竞相研制三维数码城市、三维数字小区的氛围下,研究三维管线成为必然趋势。
尽管MAPINFO和ARC/INFO提供了简单物体的三维显示,但对现实世界的复杂三维关系不能详细描述与分析,更没有提供面向三维管线的建模工具。中地公司的管线信息系统具有管线的真三维图形显示漫游和局部简单查询,缺乏对三维管线的拓扑分析。VRMap是北京灵图公司自主开发的三维GIS软件系列产品,它对三维管线管理也作了一定的研究。迄今国内还没有文章详尽阐述三维管线建模与相关空间分析。国外学者Bürger[3]与ERMES[1] 以 近景摄影测量(close-range photogrammetry)技术与结构实体法CSG(Constructive Solid Geometry)可以重建3D管线模型。他们的研究对于显示化学工厂等地上错综复杂的管线很有效,但是,难以重建地下管线,且没有涉及大范围的管线管理。高速发展的现代化城市,其地下管线数据数量庞大、种类繁多,建立合理而有效的三维管线数据库是管线系统运行稳定和高效的保障。
管线有地上的、半地上的结构,但大多位于地下,目前,地下管线多数以圆形管线为主。因此,本文主要介绍地下圆形管线的数据组织与三维可视化。文章将从以下几个方面进行阐述。首先,介绍管线数据模型和组织方式;其次介绍如何建立三维管线模型,提出模型的分段渐次推算方法;然后简要介绍对管线的编辑、查询、分析操作,其中遇到的问题及解决方案。最后介绍基于Visual C++和OpengGL技术所开发的系统与一些实验结果。
2、管线数据组织
2.1 数据模型
目前,商用地理信息系统的数据模型主要采用拓扑关系模型和空间实体模型。拓扑关系模型主要采用POLYVRT结构,记录的是链(弧段)信息,不同的对象可以共用相同的结点,节省存储空间,但是结构比较复杂,数据的编辑和维护比较困难。而空间实体模型虽然会造成公共结点的重复存储,但是其结构化的实体模型使得对某个对象的更改不会影响到其它对象的定义,从而大大增强了空间数据的可维护性。针对管线数据的特殊性,结合上述两种模型的优点,作者提出一种管线数据层次模型(见图1)及相应的索引方式,既节省了存储空间,又便于数据的编辑和维护。

图1 管线数据层次模型
Fig.1 The Layer Model of pipeline data
图1中,将城市地下管线分为以下七大类:给水、排水、燃气、热力、工业、电力和电信管线[5]。各大类还可以细分,如给水管线包括工业给水、生活给水和消防给水管线;排水管线包括污水和雨水管线。管线的几何基本数据可归纳为管线端点、结合点、变径点与附属设施特征点,此后统称为管点数据。管线形状多为树枝状、环状或辐射状,每一条管线可以根据交叉点和变径点分解成若干条管线段,交叉点处模拟现实情况,以三通、四通、阀门或变径接头等附属设施相连接,管线段是由相应管点数据的连接,组成一条不间断的管线段。因此,每一条管线可以抽象为由管线段和附属设施组成。
2.2 数据结构
管线按其数据类型划分为不同管网层,如给水管网层、排水管网层、燃气管网层等,这种方法符合实际情况,便于按各类管线的管理部门进行资料收集、建库和分层管理,每一类管线的数据存储类型略有区别,但数据结构基本相同。管网层内的管线可以细分,存储时以不同类型码和颜色表示。基于管线数据层次模型,管线数据结构近似为树形结构,如图1,叶结点有所合并,有利于节省存储空间。树中所有结点的数据以表或文件的形式存储,同一结点的空间数据和属性数据分开存储。每种管线的管点平面坐标、埋深、颜色、半径等为空间数据,它是管线建模与三维显示的基本信息。管材、受控阀门、建埋时间、所属街道等为属性数据,存储在关系数据库的若干属性表中,为查询、检索等操作提供详尽的数据库信息。两种数据通过一个公共标识符连接起来。若是大范围的管线数据,图层可以划分为若干图幅进行存储与索引。属性数据用现在流行的关系数据库SQL-Server来管理,主要的空间数据文件结构如下所示。
管网层空间数据文件结构:
|
管网层标识符 |
包含的管线数目 |
包含的管线标识符 |
管线空间数据文件结构:
|
细分类 型码 |
颜色 |
包含的管线段数目 |
包含的管线段标识符 |
包含的附属设施数目 |
包含的附属设施标识符 |
管线段空间数据文件结构:
|
管线段标识符 |
包含的管点数目 |
包含的管点标识符序列(依次序存储) |
管径 |
附属设施空间数据文件结构:
|
附属设施标识符 |
附属设施类型码 |
包含的管点标识符 |
颜色 |
管点空间数据文件结构:
|
管点标识符 |
特征点类型码 |
x |
y |
地面高 |
管顶高 |
管底高 |
这些数据文件的索引是多级索引,索引结构同数据结构一致,是树形结构,限于篇幅,此处以介绍索引某条管线为例。从该条管线的空间数据文件中获取包含的管线段标识符和附属设施标识符,由这些标识符分别索引管线段空间数据文件和附属设施空间数据文件,得到每条管线段和附属设施包含的管点标识符,由这些管点标识符索引管点空间数据文件,就可获得该条管线的基本空间数据。这些基本数据是管线三维建模的起算数据。
3、三维管线建模
在获得管线基本数据的基础上,通过对管点空间数据文件进行处理,由地面高、管顶高、管底高可以求得每个管点的绝对高程z,加上平面坐标(x、y),构成管线中心线的节点坐标。该坐标和管径为管线的起算数据。
3.1 三维管线模型构造
3.1.1 管线的表面微分处理
在管线平面图中,管线对象一般以管线中心线来表示,一段管线在图上显示为一条直线;而在管线三维透视图中,一段管线可以用圆柱面表示,圆柱面的轴心即为管线中心线,圆柱面的截面半径为管线在截面处的半径。为了构造管线三维图形,我们采用将管线表面分段构造成众多四边形的办法来实现,如图2所示。实验表明,管线表面等分地越细,模拟管线在直观上就越接近真实管线,但模型的计算量增大,电脑显示速度会降低;反之,模拟管线比较粗糙,电脑显示速度较快。当管线表面等分为八个四边形,显示真实性与显示速度能取得较好的平衡。

图2 管线表面微分示意图
Fig.2 The map of partition of pipe’s Surface
3.1.2 管线衔接处圆滑处理
在管线平面图中,一般以二维折线表示一条管线段。在三维透视图中,圆柱面的首尾衔接构成虚拟管线段。为使虚拟管线形象逼真,又不影响系统运行速度,故将管线衔接处圆滑过渡,其实现方式为:将管线中心线的拐角以圆弧替代,弧线弧度等于相邻线段的夹角弧度,圆弧所在圆的半径等于管径。将圆滑处理后的管线中心线分段处理,如图3所示。拐角圆弧的细分程度由圆弧弧度大小决定。图3中的数字表示管线中心线的分段节点编号。

图3 管线衔接处圆滑处理示意图
Fig.3 The map of smoothness handling of pipeline
将每段管线以圆柱面模拟,拐弯处为斜圆柱面,其计算方法在3.2节中详细介绍。将所有圆柱面首尾相接,在三维场景中设置光照,则虚拟管线在视觉上与真实管线非常接近。如图4所示。

图4 管线段虚拟显示
Fig.4 Simulation display of pipeline section
3.1.3 管线段的连接
管线段的连接处一般为管线分叉或管径变化部位,在现实情况中,由三通、阀门、变径接头等附属设施相连接。因此在系统中,作者把它们抽象建模,实现虚拟附属设施,作为立体符号存储在数据库中,显示时根据管线的空间走向,调整附属设施角度,使它们与管线紧密结合。如图5所示。

图5 管线段的连接
Fig.5 The map of connection of pipeline sections
3.2 管线模型计算
任意一条管线由众多四边形拼接组成,管线的视觉效果好坏决定于四边形顶点是否共面,以及四边形是否无缝连接。因此,作者提出一种简单有效的分段推算模型计算方法。该方法是先计算起始节点处管线边缘的八个顶点,然后依次推算其余分段点处管线边缘的各个顶点。
3.2.1 管线起始处各个顶点的计算
由管线中心线的起始两个节点的空间坐标,能够确定管线中心线在空间的方向。假定三维笛卡儿坐标系O-XYZ称为固定坐标系,参考坐标系o-xyz定义为原点与起始节点相重合,z轴与管线中心线的第一段相重合,x轴方向规定为与固定坐标系的某个轴平行,如图6所示。

图6 管线边缘顶点坐标转换
Fig.6 Coordinate conversion of vertexes on the brim of pipe
参考坐标系经过旋转平移可以得到固定坐标系,从空间解析几何可知,管线边缘任意顶点a在参考坐标系与固定坐标系中的坐标关系式为:
(1)
写成矩阵形式为
(2)
式(2)坐标变换公式中,(x0, y0, z0)表示参考坐标系原点在固定坐标系中的坐标,九个系数为两轴系间的方向余弦,即
(3)
式(3)中cosXx表示X与x轴之间的方向余弦,cosXy表示X与y轴之间的方向余弦,以此类推。方向余弦是相关两轴之间夹角的余弦,这些夹角在0o与180o之间。管线起始点处边缘各个顶点在参考坐标系中的坐标容易得到;轴系间的夹角已经确定,运用初等函数的知识即可得到式(3)中的九个系数参数;平移量(x0, y0, z0)就是管线中心线起始点的三维坐标。将它们代入公式(1)中就可以得到管线起始点处边缘各个顶点在固定坐标系中的坐标,即真实的三维坐标。
3.2.2 推算管线中心线其余分段点处管线边缘的顶点坐标
首先,由管线起算数据,通过一定的代数运算,求解图3中的圆弧中心O1, O2 ,O3的空间坐标。其次,分别求解管线中心线的分段节点1至节点15的空间坐标。然后,依次推算分段点处的管线边缘顶点坐标,有两种情况:一种是直管,如图3中的分段点1-2、6-7;一种是弯管,如图3中的分段点2-3、7-8等。对于直管,如图7(a),上一分段点(如起始点1)处管线边缘各个顶点坐标(xi,yi,zi)如果已经得到,则推算下一分段点(如分段点2)处管线边缘各个顶点坐标(x,y,z),就相当于已知矩形三个顶点,求第四个顶点,很容易求得。对于弯管,如图7(b),分段点2处管线边缘各个顶点坐标(xi,yi,zi)已经得到,那么,推算分段点3处管线边缘各个顶点坐标(x,y,z),就相当于已知等边梯形的三个顶点的空间坐标,则第四个顶点的空间坐标也可以确定。依次类推,所有分段点处管线边缘的顶点坐标都可以得到,然后将这些顶点构造成四边形,如图7(a)中的四边形abcd。所有四边形的拼接即组成一条管线段。该算法的优点是实现了管线线段的无缝连接,管线不会出现扭曲;算法与图形显示技术分离,任何能实现四边形绘制的图形编程语言都能够运用该算法来显示虚拟管线。

(a) (b)
图7 管线边缘顶点坐标的推算
Fig.7 Calculation of the vertexes’ coordination on the brim of pipe
4、交互操作
4.1 编辑管线
由于每一条管线被分解成一个个单一管线段来显示与存储,因此用户对管线的添加与删除等编辑操作变得简单易行。添加管线时,用户只需输入各个管线段的起止节点和中间节点的空间坐标、颜色和半径,系统自动建立并显示虚拟管线,并且查找数据库,通过空间分析确定它们与现存管线之间的拓扑关系,有连接关系的管线会按照用户指定的管件或系统缺省的管件相匹配连接。删除管线时,用户可以用鼠标选取并删除整个管线段或通过输入起止节点删除管线段的一部分。
4.2 管线的查询与分析
与平面查询相似,管线的3D空间查询可以实现从图形到属性的查询和从属性到图形的查询,还可以实现对管线的分析,如纵横断面分析、爆管分析、安全间距分析。在某些查询与分析的操作中,要用鼠标选取三维场景中的管线对象。由于多数管线有分支管线段,如何才能准确地选取管线呢?
地下管线一般被地面与建筑物所覆盖,去掉地面层与建筑物层后,鼠标便可以直接选中虚拟地下管线的表面,将捕捉到的点的窗口坐标转换为实际空间坐标,则可以确定某条管线段被选中。通过搜索管线段空间数据文件,可以获得该条管线段所在的管网层和管线段标识符,由管线段标识符索引管线空间数据文件,得到管线段所在管线的标识符,从而确定哪一条管线被选取。这是对空间数据文件的逆向索引过程。
5、实 验
采用上述管线数据组织与建模方法,运用Visual C++和OpenGL开发工具,作者开发了三维管线系统,如图9所示。该系统主要对地下管线进行三维重建和显示,对地上主要建筑物以简单的模型与三维文字来表示,地面显示为半透明,增加地下管线的可见度。用户可以控制鼠标和键盘,在三维场景中任意漫游、也可以选择路径漫游,并随时提供对管线对象和建筑物对象的查询和分析。对于系统的管理员来说,还可以作增加、删除管线等编辑操作。

图9 地下管线效果图
Fig.9 the 3D representation of pipeline
6 结 论
1) 本文所建立的三维地下管线系统采用的是层次数据模型和存储结构,既节省了存储空间,又便于数据的编辑与维护。
2) 作者提出的分段推算模型计算方法,与图形显示技术无关,任何能实现四边形绘制的图形编程语言都能够运用该算法来显示虚拟管线。
3) 附属设施多种多样,且大小规格各异。因此,建立虚拟附属设施立体符号库的工作很繁琐。若针对每种设施仅设立统一的立体符号,则不能体现附属设施的多样性。并且,虚拟附属设施的逼真与精确会影响系统的运行性能。因此,这个问题还有待于进一步研究。
4) 考虑到圆形管线的普遍性,本文主要对该种管线的数据存储和三维建模与可视化进行了研究与实现,至于其他形状的管线三维可视化,有待进一步研究。对于地上管线,文中有关数据组织方法和三维建模理论仍可适用,但对于化学工厂车间内等小范围极其复杂的管线三维显示有待改进。
参考文献
[1] Ermes P. Constraints in CAD Models for Reverse Engineering Using Photogrammetry. The 19th Congress of the International Society for Photogrammetry and Remote Sension(ISPRS), Amsterdam, 2000.
[2] Frank A.VAN DEN HEUVEL. Trends in CAD-based Photogrammetric Measurment, The 19th Congress of the International Society for Photogrammetry and Remote Sension(ISPRS), Amsterdam, 2000.
[3] Bürger T, Busch W. Using Knowledge about Shape and Position of Plant Elements in Photogrammetric As-Built-Documentation. The 19th Congress of the International Society for Photogrammetry and Remote Sension(ISPRS), Amsterdam, 2000.
[4] 崔炳光,孙护,朱肇光. 摄影测量学. 北京:测绘出版社,1984
[5] 田应中,张正禄,杨旭. 地下管线网探测与信息管理. 北京:测绘出版社,1997
[6] 于海龙,王侬,谢刚生. 基于MapInfo的城市地下管网拓扑结构生成方法的研究. 江苏地质 . 2001,1:37~39
[7] 殷人昆,陶永雷,谢若阳,盛绚华. 数据结构. 北京:清华大学出版社,1999
[8] 李响,李满春,余有胜,易虹. 一个实用的城市地下管网GIS数据结构. 遥感信息 1999,3:15~18






