多视角三维仿真数字城市实现方法
来源:第三维度
作者:任鹏 胡金星 马琪 袁永强 严国灿
摘 要 目前三维仿真城市只通过单一视角的三维仿真地图进行展示,针对单一视角因视线遮挡造成地理信息丢失的问题,本文提出了一种多视角的三维仿真城市地图方法,即通过多个可以互相切换的视角对三维仿真地图数据进行发布,多视角的三维仿真地图具有信息量大、色彩鲜明、形象立体的优点。本文在分析多视角三维仿真地图数据的基础上,给出了数据组织模型,提出了三维仿真地图的多视角局部坐标与地理坐标的转换方法,实现了多个视角的三维仿真地图的地图调用与发布。
1 引言
三维仿真城市作为一种新兴的地图服务形式,已经成为国内各大城市服务市民生活,展现城市魅力的重要手段。三维仿真城市以三维仿真地图、二维地图、遥感影像等数据形式对地理数据进行展示,提供了比较全面的地理信息和良好的用户体验。
三维仿真地图在城市真三维场景的基础上,以一个固定的视角生成的具有视觉立体效果的栅格地图数据,它吸收了传统的二维地图与真三维地图的优点,不但在地图的视觉效果方面具有真三维地图形象立体、色彩艳丽的特点,而且在地图性能方面与传统的二维地图相差不大,甚至完全满足大数据交互量的公众服务的需要。但目前的三维仿真城市地图只是从单一固定的视角进行地图数据的展示,而单一视角的三维仿真地图通过一个固定视角来观测城市地物,只有被观测地物正对观测视角的部分是可见的,而被观测地物背对观测视角的部分是不可见的,这样地物背面的形状与纹理信息就会丢失。此外,城市是一个地理环境相对复杂的系统,地形高低起伏、 城市建筑错落有致,以单一视角三维仿真地图的形式进行可视化展示,绝对高度高的地物对绝对高度低的地物不可避免的会产生视觉遮挡,直接导致了大量的地理位置信息、地物形状信息与拓扑信息的丢失。综上所述,单一视角的三维仿真地图大大限制了三维仿真地图的信息表量。
针对上述问题,本文提出了一种多视角的三维仿真城市地图解决方案,通过不同视角的三维仿真地图对同一区域的地理数据进行展示,并实现不同视角的三维仿真地图之间的快速切换,进而有效地减少地物的不可见部分,进一步提高了三维仿真城市的地理信息量,丰富了三维仿真地图的展示手段。
2 多视角三维仿真城市的地图数据管理
2.1 数据组成
多视角三维仿真城市的地图数据由多个视角的三维仿真地图、二维地图与高分辨率遥感影像组成。多视角三维仿真城市的二维地图采用标准的数字栅格地图DRG(Digital Raster Graphic),数字栅格地图是在纸质地图的基础上经过扫描、图像处理与几何纠正纠正得到,在数字栅格图制作时就已经对地图进行了图幅定向处理,二维栅格地图扫描坐标与地理坐标是精确匹配的。
遥感影像主要来源于航空拍摄,拍摄过程中由于摄影高度、角度等问题,会存在一定的数据误差,使用GIS软件将遥感影像与参考地图进行坐标校准,使遥感影像的坐标配准到地理坐标系上,遥感影像与地理坐标也是精确匹配的。
城市三维仿真地图是在城市真三维场景的基础上,从某一个既定的视角,在平行光投影条件下渲染得到的。多个视角的城市三维仿真地图基于同一个真三维场景,分别采用不同的视角渲染生成的,可以认为是对城市三维场景在不同视角的观测视图。三维仿真地图在本质上是栅格地图,而且由于倾斜视角、视点高度等问题,三维仿真地图是存在地理形变的。但倾斜视角增强了三维仿真地图的立体感,有利于地图的可视化,因此不能通过简单的几何纠正来消除倾斜视角带来的形变。
针对多视角三维仿真城市具有数据种类繁多、数据量大的特点,必须建立与之相应的数据组织模型,进行有效地数据组织管理。
2.2 数据组织
金字塔模型是一种典型的多比例尺分层数据结构,是管理多比例尺地图数据的一种有效的数据组织模型。但多个视角的三维仿真地图数据类型较多,不同类型的地图数据之间相对独立,因此必须针对不同的数据类型,分别建立金字塔结构,金字塔与金字塔之间是平行的,最终形成一系列的金字塔,并对这一系列的金字塔采用一套统一的数据编码。这里把一系列采用统一编码,相互关联的又相对独立的金字塔模型称为金字塔群组,金字塔群组是适合多视角三维仿真城市地图数据组织的数据结构。
金字塔群组的建立首先要建立群组内的各个子金字塔,多视角三维仿真城市的每种地图类型对应一个子金字塔结构,不同视角的三维仿真地图也视为不同的地图类型。建立地图瓦片金字塔必须对原始的地图数据进行处理,包括对地图数据的分层与分块。
把原始的地图数据作为金字塔的底层,采用自底向上的方式建立地图金字塔。按照2的倍数逐层缩小,对地图数据进行重采样,生成高层地图数据,金字塔不同层的地图数据对应不同的比例尺,越是高层的地图数据的比例尺越小。地图分层完成后,需要将不同层的地图数据瓦片化。考虑到金字塔的性能因素,这里把256像素 256像素作为瓦片的基准大小,采用地图分割工具对每一层地图统一进行分割。
为了方便地图数据的统一组织管理,金字塔群组内地图瓦片的编码方式采用前缀加数字编码加后缀的方式,编码各部分之间以“-”分割。其中前缀标示地图瓦片的数据类型,如“RS”前缀代表该地图瓦片为遥感影像,而“2D”与“3D”分别代表地图瓦片的数据类型为二维地图与三维仿真地图。编码的数字部分为该瓦片所在子金字塔中的顺序编码值,数字编码从子金字塔的第0层开始按图层顺序编码直到最后一层。每一层的编码方式相同,从左上角作为起始瓦片,按照自左至右的顺序依次编码,直到该层瓦片全部被编码。中间图层左上角瓦片的编码紧接上一层右下角瓦片的编码。为了适应地图数据,地图瓦片金字塔的形状不一定是规则的正方形,可以是任意矩阵

