三维场景数据概述
SuperMap iClient3D 8C for Plugin 的 三维场景(Scene )对象支持加载多种类型的数据,包括 矢量数据、KML\KMZ、影像数据、模型数据、地形数据。不同类型的数据,通过不同类型的图层叠加到三维场景中,其中 矢量数据、KML\KMZ、影像数据和模型数据通过 Layer3D 加载,而地形数据则通过 TerraniLayer 加载。
SuperMap iClient3D 8C for Plugin 的场景中可以包含多个三维图层(Layer3D),也可以包含多个地形图层(TerrainLayer),在每个图层的属性信息里包含了所加载图层的基本信息,如图层名、图层描述、图层的可见性、可选择性及图层范围等属性。加载的三维图层(Layer3D)和地形图层(TerrainLayer)分别由三维图层集合(Layer3Ds)和地形图层集合(TerrainLayers)来管理。通过图层的索引值或者图层名称来访问图层集合中的各个图层对象。在三维场景对象(Scene)的属性中记录了当前场景中加载的图层集合对象(Layer3Ds或TerrainLayers),当场景中没有加载任何数据类型的图层时,对应的三维场景对象(Scene)图层集合对象属性信息为空。下面将分别介绍这五种类型的数据。SuperMap iClient3D 8C for Plugin的三维场景可以直接打开SuperMap二维矢量数据进行浏览,支持打开的矢量数据类型有:矢量模型数据、点数据集、线数据集、面数据集和文本对象等。
二维矢量数据以Layer3D图层添加到三维场景中,从而实现了二维数据的三维转换,二维矢量数据转换为三维图层数据后,每一个几何对象的空间信息都是由X、Y、Z坐标来表示的,即二维点、线、面等对象都变成了三维点、线、面对象。
在将二维矢量数据添加到三维场景中时,对矢量数据中的几何对象进行拉伸,拉伸的高度可以根据需要进行指定,并且还可以指定高度模式。关于高度模式的介绍可以参见专题文档《高度模式》
在将二维矢量数据添加到三维场景中时,可以保持原有的矢量数据的风格,还可以对添加到场景中的矢量数据进行显示风格的设置。
图1 加载矢量数据到三维场景中显示
图2 加载矢量模型数据到三维场景中显示
KML(Keyhole Markup Language)是 GoogleEarth 的文件格式。KML 是一个基于 XML 语法和文件格式的文件,使用含有嵌套元素和属性的基于标记的结构,所有标记都区分大小写。KML用来描述和保存如点、线、图片、折线等地理信息要素并在应用系统中显示,例如 Google Earth、 Google Map 等。KML 已正式被 OGC 采用,成为 OGC 众多规范中的一个。KML文件有两个文件扩展名:*.KML和*.KMZ(一个或几个KML文件的压缩集,采用zip格式压缩)。
KML支持的图层类型为:几何对象(点、线、面)、图片、模型。SuperMap iClient3D 8C for Plugin 支持将记录地理信息的 KML 文件作为一个 Layer3D 图层显示在三维场景中,即将 KML 文件记录的地理要素依据坐标信息添加到三维场景的球体上。
图3 加载KML、KMZ到三维场景中显示
保存在服务器上的影像数据已经进行了预处理,即对海量影像数据建立缓存目录,将数据量大的影像数据按照全球格网剖分模型,对大数据量的影像数据进行分层分块,生成缓存目录,同时生成一个 SCI3D 索引文件(*.SCI3D ),该文件对生成的缓存进行了详细描述,如缓存层数、缓存地理范围、缓存文件类型等。SuperMap iClient3D 8C for Plugin 在加载影像数据时,首先会访问影像数据的索引文件(*.SCI3D),将影像数据作为一个 Layer3D 图层加载在三维场景中,并自动基于用户当前浏览坐标区域及显示比例尺选择最合适的分层和分块来显示该影像,大大提高了加载或浏览海量影像数据的效率。
图4 加载影像数据到三维场景中显示
地形数据是能够表示地球表面高低起伏状态的数据,即具有高程信息的数据。利用地形数据可以进行地形分析,包括视域分析、洪水淹没动态模拟分析、透视分析等,在本次发布的SuperMap iClient3D 8C for Plugin 中只提供了加载地形数据,并对地形数据进行浏览的操作,对于地形分析功能在本版本中暂不提供。
加载到SuperMap iClient3D 8C for Plugin的地形数据在服务器上已经完成了数据预处理,SuperMap 支持将 TIN、DEM 高程数据进行预处理,同时对高程数据按照全球格网剖分模型,进行分层分块,生成缓存目录,由此生成一个 SCT 文件(*.sct ),该文件对生成的缓存进行了详细描述,如缓存层数、缓存地理范围、缓存文件类型等,SuperMap iClient3D 8C for Plugin 通过访问 SCT 文件在服务器上的地址,将地形数据作为 TerrainLayer 显示在三维场景中,并自动基于用户的显示比例尺选择最合适的分层和分块来显示地形数据,大大提高了加载或浏览海量地形数据的效率。
地形数据会依据其坐标参考信息,添加到三维场景中的三维球体上,使球体表面真实地模拟地球表面的高低起伏形态。
三维场景中的地形图层是通过三维场景中的地形图层集合(TerrainLayers)来管理的,可以实现地形图层的添加、删除功能。
图5 加载地形数据到三维场景中显示