阮明,谭庆涛,王文瑞
(南宁市勘测院,广西 南宁 530001)
近年来,随着计算机技术的飞速发展,三维地理信息系统正在迅速进入大众的视野。三维地图具有虚拟现实表现的高度真实感,其在城市基础设施管理、城市规划、城市公共安全、城市开发决策支持、污染分布仿真和土木工程等众多领域中显示出了巨大的应用潜力,已经成为普遍关注的热点产品。然而,基于B/S的三维地图在发布效率、数据处理、网络传输等方面具有较大的技术难度,且成本较高。因此,以“E都市”、“都市圈”为代表的2.5维地图网站脱颖而出,既解决了网络发布的技术难题,也满足了三维仿真的高真实感。在制作2.5维地图的过程中,实现二维地图到2.5维地图的坐标转换是关键环节,本文将论述采用坐标旋转的方法实现二维地图到2.5维地图的坐标匹配,并通过编程实现批量数据的多视觉角度投影变换。
2.5维地图是将三维模型按照一定投影规则映射到平面上,以展示三维模型效果的二维地图,它的制作过程是在3ds Max中构建三维模型,然后按某一用户视图视角渲染出图,并进行后期拼接。
3ds Max渲染包括两种投影:平行投影(正交投影)和透视投影。在真三维地图中,一般采用透视投影,其视觉效果较为真实,但在2.5维地图渲染时,采用透视投影将会造成变形,离相机中心越远的地方变形越大,因此不宜采用这种投影方式。在平行投影中,图形沿平行线变换到投影面上,保持各点的变化一致,因此,选择平行投影。
在3ds Max中,根据渲染相机的位置,主要有两种投影:正视投影和轴测投影。正视投影指的是投影面与某一坐标轴垂直,包括了正南、正东、正西和正北;轴测投影指的是投影面不与任何坐标轴垂直,包括了东南轴测、东北轴测、西北轴测和西南轴测。当投影方向与某一坐标轴的夹角为0°时即为正视投影,而当投影方向与任一坐标轴的夹角都不为0°时即为轴测投影。
用户视图的高度角指的是渲染相机的投影方向与投影面的夹角,其取值范围在0°到正负90°之间。
用户视图角度决定了相机的投影方向,包括三个角度,为了保证出图效果是正平行投影而不是斜平行投影,我们在制作2.5维地图时只旋转两个方向的角度,一个是高度角,一个是水平角,而相机本身不旋转。
根据以上2.5维地图投影的定义,改变渲染三维模型的用户视图视角,也就是改变投影面的位置。反过来,如果我们假设投影面固定,对三维模型在不同用户视图视角的投影,其实就是对模型在不同方向旋转某一角度后,投影在固定投影面上的图形。因此,要实现二维数据到2.5维地图的坐标转换,就是要推导出不同方向时的物体坐标旋转公式。
以东南等轴测45°高度角的投影方向为例。在空间直角坐标系中,假设以oxy平面为投影面,东南等轴测45°高度角的投影方向即是物体平行于oxy平面(绕z轴)旋转45°,再平行于 ozy平面(绕 x轴)旋转45°后,在oxy平面上的投影值。
由于在oxy面上的投影值即是物体的x和y值,因此不要考虑z值。
根据二维平面的坐标旋转公式:
(x,y):旋转前的坐标;(x',y'):旋转后的坐标;θ:旋转的角度。
得,旋转两个方向后在oxy平面上的投影值:
(x,y):旋转前的坐标;(x',y'):旋转后的坐标;θz:绕z轴旋转的角度;θx:绕x轴旋转的角度。
公式中的旋转角度以逆时针为正,顺时针为负。
以制作南宁市140 km22.5维地图为例,在实际制作过程中,由于范围较大,采用分幅制作后期合成的方法。南宁市二维地图采用的是1954年北京坐标系,140 km2范围共分为60幅图。首先要对分幅图进行坐标转换,由于南宁市采用的1954年北京坐标系中X、Y值较大,不方便在3ds Max和Photoshop软件中进行操作,因此需要对坐标变换后的分幅图进行归零,即平移坐标,把分幅图中心置于坐标原点(0,0)处,在完成渲染出图和拼接后,再根据平移关系将分幅图转换到1954年北京坐标系上。具体制作过程如下:
(1)选定分幅图中心点坐标;
(2)平移坐标系,将分幅图中心点置于坐标系原点;
(3)确定2.5维地图的用户视图视角,即两个方向的角度,水平角和高度角;
(4)运用坐标旋转公式,根据确定的水平角和高度角,将分幅图各点坐标换算到最终2.5维地图的投影上;
(5)根据分幅图进行2.5维地图拼接;
(6)平移坐标系,将分幅图中心换算到原始的1954年北京坐标系上;
(7)将2.5维地图平移到1954年北京坐标系下。
以上步骤完成了二维分幅图在1954年北京坐标系下到2.5维地图的投影变换。可以将该步骤和公式用C#语言实现其他二维数据在1954年北京坐标系下到2.5维地图的多视觉角度的投影变换。程序代码如下:
x1,y1:为转换点X值和Y值;dx,dy:为坐标系原点平移X值和Y值;azD为绕Z轴旋转角度,单位为度;axD为绕X轴旋转角度,单位为度;x2,y2:为目标点X值和Y值。
根据以上程序,可以实现二维数据到2.5维地图多视觉角度的投影变换,图1~图6展示了各种方向和角度的投影变化效果。
图1 原始坐标分幅图
图2 正南俯视45°投影后的分幅图
图3 东南俯视60°投影后的分幅图
图4 东南俯视45°投影后的分幅图
图5 正南俯视45°投影后的2.5维地图
图6 东南俯视45°投影后的2.5维地图
2.5 维地图作为从二维地图到三维地图的一种过渡产品,具有数据结构简单、真实感强等特点,既可以在网络环境下作为电子地图发布,又可以制作成地图打印,是现阶段较好的一种地理信息产品,具有广泛的使用前景。2.5维地图的生产和使用,离不开各种二维的专题数据的叠加,而本文就提供了一种在生产2.5维地图过程中所要面临的坐标转换的关键技术的实现方法,运用该方法可通过编程、实现任意方向和角度的投影变换,为制作地图和开发基于B/S的三维仿真地理信息系统提供了数学和坐标基础。
[1]付蔚霞,梁寒冬.浅谈宁波三维仿真地图的建设[J].城市勘测,2011(2)
[2]宋珉,刘鹏超,赵维等.2.5维地图制作算法研究与实现[J].城市勘测,2010(5)
[3]Donald Hearn.计算机图形学[M].北京:电子工业出版社,2005
[4]龚健雅,杜道生,李清泉等.当代地理信息技术[M].北京:科学出版社,2004
[5]刘新,李成名,刘文宝.3DGIS中方向关系定性推理规律研究[J].测绘科学,2009,34(2)
[6]张竞,王结臣.一种便捷的城市三维景观可视化方法[J].测绘科学,2009,34(4)
[7]谭仁春.三维城市建模的研究现状综述[J].城市勘测,2007(3):42~46