式中:n为金字塔图层序号(从第0层起算);rowID与columnID分别为地图瓦片在金字塔在第n层中的行号与列号;TotalRow与TotalColumn为金字塔第0层瓦片的总行数与总列数,为常数。

图1 不规则地图金字塔的分层与编码
如果该地图瓦片为三维仿真地图类型,那么该瓦片编码将会有一个后缀,后缀代表该三维仿真地图瓦片的视角代码,每个视角的地图对一个地图视角代码。金字塔群组中所有的地图瓦片按照编码顺序存储在数据库中,每一个地图编码对应金字塔群组中唯一的地图瓦片。如“3D-126-1”表示在视角代码为“1”的三维仿真地图子金字塔中,编码为“126”的地图瓦片。
3 三维仿真地图的坐标转换
3.1 坐标系统介绍
多视角三维仿真城市采用的二维地图数据与遥感影像数据都是经过数据校正处理的,其像素坐标系统与地理坐标系统是直接匹配的,是已经建立了地理参考的。
三维仿真地图在本质上是栅格地图,对于每个视角的三维仿真地图,赋予一套统一的逻辑坐标系统,使不同图层的仿真地图处于同一套逻辑坐标下,但不同视角的三维仿真地图采用不同的逻辑坐标系统,它们之间是相互独立的。逻辑坐标采用三维仿真地图底层图层的像素坐标,即三维仿真地图的逻辑坐标系统与地图底层图层的像素坐标是等价的,显然,该逻辑坐标是不同地图层的像素坐标的2的整数次幂的倍数。
三维仿真地图的逻辑坐标系统是相对独立的,没有匹配到地理坐标系上,因此三维仿真地图的逻辑坐标没有地理参考意义,无法直接在三维仿真地图上直接实现计算方向、面积、距离等地理功能。
三维仿真地图采用倾斜视角,增强了三维仿真地图的视觉立体感,同时也造成了三维仿真地图的地理形变,但通过简单的几何纠正把三维仿真地图匹配到地理坐标系上,将严重影像三维仿真地图的三维视觉效果。这里可以建立三维仿真地图逻辑坐标与地理坐标的转换关系,在需要显示特定地理坐标位置的三维仿真地图数据时,将地理坐标转换为三维仿真地图的逻辑坐标,满足地图的显示。而在需要进行地理计算的时候才将三维仿真地图的逻辑坐标转换为地理坐标,来进行地理计算实现地理功能。
这样既保留了三维仿真地图的良好的视觉效果,又保证了三维仿真地图的精确的地理计算功能。
3.2 坐标转换原理
三维仿真地图逻辑坐标系统到地理坐标系统的转换,可以借助同一区域经过地理校正的二维地图数据作为参考,建立三维仿真地图逻辑坐标空间与二维地图地理坐标空间的转换关系。
虽然三维仿真地图与二维地图对现实世界采用了不同的表现形式,但展示是同一区域的地理信息。三维仿真地图空间可以认为二维地图空间在经过了旋转、平移、缩放、扭曲等一系列几何变换之后得到,的这个几何变换的过程可以建立数学模型进行模拟,根据二维地图与三维仿真地图的同名控制点的坐标数据来拟合多项式方程,从而得到三维仿真地图逻辑坐标到二维地图的地理坐标的转换关系,二维地图地理坐标到三维仿真地图的坐标转换可以认为是上述几何变换的逆过程。
3.3 坐标转换的实现方法
令三维仿真地图空间与二维地图地理空间分别为F(x,y)与G(μ,ν),L为两平面之间的坐标转换关系,则两个平面之间的坐标转换方程可以描述为:

