李金贵,翁敬农
(北京航空航天大学计算机学院,北京100191)
数字地球(digital earth)是美国前副总统戈尔于1998年1月发表的题为《数字地球:认识21世纪我们所居住的星球》的演说时提出的一个与地理信息系统、网络、虚拟现实等高新技术密切相关的概念。在戈尔的演说中,他将数字地球看作是“对地球的三维多分辨率表示,它能够放入大量的地理数据。”自数字地球概念提出以来,国际上许多科研机构与企业掀起了对其研究的热潮,关于数字地球一系列具有代表性的产品脱颖而出,如Google Earth、Arc-Globe、EV-Globe等。如何在虚拟三维地形上展示空间数据成为了研究重点与热点。地形数据、栅格数据、矢量数据是数字地球最基础、最重要的数据。在虚拟三维地形上覆盖全球影像数据,进而显示矢量专题数据,就构成了数字地球原型[1]。
GIS发展至今已经积累了大量的二维数据,形成了成熟的规范与生产流程。二维数据的三维可视化已成为GIS发展的趋势。在数字地球三维环境下,如何将二维GIS数据在三维地形上进行可视化无疑是重要的部分之一[2]。在数字地球环境中,对于全球影像数据一般采用影像金字塔的形式进行组织,通过WMS进行调用[3],以纹理映射的方式进行可视化。这种方式与二维环境比较相似,影像数据的可视化也比较成熟。然而对于矢量数据,由于其结构相对复杂,有内部属性且要素间具有拓扑关系,又是空间分析的主要对象,在数字地球三维场景中对它的可视化方式虽然进行了大量研究,并且取得了丰硕的成果,但存在的问题仍然比较突出。在数字地球环境下,对大数据量的矢量数据进行可视化时,要兼顾可视化效果与对原矢量数据属性与结构的保持,这是引起问题的主要原因。另外,由于数字地球环境中通常采用的是金字塔多分辨率地形模型,在对矢量进行渲染时不仅要使其紧贴地面,而且要随视域范围与视点高度的变化而变化,这无疑增加了问题的难度。本文在对三维环境下现有矢量数据可视化技术研究的基础之上,提出了在数字地球环境下带样式矢量动态纹理可视化方法及球面矢量点选交互技术。
目前,二维矢量的三维可视化方法主要有两种,分别是基于几何和基于纹理的可视化方法[4]。基于几何的可视化是根据矢量数据创建与地形几何表面相适应的矢量几何数据,即给矢量数据添加并插值高程值,对矢量数据进行渲染[5],具体方法又分为集成法与叠加法。集成法是将矢量数据的几何机构嵌入到地形格网,以使高程信息集成到矢量数据的坐标中,使地形格网和矢量几何融为一体[6];而在叠加法中,矢量数据与地形数据之间是相互独立的,通过空间位置关系关联起来,在显示效果上融合为一体。基于纹理的矢量绘制方法的思想是:首先将二维矢量数据栅格化为纹理影像,然后采用纹理映射的方法进行绘制,这样能够保证矢量数据与三维地形很好地叠加在一起。两种可视化方法的优缺点及在数字地形环境下的基本应用见表1。
表1 矢量数据三维可视化方法优缺对比与基本应用
带样式矢量动态纹理可视化方法的主要思想是根据三维场景的视域范围及视点高度调度可见层级的可见瓦快[7],利用矢量数据与瓦快之间的映射关系找到需加载的瓦快区域对应的矢量数据,读取指定样式(地理符号),动态生成与地形地段大小匹配的纹理块,供数字地球软件进行加载显示。该方法的实现有些类似WMS的工作原理,所不同的是该方法在对矢量进行纹理可视化时,直接根据地形的渲染发出请求,返回对应的数据进行渲染并进行缓存,主要分为两部分:纹理在数字地球平台的可视化与带样式矢量图层快速栅格化。
(1)纹理在数字地球平台的可视化
在数字地球环境下,对大规模场景的地形数据与影像进行渲染时,需要根据视域范围与视点高度读取缓存中的瓦块进行加载。地形数据与地表影像数据通常以金字塔结构[8]在服务器端进行存储,数字地球客户端以WMS的形式向服务器发送请求,并将数据以金字塔的形式缓存到本地。这样的层次细节模型(LOD)可以提高加载速度且保证足够细节。为了不对矢量数据的内部属性及要素间的拓扑关系造成破坏,对矢量数据接入时,开始并不对矢量数据进行瓦片分割构建多分辨率的中间文件,而是建立瓦块与矢量数据之间的函数关系,需要显示时则根据这层映射关系找到对应范围的矢量数据进行渲染。因此,矢量数据的组织管理应与高程数据、影像数据具有统一的网络划分方案。
设当前浏览数据的层级为n,数据的经纬度为longitude、latitude,若金字塔最底层的度数为Δ,则可得该点所在的文件行列号row与column为:row=(latitude+90°)/Δ×2n,column=(longitude+180°)/Δ×2n。根据视域范围可以计算出可见层级中的哪些瓦块需要调用。根据矢量数据与瓦块之间的映射关系,由当前层级n、最底层的度数Δ,以及行列号row、column,可计算出对应矢量的范围为:longitude=column×Δ/(2n)-180°,latitude=row×Δ/(2n)-90°;当前层级的间隔为:Δ/(2n)。得到范围后对数据生成线程发送请求,则可以将对应范围的矢量以图片的形式返回并映射到数字地球模型对应的位置,同样以影像金字塔的形式进行缓存,以便后继浏览到相同层级、相同范围时无须再次生成纹理,极大地提高了数据浏览的速度。
(2)纹理在数字地球平台的可视化
对矢量要素的线宽及面要素内部填充色的设置,以图层样式表(SLD)的形式保存在文件中。图层样式表是OGC制定的一种基于XML语言的文本文件,用来描绘特征数据的表现形式,它可以精确描述制图层上的每一个特征要素的表现形式,并灵活展示不同状态下的空间要素[9]。Geotools作为开放空间地理信息联盟的重要组成部分,高效地实现了其大部分标准接口,并能够直接解析SLD文件进行渲染,生成指定范围的纹理。本文利用Geotools开源工具包生成动态纹理主要分为6个步骤,包括请求解析、加载数据、将数据置入缓存、样式设置、添加图层,以及纹理生成。图1为栅格纹理生成流程。在实际应用中,由于栅格纹理生成模块需要频繁连接数据源,因此设置了数据缓存池。该缓存池容量默认为8,并采用LRU原则进行数据替换[10]。
①请求解析
请求解析模块主要负责解析映射字符串,提取矢量数据的连接参数及纹理参数,并验证参数的有效性。参数包括数据源、图层样式表(SLD)、坐标系(本文为WGS-84)、纹理文件格式(本文为PNG)、纹理的分辨率(本文为256)及请求纹理的范围。如果参数有效,则继续处理;否则退出此次栅格纹理生 成过程。
图1 栅格纹理生成流程
②加载数据
加载数据时首先验证数据是否已放入缓存,若是则直接进入样式设置模块,否则根据数据连接参数读取数据;读取完成后验证数据是否加载成功,若是则进入样式设置模块,否则退出纹理生成过程。
③样式设置
样式设置模块主要负责读取映射字符串中指定的地图符号化样式,并将此样式与对应图层数据关联起来。Geotools是通过用户提供的样式信息进行渲染控制。在对样式进行交互式设置时,使用SLD文件对矢量文件的样式进行描述。
④添加图层
针对多个矢量图层的渲染,为避免重复创建上下文环境,添加图层模块加载多个已读入数据图层,并送交纹理生成模块。这样可以对多个矢量图层同时进行栅格纹理生成,在进行渲染时可以减少渲染量,并且在进行金字塔缓存时也可以减少磁盘占有量。
⑤纹理生成
纹理生成模块主要负责根据纹理参数,如纹理分辨率、格式等,绘制指定经纬区域的矢量图层数据,并将生成的纹理数据转换为字节返回。在此模块中,主要使用了Geotools的GTRenderer接口,它的主要实现为Streaming Renderer类。它在第一次调用时就可以在消耗较低内存的情况下,生成优质的图像缓存,并且无须再对同一数据的后继调用渲染进行优化,这样在对大型矢量数据进行处理时效果更加明显。
(3)球面矢量数据点选交互技术
当对矢量数据主要以整理形式进行展现时,若数据量较大,直接以基于几何的方式进行渲染,则需要消耗较大内存进行计算,极大地降低了系统的性能。因此,可以采用上述带样式的动态矢量纹理可视化方法。如果仅对矢量数据中的单个要素进行展示,则在不影响性能的情况下,采用基于几何的可视化方法就可以对数据进行完美展示。球面矢量数据点选功能是在对矢量图层进行点击时,对点击下的要素进行高亮显示,并进行属性数据查询。由于矢量数据栅格化方法技术产生的数据并没有包含矢量的属性,对其进行点击并不能产生实质性的结果。但是由于矢量数据的完整性,可以通过位置查询出点击处的要素。这样只要把查询出的矢量要素返回并经过基于几何的模板阴影法进行渲染,其效果是以新的要素覆盖在原结果之上,在不对原有渲染进行修改的情况下就可以产生高亮效果。其流程如图2所示。
图2 球面矢量数据点选流程
百科地球(WikiGlobe)平台是由北航数字地球与地理信息系统实验室课题组开发的数字地球平台,它专注于与空间信息相关的百科知识的传播与共享。百科地球之“世界国家概况”专题应用以介绍国家信息为主,同时展示全球范围内与中国建交的国家分布及一些重要组织的分布,如世贸组织、亚太空间合作组织等。专题数据主要来自CIA网站、联合国网站、中国外交部网站、维基百科及世界贸易组织网站等。
本应用的矢量数据为世界国家行政边界,几何数据主要来源于Esri,通过将联合国网站国家列表与CIA中的世界国家概况进行对比,整理出百科地球版本的国家列表,其属性数据主要收集于互联网,包括各国的面积、人口、GDP、简介等。对国家进行展示时,行政边界设置样式后,实时进行栅格纹理化可视化,并通过金字塔结构进行缓存。对国家信息进行展示时,通过点击兴趣国家所在的区域,通过球面点选技术,实时对矢量数据进行查询,获得点击处国家几何及属性信息,并对几何信息以基于几何的模板阴影法进行绘制。效果如图3所示。
图3 球面点选信息展示
本文探讨了数字地球环境下二维矢量数据的三维可视化及其应用问题,通过对现在矢量绘制方法优缺点的对比,提出了在数据量较大时采用带样式动态矢量纹理可视化方法及在小数据量交互时直接采用几何方法进行绘制的应用。带样式矢量纹理可视化方法是对现有基于纹理的可视化方法的改进,利用金字塔结构对纹理进行缓存,利用Geotools进行样式解析及纹理生成,有效解决了因矢量数据量及栅格化分辨率较大而产生的内存泄露问题。而对于与球面矢量数据交互时小数据量矢量数据的绘制,采用基于几何的可视化方法,该方式在球面矢量数据点选可视化时得到了广泛应用。本文的研究为矢量数据在数字地球环境下的可视化及应用提供了有效途径。
[1] 陈东升,戴和原,许锦鹏.基于数字地球平台的数据可视化技术研究[J].数字技术与应用,2013(11):54-56.
[2] KERSTING O,DÖLLNER J.Interactive 3D Visualization of Vector Data in GIS[C]∥Proceedings of the 10th ACM International Symposium on Advances in Geographic Information Systems.NY:ACM,2010:1-507-112.
[3] 姜仁贵,解建仓,李建勋,等.基于数字地球的Web-GIS开发及其应用[J].计算机工程,2011,37(6):225-227.
[4] XU Y F,SUI Z W,WENG J N,et al.Visualization Methods of Vector Data on a Digital Earth System[C]∥18th International Conference on Geoinformatics.Bei-Jing:IEEE,2010:1-5.
[5] 陈鸿,汤晓安,谢耀华,等.基于视点相关透视纹理的矢量数据在三维地形上的叠加绘制[J].计算机辅助设计与图形学学报,2010,22(5):753-761.
[6] KOCH A,HEIPKE C.Integrating 2D Topographic Vector Data with a Digital Terrain Model-a Consistent and Semantically Correct Approach[C]∥RIEDL A,KAINZ W,ELMES G A.Progress in Spatial Data Handling.Berlin and New York:Springer-Verlag,2006:353-364.
[7] XU Y,WAN G L.Technology of Displaying Mass Data Image in Real Time[J].Computer Engineering and Design,2003,24(6):36-38.
[8] YANG L Y,GONG J H,SUN J,et al.An Effective Method for Massive Polygon Data Visualization on Digital Earth Platform[C]∥2010 International Conference on Multimedia Technology(ICMT).Ningbo:IEEE,2010:1-4.
[9] MULLINIX C,HEARN P,ZHANG H J,et al.Webbased Decision Support and Visualization Tools for Water Quality Management in the Chesapeake Bay Watershed[C]∥17th International Conference on Geoinformatics.Fairfax VA:IEEE,2009:1-6.
[10] RISHE N,SUN Y L,CHEKMASOV M,et al.System Architecture for 3D TerraFly Online GIS[C]∥Sixth International Symposium on Multimedia Software Engineering.Miami Florida:IEEE,2004:273-276.