基于Cesium的多尺度城市三维建筑模型可视化
2021-04-20艾廷华
陈 浩 艾廷华
(武汉大学 资源与环境科学学院, 湖北 武汉 430079)
0 引言
随着我国城市化进程不断推进,交通拥堵、环境恶化、公共基础设施分布不均衡等一系列社会问题日益严峻。为解决这些城市化问题,智慧城市在云计算、物联网技术、传感器技术的发展下逐步形成,这些互联网技术领域的支撑技术为智慧城市的建设提供了硬件条件,但要更好地发挥其在城市规划、建设、管理上的智慧功能,还需要城市空间数据支持,作为信息系统运行的“血液”,城市空间数据应满足多尺度表达的需要,既要考虑宏观上的大区域空间格局分析,也有微观层上的细节化信息分析。同时,为服务城市竖向规划、多视角景观分析及全方位的空间体验,智慧城市的空间数据表达应当为多维特征。在智慧城市的建设当中,三维地图作为表达、传输和研究地理信息的方式和载体[1],是所有智慧城市管理的基础,更是关键环节。建筑物作为三维地图当中的核心组成单元,如何实现建筑物数据表达的多维与多尺度这两大条件成为智慧城市建设的关键。
在大尺度需求下,海量的城市三维建筑模型堆集在一起,导致渲染加载速度慢、视觉效果混乱,影响读者对空间信息的快速获取。目前针对城市三维建筑模型的研究主要集中于单个建筑模型的简化,通过细节特征的过滤和纹理粗化得到简化表达,尽可能保持模型原有的几何和表面特征,从而提高计算机渲染效率[2-3]。同时,通过多细节层次(Levels of Detail, LOD)模型对建筑物进行逐次显示模型细节也是一种可行的策略,能有效减少模型数据全量加载带来的压力,提高渲染效率[4-5],该方法在建筑信息建模(Building Information Modeling,BIM)技术中有城市地理标记语言((City Geography Markup Language, CityGML))标准规定了各LOD层次表达的技术要求,但该标准只是简单地叠加/移除不同层次的细节,缺乏几何特征的融合抽象。因此,要在网络环境下提高三维建筑物模型可视化效果,必须对三维建筑物模型进行多种抽象概括,既有细节特征的化简,也有邻近目标的融合,同时还要顾及语义特征上的相似。
不同于二维数据的综合化简,三维数据的综合不仅要顾及输入数据的粒度特征,还要顾及可视化渲染软件平台的技术特征。鉴于Cesium成为三维空间数据可视化表达的重要平台,本研究提出一种基于Cesium系统平台的城市建筑物三维地图综合及多尺度可视化的方法。Cesium是一种轻量级的web端开源三维开发框架,其3DTiles的三维数据规划标准高效实现了三维数据的流式传输和海量三维模型渲染。该框架支持三维数据常见文件格式,适配现行大部分浏览器,因而常被用于各行业三维信息化平台建设。本文在该框架的基础上,通过三维建筑物模型的制图综合,提高了三维数据的可视化展示效果。
1 Cesium三维可视化框架
Cesium 是一款基于Webgl实现的三维开源框架,兼容于大部分浏览器,同时支持3D、2.5D、和2D图形的展示,并且不需要安装任何插件[6-7]。该框架拥有完善的对于三维模型、地形、影像、矢量、注记、点云等的可视化支持,数据源可以通过WMTS、GeoJSON、地形服务等形式进行加载。同时Cesium还支持数据的动态展示,利用时间轴将模型或数据的状态与时间结合,为读者创建出逼真的虚拟场景,使得Cesium成为三维空间数据可视化表达的重要平台。WebGIS领域中还有其他几款基于WebGL开发的可视化框架,如Openlayers、MapboxGL等,但这些框架的偏向功能有所差异,OpenLayers是通过canvas进行地图渲染,其针对的是二维地图数据,主要提供地理信息系统(Geographic Information System,GIS)二维数据的展示与交互。MapboxGL则是偏向于大量的地图切片数据的渲染,该框架支持开发者定制个性化地图,其所针对的是地图的渲染。而Cesium是偏向于三维数据的渲染,支持多源数据在三维可视化任务中进行落图展示,同时提供了一系列的接口以实现用户交互。
Cesium为城市三维建筑物模型提供了高效的渲染引擎,制定了3DTiles数据格式将城市三维建筑数据集以分块、分层的数据组织形式进行渲染,可以最大限度地减轻浏览器及图形处理器的压力。此外,Cesium还支持对城市三维建筑物的样式选择和交互式选择,能够通过样式选择批量处理建筑模型的纹理、着色等参量,也能实现对单个建筑物块的移除等操作或通过单个建筑物ID获取建筑物对应的信息。基于该框架实现三维建筑物的可视化,能以较低的开发成本在浏览器中展示海量三维城市建筑物模型,同时还具有灵活的交互方式和良好的视觉体验。
从原理上,Cesium三维数据的可视化机制可以分为全量加载和按需加载。全量加载是针对数据体量少且范围较小的数据,如矢量图形、单体三维模型、注记信息等,对于这类数据可以一次性全部获取并在浏览器进行渲染,但会消耗较大的内存。而按需加载则是对小比例尺的数据建立LOD多细节层次模型,再依据客户端当前地图显示的范围按需加载数据,这样可以有效减少数据量对于内存的消耗,同时提高渲染效率,一般适用于大范围的地形、三维模型和点云等,但无法从根源上解决地图缩编过程产生的数据堆集从而影响视觉效果的问题,而城市空间信息平台既要从宏观层面体现出大区域的空间格局,也要在微观层上展现细节信息,为此我们需要在建筑物加载过程中进行制图综合。
2 三维建筑物综合
建筑物作为三维地图当中的核心组成单元,当地图由大比例尺缩编为小比例尺时,如果建筑物数据的间距、宽度均仅以同等比例缩小,相邻的建筑物会堆集在一起,从而造成视觉效果混乱,难以从宏观上进行大区域的空间格局分析。同时,在Web端小比例尺下全量加载三维建筑物,网络数据传输及客户端渲染都会面临着巨大压力。因此,为保证地图内容的易读性、一览性,并满足三维空间要素多尺度表达、减轻数据存储与网络传输负载的需求,需要在地图比例尺缩编过程中进行制图综合。
制图综合是以概括、抽象的形式反映出制图对象带有规律性的类型特征,保留本质主要的地理要素,舍去次要的、非本质的地理要素,从而减少冗余的地图空间数据,它是空间数据尺度变换、集成与融合、分析与挖掘等的基本手段之一[8-9]。在城市尺度下实现三维空间数据的多尺度表达,其综合过程主要分为两步:
一是基于建筑物个体相互间的距离关系将建筑物群分为若干个组,让组内建筑物的联系比跨组间建筑物的相关性要近,对于相关性联系的考虑,即建筑物个体间的距离关系,本文将遵循格式塔原则进行分组计算,综合考虑建筑物的面积大小、几何形状以及排列方向间的关系[10],同时结合建筑物的语义信息,比如由于医院和学校等建筑的功能性不同在聚类时可以考虑分别合并,而骑楼等几何形状相对特殊的建筑也应当予以区分。在分组结果的基础上进行选取、化简、合并和典型化等综合操作。
二是,在三维场景中进行建筑物综合过程中,还需要对视点位置进行考虑,读者在不同的位置以不同的方向进行观察会有不同的视觉感受,透视投影有近大远小的视觉效果,会因为视点和建筑物距离的不同,使建筑物的大小和建筑物间的距离有不同的视觉效果。如图1所示,a、b在几何上的长度其实是相等的,但是因为a更靠近观察点,所以视觉上距离更远。在综合时,远离视点的建筑物群由于透视投影,建筑物之间的视觉距离比较近,应该进行合并,靠近近视点建筑物实际距离虽然相同,但因为视觉感受上距离较远,不需要合并;离视点远的建筑物因为近大远小的透视效应,视觉上会变小甚至难以辨认,有可能需要将其删除,距离视点较远的建筑物的细节也会更加难以辨认,需要进行更大尺度的综合化简。
图1 视点对建筑物距离的影响
与行业规范一致,cesium框架下的电子地图瓦片数据划分为20级,三维模型的可视等级范围为设定为14~20级以减少数据渲染压力。为实现多尺度三维建筑物数据的可视化表达,需要将建筑物数据的综合级别与电子地图瓦片数据的不同级别作关系映射。如表1所示,本文将三维建筑物模型的可视化表达分为三个等级,其中L1为原始未综合数据,L2与L3分别对应不同综合尺度,L3比L2的综合程度更大。
表1 瓦片级别与综合级别映射关系
3 三维建筑综合处理与可视化实现
本文实验采用城市三维建筑白模数据(广州地区)进行可视化实验,该区域建筑物数量为45 268个。白模作为城市三维建筑模型的初期数据产品,存储了建筑物的位置、高度、形状、面积、楼房层数和语义信息。白模产品的三维可视化实现,是由二维的建筑物基底面轮廓通过结合高度属性进行拉伸实现的。后期将白模数据作为基础,进行纹理的贴图等操作,可以进一步完善城市空间信息平台建设。
3.1 三维建筑物综合处理
基于空间邻近、形状细节特征对多层次二维数据进行构建,利用Delaunay三角网探测建筑物间的邻近关系,把城市道路作为综合的约束条件,保证综合前后建筑物群的总体分布态势以及城市的基本结构特征,如图2(a)所示。综合考虑建筑物的面积大小、几何形状以及排列方向间的关系,结合建筑物的语义信息以及三维视点位置对建筑物构建最小生成树,如图2(b)所示。通过设置不同的剪枝阈值,对建筑物进行聚类分组,可以得到不同级别下的聚类结果。即所设定的L2、L3级别的综合力度通过剪枝阈值进行设定,如图2(c)所示。将所有大于剪枝阈值的边剪断,保留下来的 最小生成树 (Minimum Spanning Tree,MST)边作为连接建筑物的聚类结果,有MST边连接的建筑是一类建筑物,实现建筑物的聚类,最后针对各个建筑物聚类簇进行合并,如图2(d)所示,并对建筑物几何形状进行综合并更新建筑物的高度。
图2 建筑物聚类过程
3.2 三维建筑物可视化实现
基于Cesium的三维城市化模型可视化实现主要包括数据格式转换、坐标系统以及三维建筑贴地调整。
3D Tiles是Cesium团队定义的用于海量三维空间数据流式传输及快速渲染的三维数据格式。该格式是在glTF格式的基础上,结合了LOD结构后得到的产品,其在形式上与二维瓦片地图的组织形式有所类似。本文采用CesiumLab工具对经过综合操作的建筑物数据集进行格式转换,在转换过程当中,将三维建筑物数据集的坐标系统一为Cesium框架支持的WGS84坐标系。而通过cesium的应用程序接口(Application Programming Interface,API)接口加载3Dtiles数据集,由于数据获取途径不一致,部分的三维数据模型原数据中会有因地形起伏造成的模型底部位置高程不一致,导致没有紧贴三维地图地面。该情况下需要利用创建平移矩阵法对模型进行贴地调整。同时对于坐标位置信息缺失的建筑模型,也可通过该方法,结合地图底图的纹理,将模型调整至地图合适的地理位置。
3.3 多尺度三维建筑物可视化结果
如图3所示,在多尺度的情况下,如果不对建筑物进行综合,当地图比例尺较小时,三维建筑物的显示十分细碎且过于密集,许多建筑物的细节难以辨认。同时,网页渲染效率较低,加载数据后需要等待一段时间才能渲染完成。本文对三维建筑物进行综合后,当地理底图为最详细时,建筑物也显示最详细的级别。随着地图比例尺的变小,如图4~5所示,展示经过不同程度的综合操作的三维建筑物模型,其中,L1即原数据的建筑物数量为45 268个,L2的建筑物数量为20 407个,L3的建筑物数量为7 125个,有效提高渲染效率,在大区域下体现出建筑物的空间分布特性和集群特征,同时随着比例尺的缩小能呈现出细节信息,为城市空间信息平台的建设提供了基础。
图3 L1级别三维建筑物可视化
图4 L2级别三维建筑物可视化
图5 L3级别三维建筑物可视化
4 结束语
本文基于Cesium系统平台,结合了多层次二维数据基础与三维视觉感知条件,提出了一种城市建筑物三维地图综合及多尺度可视化的方法,有效缓解浏览器的渲染压力,实现了城市三维建筑物数据的多维与多尺度表达。文中以建筑物个体作为单元进行考虑,今后可以从更细粒度的层面进行探究,如针对单个三维建筑物的化简、建筑物纹理的化简或室内要素的综合。