随着计算机、摄影测量与遥感、数据库、虚拟现实及其相关技术的飞速发展,快速获取海量空间信息得以实现,这为构建三维城市提供了较好的数据基础。道路模型作为三维城市组成要素之一,无论在城市规划、市政管理、公共交通,还是在环境保护、土地管理、资源调查等方面,都是重要的支撑信息。
目前三维道路模型的构建以传统建模软件同GIS软件相结合的形式为主。三维建模软件如3DS Max、Multigen Creator等,接收来自GIS软件处理加工后的矢量数据,进行模型绘制和渲染,生成真实感强、准确性高的三维道路场景。这种组合建模方式耗时较长,手工制作过程复杂冗长,针对道路及附属交叉口的处理只能达到三维可视化的效果,无法对其进行有效的分析[1]。另一种形式则采用三维符号化建模技术,将具有道路特征的地物类抽取出三维形体特征,建立道路的简化模型,通过改变道路相关参数来描述各种可能的情况,实现对城市道路的统一化描述和表达[2]。尽管它提高了建模的效率,适应空间分析要求,但涉及道路交叉口的处理尚没有一个较好的解决方案。文献[3]采用Vega虚拟现实技术生成了符合特定地理环境下的三维道路模型,但针对多条道路交叉进行建模时还需一一建立交叉口模型,手动匹配达到近似真实的道路场景,这些都无法有效地满足城市决策者对道路规划的深入需求。由此可见,如何解决多条道路交叉时相应路口的快速检测与生成,是三维道路自动建模面临的难题之一。
针对上述难题,本文提出了一种三维道路交叉口自动检测与建模方法,流程大致可分为几个步骤:首先采用包围盒矩形检测技术[4,5,6]获取道路交叉区域,将此区域附近的道路节点打断[6];然后,根据交叉口控制点的特征,判断道路交叉区域所属类型;最后,结合计算机图形学知识,采用OSG三维渲染引擎实现完整、精确、高仿真的道路交叉口建模。
2 交叉口的自动检测城市道路交叉口是城市道路网的交汇点,是行人、车辆的汇合、转向、分流的地方,也是道路网灵活性的关键所在。道路交叉口可分为平面交叉口和立体交叉口两类,而本文主要围绕平面交叉中的三叉型、四叉型、环岛型交叉口以及立体交叉中的分离式立体交叉口展开研究,可通过道路间在不同维度的拓扑关系对其所属大类进行结构化识别[7,8]。如图 1所示,道路AC和道路BD在三维空间中没有交点,忽略Z轴方向上,道路BD在二维平面内的投影B′D′和道路AC却有一个交点O,则可判断出道路AC与道路BD在三维场景中是立体交叉关系;如图 2所示,道路AD和道路BC在三维空间中存在交点O,则可判断出道路AD与道路BC在三维场景中是平面交叉关系。
基于道路规划中针对平面交叉路口的设计规范,结合点O与道路首尾点在三维空间中的关系判断该交叉口所属平面交叉具体类型,具体步骤如下:
(1) 如果有两条道路段相交,求得这两条道路首尾点以及交点的坐标,如果此交点与前一路段的尾点、后一路段的首点同时重合,则此交叉路口为弯道。
(2) 如果有两条路段相交,求得这两条路段首尾点以及交点的坐标,如果此交点仅与前一路段的首点或者尾点重合(此交点仅与后一路段的首点或者其尾点重合),则此交叉路口为三叉型交叉口,再根据各岔路的方向向量确定是T型交叉口还是R型交叉口。
(3) 如果有两条路段相交,求得这两条路段首尾点以及交点的坐标,不满足步骤(1)和(2)则此交叉路口为四叉型交叉口。
(4) 如果有3条路段相交,求得这3条路段首尾点以及交点的坐标,如果每条路段的首点或者尾点均与交点重合,则此交叉路口为Y型交叉口。
3 常见交叉口的自动建模 3.1 四叉型交叉口四叉型交叉口是指在交叉处有4条支路,没有交通岛,为分道转弯式交叉口的一种[9]。经过上述交叉口检测过程后,如果判断此交叉路口为四叉型路口,则对道路交汇点进行标记存储后,开始四叉口的自动建模:
(1) 首先,获取两路段的交点O,分别将其与每条路段的首尾点相连,提取路段原始中心线;根据交点O、道路宽度等参数,采用包围盒矩形判断法,提取中重合区域的轮廓,计算可得该轮廓的最长边l。
(2) 由交点O出发,沿着各路段方向向量上缩小指定距离,可得到交叉路口的4个控制点,即B点、E点、H点和K点。将控制点分别与该岔路尾点相连,形成如图 4中所示的4条新道路中心线[10]。其中,缩小距离可选取1.5~2倍的l(经验值)。
(3) 沿着各岔路的方向向量的垂直方向,以控制点为中心,以道路宽度为平移距离,计算出各路段两侧控制点,如图 5中控制点B对着点C和点A,控制点E对应着点D和点F,控制点H对着点G和点I,控制点K对着点J和点L。
(4) 新建一个点数组CrossingArray,按逆时针顺序依次存入图 6中的点B、点C;以点C和点D作为首尾两个点,中心点O为曲线拐弯参考点,通过二阶贝塞尔获得点C、点D之间的弧线段,并将此弧线段上的点依次存入点数组CrossingArray;如图 7所示,将剩余的点E存入点数组CrossingArray中,交叉口1/4部分的轮廓点已经完成,其余部分依次类推。
(5) 当点数组CrossingArray中存储满交叉口所有的轮廓点后,设置点O为绘制中心,应用OSG绘制多边形的方式之一,即osg::PrimitiveSet::TRIANGLE_FAN来绘制多个三角扇形,如图 8所示,通过这种方式填充整个多边形,最终形成三维场景中的四叉型交叉口[11]。
3.2 三叉型交叉口
三叉型交叉口主要包括R字型交叉口和T字型交叉口。建模原理上大体与四叉型交叉口一致,唯一需要注意的是,各自所含弧段数的不同。如图 9、图 10所示,R字型交叉口和T字型交叉口均只含有两条弧段。
交叉口建模的过程中,往往还需创建一些道路附属设施。无论是三叉型路口还是四叉型路口,正如图中10中的红绿灯,它会根据路口各岔路的情况,进行自适应的旋转调节,更好地贴近真实道路。具体步骤:由于红绿灯属于三维点符号模型,诸如红绿灯支柱的高度、纹理贴图以及各个方向灯的大小等参数均可调节,首先手动设置模型的初始姿态,将其初始坐标置零;OSG中的矩阵变换节点MatrixTransform可对加载至三维场景中的红绿灯模型进行空间变换,其类函数makeTranslate()将红绿灯模型平移到交叉口中心位置,再根据各岔路的方向向量求得道路间夹角度数,运用类函数makeRotate()将红绿灯上各个方向灯沿Z轴方向旋转调整,当旋转至与各自所在岔路成垂直方向后,红绿灯建模完成。
3.3 环岛型交叉口三叉环交叉口是指在交叉处有3条支路且设有交通岛[9]。经过上述交叉口检测过程后,如果判断此交叉路口为三叉环型路口,则对道路交汇点进行标记存储后,开始三叉环的自动建模:
(1) 首先,获取3条路段的交点O,分别将其与每条路段的首尾点相连,如图 11所示,提取道路原始中心线。
(2) 根据交点O、道路宽度等参数,采用包围盒矩形判断法,提取重合区域的轮廓,计算可得该轮廓的最长边l。
(3) 由交点O出发,沿着各自路段方向向量上缩小指定距离,可得到交叉路口的3个控制点,即图 12中的A点、B点和C点。将控制点分别与该岔路尾点相连,形成3条新的道路中心线。其中,缩小距离可选取1.5~2倍的l(经验值)。
(4) 针对图 13中每个控制点,根据用户指定的路宽以及各条岔路的方向向量,计算出以控制点为中心的路两侧点,如图 14所示,控制点A对着点D和点I,控制点B对应着点E和点F,控制点C对着点G和点H;然后,建立点数组R按逆时针顺序依次存入点A、点D;以点D和点E作为首尾两个点,中心点O为曲线拐弯参考点,通过二阶贝塞尔获得点D、点E之间的弧线段,并将此弧线段上的点依次存入点数组R;接着,将剩余的点B存入数组R中,三叉环轮廓的1/3已经完成,其余部分依次类推。
(5) 根据用户设置的半径长度,获取以点O为圆心的中心岛轮廓点,并将它们从数组R的尾端插入(如图 15所示)。
(6) 设点O为绘制中心,应用OSG绘制多边形的方式之一的TRIANGLE_FAN来绘制多个三角扇形进行填充,并通过osgUtil::Tessellator实现这种自交叉多边形的分格化处理。
(7) 针对空出的中心岛区域,用户可针对不同需求更换道路模板,符号化生成草坪、花坛、路标以及喷水池等道路附属设施[12],如图 16所示,最终形成一个完整的三叉型环岛交叉口。
3.4 分离式立体交叉口分离式立体交叉按其形式不同,可分为隧道式和路跨式两种。分离式立体交叉的上、下公路没有交换道路(匝道)连接,车辆不能互相转换,但它占地少、结构简单,且造价较低。
常见的碰撞检测方法[13]可以实现道路与任意地形的自适应匹配,但无法适用于这种立体交叉关系的道路。尤其是针对分离式立体交叉口,道路节点如何既能保持与地势起伏的匹配,又能根据拓扑关系分离存储实现立体交叉的效果,这是一个技术难点。譬如,图 17中所示道路与立交桥上的道路互为分离式立体交叉关系,其途经的立交桥是由上桥板、下桥板、电线层和桥墩组成的精细模型;图 18中所示高架桥间彼此交错延伸。以上两种情况的道路在与场景碰撞求交时,除了地面(或本层桥梁)上的交点外,检测线段往往会与分离的桥梁局部碰撞生成若干个交点(白球所示),使得道路数组无法准确选取正确的交点,无法生成与实际匹配的道路,道路突起或塌陷现象频发。
对于这种分离式立体交叉关系,可在碰撞检测的过程中,针对各个细化节点坐标,通过检测线段与场景求交,将此坐标点Z轴方向上获得的交点集进行条件拣选。首先将首尾两点间的高度差设为h,在碰撞检测的过程中,针对检测线段求得的N个交点集进行内部遍历,计算出各交点与首点、尾点的高度差h1和h2;比较上述3种类型的高度差,将h1和h2均小于h的交点提取并存储至最终的道路点数组中,通过三维符号化建模生成的最终道路。
具体建模流程为:
(1) 如图 19所示,点A和点B分别是道路AB的首点和尾点,点C0和点C1分别为道路AB的细化节点,基于点C0中x、y值的检测线段1与场景求交,获得一个交点C;基于点C1中x、y值的检测线段2与场景求交,获得两个交点D′和D。
(2) 针对检测线段1求得的交点集进行条件拣选:首先求得首尾点间的高度差值DAB,交点C与点A、点B间的高度差值DCA和DCB,由于DCA、DCB均小于DAB,且此交点集仅有一个交点,将此交点存储至新数组中,停止交点集内部遍历,进入下一检测线段处理。
(3) 针对检测线段2求得的交点集进行条件拣选:首先求得首尾点间的高度差值DAB,交点D′与点A、点B间的高度差值DD′A和DD′B,交点D与点A、点B间的高度差值DDA和DDB,接着分别比较DD′A、DD′B、DDA、DDB与DAB的大小关系,由于交点集含有多个交点,可知地面上方存在立体交叉建筑,而DD′A、DD′B均大于DAB,可判断D′点为突兀畸形点,将其剔除;DDB、DDA均小于DAB,将交点D存储至新数组中,停止交点集内部遍历,进入下一细化点的检测线段处理。
(4) 依次类推,最终得到由起点A、经检测处理的各个节点以及终点B组成的数组,三维符号化建模生成图 20所示的道路。
4 技术实现及成果分析 4.1 OSG的基本介绍OpenSceneGraph(OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OpenGL技术为图形元素(多边形、线、点等)和状态(光照、材质、阴影等)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。可以运行OSG的平台需要具备OpenGL的支持能力,以及C++的编译环境,支持OSG的系统包括Solaris、IRIX、Windows、Mac OSX等[14]。
目前,部分高性能的软件已经使用了OSG来渲染复杂的2D和3D场景。虽然大部分基于OSG的软件更适用于可视化设计和工业仿真,但是在使用3D图形的每个领域,都已经出现了OSG的身影。这其中包括了地理信息系统(GIS)、计算机辅助设计(CAD)、建模和数字内容创作(DCC)、数据库开发、虚拟现实、动画、游戏和娱乐业。
4.2 试验分析本试验从道路要素角度出发,兼顾地理信息空间数据处理以及三维符号库架构,采用目前主流的C++编程语言和独立于硬件的OSG图形渲染引擎开发了一个三维道路的快速构建工具。该工具将导入的shp数据进行诸如条件拣选、碰撞检测、交叉口检测等处理,获得最终的道路节点以及各个交叉口对应的控制点,将这些点的坐标同道路宽度、道路纹理等参数一同传入主函数生成所需道路[15],如图 21、图 22所示,除楼房建筑物需要精细建模外,道路及附属交叉口、绿化植被、红绿灯均可通过计算机自动生成。
结合国内外相关方面的研究进展[16, 17, 18],在此对本研究进行讨论分析。本研究特色有:① 在数据分析阶段,它支持道路节点选取的任意性,无须考虑每条道路在场景中的主方向,为后续道路交叉口检测与生成,乃至整个道路场景的构建奠定基础;② 道路场景中涉及的基础道路、道路交叉口及其附属设施均采用三维符号化技术进行自动建模,如图 21所示,无须人工3Dmax等软件进行干预,节省建模时间,提高工作效率;③ 本方法有效地解决一些复杂路段的交叉口建模,加快计算机处理速度,提升场景渲染及分析能力,如图 23、图 24中所示,密集的楼房群共有16个十字路口,从数据读入到建模完成只需要5s;④ 该方法所提供的道路内置函数中已加入与整个场景的碰撞检测,同时将每条道路的边界作为路基的约束条件,在一定程度上改变所途经的地形模型,当道路交叉口的各点不共面时,使其与地面起伏进行较好的自适应性匹配[19,20],避免造成如道路及其附属交叉口飘在空中或钻入地下等与客观事实不符的情况;⑤ 由于此方法生成的道路是以二维矢量数据为基础[21],针对一些道路分析功能,如空间量测、最短路径分析等都有较高的精确度,能够较好地避免人工操作过程中可能出现的误差;⑥ 与传统建模方式不同,此方法完全底层开发,道路参数可控性高,逼真感强,方便后期维护的工作。
5 结 论
通过试验验证,本文提出的道路交叉口自动检测与基于OSG的三维自动建模方法适用于不同参数形式、不同存储顺序的道路矢量数据导入,由数据判读与交叉区域获取、道路节点打断与控制点生成、交叉口类型识别与基于OSG建模三大环节构成整体流程,具有较好的稳健性,运算效率较高,无须人工干预。该方法的不足之处在于针对立体交叉口类型的研究还在摸索阶段,结合不同结构样式、不同精细程度的立交桥模型进行道路拓扑关系的识别和交叉口处理,是未来研究的重中之重。
具体来说,将围绕以下3个方面展开:其一,现实中立体交叉口种类繁多,后续研究将针对Y型立体交叉、喇叭形立体交叉和苜蓿叶型立体交叉的识别处理展开;其二,扩充中心环岛的建模样式,依托三维符号化技术封装成各种接口,通过参数化设置加入建模工具中,使未来的潜在用户能够全面地解决三维道路交叉口的建模与仿真;其三,针对各部门数据格式及属性列表的不同,如何扩展数据导入格式,简化数据分析流程,优化整体性能,真正实现大数据三维道路场景的一键式生产,为城市道路交通组织优化设计提供参考。
[1] | ZHU Guomin, MA Zhaoting, SUN Longxiang, et al. Research on Fast Construction Method of 3D Models in 3D UGIS[J]. Geography and Geo-Information Science,2007,23(4): 29-32. (朱国敏,马照亭,孙隆祥,等.城市三维地理信息系统中三维模型的快速构建方法[J].地理与地理信息科学,2007,23(4):29-32.) |
[2] | LI Junyi. A Research on Three-dimensional Map Symbols of Digital Map[D].Xi’an: Shaanxi Normal University, 2004. (李君轶.数字地图三维专题符号的研究[D].西安:陕西师范大学,2004.) |
[3] | WANG Jun, CAI Zhanhua, CHUAI Jinhua. Vega Technology and Its Application in Highway Traffic[J]. Journal of Computer Applications,2004,24(7): 62-64. (王俊,蔡占华,揣锦华.Vega 技术及其在公路交通中的应用[J].计算机应用,2004,24(7):62-64.) |
[4] | WANG Weifeng, TANG Xiaoan, XIE Yaohua. Automatic Detection and Modeling of Intersections in 3D Roads Model Based on GIS[J]. Computer Engineering and Design,2007,28(24): 6023-6025. (王卫峰,汤晓安,谢耀华.基于GIS的三维道路模型交叉口自动检测与建模[J].计算机工程与设计,2007,28(24):6023-6025.) |
[5] | LU Shouyi. Geographic Information System[M]. Beijing: Higher Education Press, 2004. (陆守一. 地理信息系统[M].北京:高等教育出版社,2004.) |
[6] | HAN Zhiheng, RUI Xiaoping, SONG Xianfeng, et al. An Efficient Algorithm to Construct Connectivity Topology for Road Network Using R-tree and B-tree Indexes[J]. Journal of Geo-Information Science, 2013, 15(4): 498-504. (撖志恒,芮小平,宋现峰,等.利用双重索引快速构建道路网络连通拓扑[J].地球信息科学学报,2013,15(4):498-504.) |
[7] | XU Zhu, MENG Yanzi, LI Zhilin, et al. Recognition of Structures of Typical Road Junctions Based on Directed Attributed Relational Graph[J].Acta Geodaetica et Cartographica Sinica, 2011,40(1): 125-131. (徐柱,蒙艳姿,李志林,等.基于有向属性关系图的典型道路交叉口结构识别方法[J].测绘学报,2011,40(1):125-131.) |
[8] | ZHU Zhuangsheng, WANG Qing, WAN Dejun. Road Network Model Based on Virtual Node Joint[J].Journal of Chinese Inertial Technology, 2008,16(4): 453-457. (朱庄生,王庆,万德钧.基于虚拟节点连接的道路网络模型[J].中国惯性技术学报,2008,16(4): 453-457.) |
[9] | MENG Yanzi. Structural Pattern Recognition and Simplification of Road Junctions[D].Chengdu: Southwest Jiaotong University, 2009. (蒙艳姿.道路交叉口的结构化识别与简化[D].成都:西南交通大学,2009.) |
[10] | LUAN Xuechen, YANG Bisheng, LI Qiuping. Pattern-based Node Matching Approach for Road Networks[J]. Acta Geodaetica et Cartographica Sinica, 2013, 42(4): 608-614. (栾学晨,杨必胜,李秋萍.基于结构模式的道路网节点匹配方法[J].测绘学报,2013,42(4): 608-614.) |
[11] | XIAO Peng. 3D Rendering of Engine Programming Guide with OpenSceneGraph[M]. Beijing: Tsinghua University Press,2010:2-3. (肖鹏.OpenSceneGraph三维渲染引擎编程指南[M].北京:清华大学出版社,2010:2-3.) |
[12] | XU Xianru, YU Chunli. The Research of Design on Ancillary Facilities of Road Landscape[J]. Journal of Nanjing Arts Institute, 2009, 5(35):143-147.(徐贤如,于春丽.道路景观附属设施设计初探[J].南京艺术学院学报,2009,5(35):143-147.) |
[13] | LIU Wei, CHEN Ning. Matching Degree between Tank’s Motion and Terrain Based on the Technology of Intersection Detective[J]. Journal of Jiangsu University of Science and Technology(Natural Science Edition),2012,26(4): 356-360. (刘炜,陈宁.基于碰撞检测的坦克运动与地形匹配性研究[J].江苏科技大学学报:自然科学版,2012,26(4):356-360.) |
[14] | WANG Rui, QIAN Xuelei. 3D Rendering of Engine Design and Practice with OpenSceneGraph[M]. Beijing: Tsinghua University Press, 2009:89-100. (王锐,钱学雷. OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009:89-100.) |
[15] | ZHENG Yanfei. Construction of 3D Visualization Lane-based Road Network Model[D].Shanghai: East China Normal University, 2010. (郑燕飞.构建基于车道的三维可视化道路网络模型[D].上海:华东师范大学,2010.) |
[16] | MATTEO V, SASCHA O. A Market-Inspired Approach for Intersection Management in Urban Road Traffic Networks[J]. The Journal of Artificial Intelligence Research, 2012, 43(4): 621-659. |
[17] | AMBROZ M,KRASNA S,PREBIL I. 3D Road Traffic Situation Simulation System[J]. Advances in Engineering Software, 2005,36(2): 77-86. |
[18] | LHUILLIER M. A Generic Error Model and Its Application to Automatic 3D Modeling of Scenes Using a Catadioptric Camera[J].International Journal of Computer Vision, 2011, 91(2):175-199. |
[19] | SUN Dihua, XIAO Feng, LIAO Xiaoyong, et al. Algorithm Based on Preprocessing for Constructing Topological Structure of Urban Road Network[J].Computer Engineering and Applications, 2008, 44(23): 233-235. (孙棣华,肖锋,廖孝勇,等.基于预处理的城市路网拓扑结构构建算法[J].计算机工程与应用,2008,44(23):233-235.) |
[20] | PU Hao, SONG Zhanfeng, ZHENG Shunyi, et al. Real-time Dynamic Display Technology of Road 3D Scene[J].Journal of Traffic and Transportation Engineering, 2003,3(1): 52-56. (蒲浩,宋占峰,郑顺义,等.道路三维场景的实时动态显示技术[J].交通运输工程学报,2003,3(1):52-56.) |
[21] | WANG Aiai, ZHANG Jin. Matching Method between Three-dimensional GIS Building and Road Solid Model and Relief Model[J]. Bulletin of Surveying and Mapping, 2012 (6): 84-86. (王爱爱,张锦.三维GIS建筑物和道路实体模型与地形模型匹配方法[J].测绘通报,2012(6):84-86.) |