坐标转换要解决的是对转换函数L的求解问题,由于两地图空间的几何变换参数并不明确,这里可以采用多项式来模拟转换函数L ,求解转换参数,于是有:

两地图空间之间的坐标转换问题, 就转变成了对上述方程系数a i j ,bi j的求解问题。式中n为多项式的次数, 多项式的项数以及系数的个数为(n(n+3)/2+1),相应的至少需要(n(n+3)/2+1)组控制点数据来计算多项式的参数,如果有多余的观测数据,这里采用满足最小二乘的条件来求解,即满足:

式中为真值, 为计算值。按照求极值原理有:

将(3)带入(4)整理后可得:

式(5)中:

这样就完成了对坐标转换的函数L的求解,得到了坐标转换参数,该坐标转换公式的误差估计和精度可分别由(6)、(7)式算得,来进一步评定获得的转换参数是否满足精度要求。
误差公式为:

精度评定的计算:

不同次数的多项式逼近的效果不同,高次多项式能更精确地拟合控制点周围的区域,相应的数学运算量就越大,计算机实现也更复杂。通过实验,以一次多项式模拟三维仿真地图逻辑坐标与二维地图地理坐标之间的坐标变换,其精度完全可以满足地图服务的需要。坐标转换控制点数据的质量对坐标转换的精度有很大影响。提高坐标转换的精度,首先,要保证控制点数据的准确性。其次,在保证数据准确性的情况下要采集尽量多的控制点,控制点在地图上的分布要均匀。
4 多视角三维仿真地图的实现
4.1 同尺度地图的动态调用与发布
在指定地图比例尺条件下,将目标位置的地图数据显示在地图可视化窗口的中心,是三维仿真城市地图中最常用的地图显示功能,下面讨论在指定目标中心位置逻辑坐标(pixelX,pixelY)情况下的地图数据的调用与发布。
由于三维仿真地图数据以地图瓦片的形式存储在数据库中,而每一个地图瓦片可以视作网格化的图片。这里采用与瓦片化的地图数据相适应的基于网格阵列地图数据显示方法,即地图显示窗口由一组地图网格阵列进行填充,每一个地图网格阵列中的网格对应一个地图瓦片,在地图数据填充时,地图网格阵列的中心瓦片的中心位置定位在地图显示窗口的正中央,然后根据目标中心位置计算地图网格阵列的偏移值,通过偏移值的调整使地图目标中心定位到地图窗口的中央,完成地图的显示。
首先需计算出填充地图可视化窗口所需要的地图网格阵列的大小,并根据地图网格阵列的大小生成与可视化窗口相适应的地图网格阵列,网格阵列的长宽的计算规则如下:

式中:gridWidth与gridHeigth分别代表网格阵列的宽与高;screenWidth与screenHeight分别代表地图显示窗口的像素宽与像素高;tileSize为地图瓦片块的像素宽度; 表示向上取整数操作。
上述规则保证了地图显示窗口中的地图网格阵列为奇数行和奇数列,这样地图网格阵列始终会存在一个中心网格,与中心网格相对应的地图数据瓦片可以作为地图瓦片填充的参考的中心位置,网格阵列中其他地图瓦片文件就能够以它为参考,以高效率的对称扩散的方式完成地图数据的填充,直到整个地图数据方阵都完成填充为止。此外,该规则为后面的地图中心偏移校正提供了足够的地图数据量,防止了地图偏移调整后,地图显示窗口留白的出现。
由地图瓦片所在的图层序号以及地图瓦片所在图层的行号与列号可以确定唯一的瓦片编码,每个瓦片编码对应唯一的地图瓦片。因此目标地图瓦片的获取首先要根据目标中心位置的三维逻辑坐标计算地图瓦片的行列号,地图中心网格对应的中心地图瓦片行列号的计算方法如下:

