格式说明
glTF
glTF表示了渲染一个模型的几何数据、纹理数据、材质数据、元数据等。glTF一般用于表示一个具体模型,比如汽车、树木等,不会用于表示一个数字城市,数字城市一般用3DTiles来表示。
glTF的整体设计,概括有四点:第一,数据块(Buffer)连续,保证了读写性能;第二,提供了视图(View)和访问器(Accessor)的概念,在不损失数据块完整性的前提下提供类型信息和读取规范,保证了兼容性;第三,逻辑层和数据层分离,两者尽量分离,比如用户想要增加一种风格,只会牵连到逻辑层的调整,不会影响数据层的读写,保证了独立性;第四,逻辑层,也就是业务层是JSON形式,保证了扩展性。

3D Tiles
是用于流式传输大规模异构3D地理空间数据集的开放规范。为了扩展Cesium的地形和图像流,3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据。
3D Tiles的主要目的是改善大规模异构数据集的流和渲染性能。3D Tiles的基础是一种空间数据结构,它支持层次结构细节级别(HLOD),因此只有可见的图块才会被流式传输 - 并且只有那些对于给定3D视图最重要的图块。平铺有效载荷可以是二进制和上下文感知压缩的,例如,使用Open3DGC或oct编码。
在Cesium中有开源实现。
3D Tiles在glTF的逻辑层,也就是JSON部分增加了FeatureTable和BatchTable,以及LOD(tileset)概念,并对应提供了header(二进制存储)。从数据规范角度来看,继承了glTF优秀的部分,同时考虑了倾斜,点云,后续也会支持OSM,从数据类型的支持上也比较到位。
3D Tiles中,一个tileset是由一系列tile组成的树状结构。每个tile可以引用下面的其中一种格式
| 格式 | 用途 |
|---|---|
| 批量3D模型(b3dm) | 大型异构3D模型,包括三维建筑物、地形等 |
| 实例3D模型(i3dm)) | 3D模型实例,如树、风力发电机等 |
| 点云(pnts) | 点云 |
| 组合数据(cmpt) | 以上不同格式的切片组合到一个切片中 |
b3dm
Cesium的Batched 3D Tiles Data的简称,它是3DTiles规范的一部分,本质上b3dm也是使用glTF来存放数据的。用于表示3DTiles的每个瓦片
KML
KML(Keyhole Markup Language,Keyhole 标记语言)最初是由Google 旗下的Keyhole 公司开发和维护的一种基于XML 的标记语言,利用XML 语法格式描述地理空间数据(如点、线、面、多边形和模型等),适合网络环境下的地理信息协作与共享。
CZML
CZML是一种用来描述动态场景的JSON架构的语言,主要用于Cesium在浏览器中的展示。它可以用来描述点、线、布告板、模型以及其他的图元,同时定义他们是怎样随时间变化的。Cesium拥有一套富客户端API,通过CZML采用数据驱动的方式,不用写代码我就可以使用通用的Cesium viewer构建出丰富的场景。Cesium与CZML的关系就如同Google Earth和KML的关系。CZML和KML都是用来描述场景的数据格式,可以通到很多其他的程序自动生成,或者手写也可以。 CZML拥有很多的特性,其中有一些区别于KML的:
- CZML 是基于JSON的。
- CZML可以准确的描述值随时间变化的属性。理由,一条在某一时间内是红色的而在另一时间内是蓝色的。同时客户端可以根据时间戳进行差值。加入有一辆车,分别定义了两个不同时间的位置,通过CZML定义的差值算法,客户端可以准确的显示在这两个时间点之间车的位置。所有属性都可以是随时间变化的。
- CZML通过增量流的方式传送到客户端。在场景显示之前,整个CZML文档需要首先被下载到客户端。在某些情况下,个别客户端可能会加入或离开正在传输的流。
- CZML高度优化,旨在解析时更紧凑也更容易,让人工的读写更容易。
- CZML可扩展,尽管CZML的主要作用在与虚拟地球客户端程序与场景的交流,但它可以很容易的通过扩展来满足其他一些辅助的程序对静态或动态数据的需求。例如,随时间动态变化在数据就可以用在某些2D的图表程序中。
- CZML是一个开放的格式。我们希望有更多的程序能使用CZML,同时期待有一天它也能成为OGC一样的标准。