式中:n为金字塔图层序号(从第0层起算);rowID与columnID分别为在第n层地图中,目标中心位置所在的行号与列号;m代表金字塔的总图层数; 表示向下取整操作。
得到中心地图瓦片的行列号,根据网格阵列的长宽值,通过简单的加减操作计算网格阵列中其他网格对应的地图瓦片的行列号。然后根据1.2节中所述的编码计算方法即可获得地图瓦片的编码,根据获得地图瓦片编码获取地图瓦片数据完成地图格网阵列的填充。
地图数据块填充后,地图目标中心位置并没有位于地图可视化窗口的中央,需要吧地图网格阵列做进一步的校正来使它们吻合。地图网格阵列在可视化窗口X轴与Y轴方向上的偏移量offsetX、offsetY的计算方法如下:

把填充后的地图网格阵列按照计算的偏移量进行校正,使地图目标中心点便位于可视化窗口的中央,完成地图显示。
4.2 不同尺度地图的调用与发布
对于传统的电子地图,在进行地图放大、缩小等操作时,不同比例尺的地图数据会随地图操作实时生成,而三维仿真地图数据的地图数据是已经生成的,地图缩放等涉及到地图比例尺的变化的操作只能通过金字塔不同尺度的地图瓦片的变换进行模拟,虽然这种模拟的变换没有传统的电子地图灵活,但是这种变换方式节省了实时生成不同比例尺地图的地图数据的时间,提高了地图显示的效率。
不同尺度地图对应不同的子金字塔地图层,地图缩放操作通过对不同尺度地图瓦片的变换来模拟。首先记录地图可视化窗口中心点的逻辑坐标(pixelX,pixelY)与地图变换的目标图层序号,然后采用3.1小节中所述的方法计算比例尺变换后地图显示窗口的地图瓦片的编码值,替换地图瓦片数据,并重新计算地图格网阵列的偏移值进行校正,完成不同层地图瓦片的变换,三维仿真地图缩放效果如图2所示。

图2 三维仿真地图的缩放
4.3 不同视角地图的动态调用与发布
多个视角的三维仿真地图数据之间的切换是多视角三维仿真城市地图操作的重要功能,不同视角的三维仿真地图的切换涉及到不同金字塔间地图瓦片的变换。不同视角的三维仿真地图数据采用了不同的逻辑坐标系统,但不同视角的三维仿真地图数据采用的逻辑坐标系统都能够采用第2小节中所述的坐标转换方法与地理坐标进行自由转换,这里借助地理坐标作为两坐标系统之间转换的桥梁建立两坐标的变换关系。
如图3所示,在不同视角的三维仿真地图数据之间进行切换时,首先要记录当前地图可视化窗口中心点的在A视角下的逻辑坐标,然后根据A视角下三维仿真地图逻辑坐标与地理坐标的转换关系,将该逻辑坐标转换为标准的地理坐标,然后按照地理坐标与B视角下的逻辑坐标的换算关系,将地理坐标转换为B视角下的逻辑坐标。根据B视角下的逻辑坐标,采用3.1中所述的地图显示方法完成B视角的三维仿真地图数据显示,就实现了不同视角的三维仿真地图的变换,地图变换的效果如下图所示:

图3 不同视角三维仿真地图变换的坐标转换过程

图4 不同视角的三维仿真地图的变换
5 结论
本文对多视角的三维仿真城市地图从数据组织、坐标变换到地图切换显示做了详细的探讨, 应用结果表明,多视角的三维仿真城市地图在多视角切换方面有较高的精度,在很大程度上减小了单一视角三维仿真地图的不可见部分,提高了三维仿真数字城市地图的信息量,丰富了三维仿真数字城市的地图展示手段,为三维仿真城市的地图展示方法提供了新的思路,该技术在地图公众服务方面有较广阔的应用前景。
参考文献
[1] 马琪,谢忠.海量栅格地理数据的组织与调度[J].地理与地理信息世界,2008,24(6):39-41.
[2] 刘屹林.数字三维仿真城市的研究与设计[D].武汉:武汉理工大学信息工程学院,2009.
[3] 张晓东,金淑英.高精度数字栅格地图的制作方法[J]. 测绘信息与工程,2005,30(6):14-15.
[4] 王华斌,唐新明,李黔湘.海量遥感影像数据存储管理技术研究与实现[J]. 测绘科学,2008,33(6): 156-157.
[5] 张剑波,刘丹,吴信才.GIS中栅格数据存储管理的研究与实现[J].桂林工学院学报,2006,26(1): 54-58.
作者简介
任 鹏 中南大学信息物理工程学院地图学与地理信息系统专业在读硕士,现为中国科学院深圳先进技术研究院客座学生,研究方向为三维数字城市等。
马 琪 研究助理。2009年7月加入深圳先进技术研究院,主要从事WebGIS平台开发、海量栅格数据组织与管理、WebService服务开发应用等。
袁永强 中国科技大学软件学院在读硕士研究生,现为中科院深圳先进技术研究院客座学生,主要研究方向为三维数字城市等。






