Skip to content

关于 Cesium

Cesium 是一个基于 JavaScript 开发的三维地球和地图可视化开源库。它利用了现代 Web 技术,如 WebGLWebWorkerWebAssembly,来提供跨平台和跨浏览器的三维地理空间数据可视化。接下来让我们一起来看下其主要功能以及能实现的效果:

一、地球可视化

Cesium 可以在 Web 浏览器中显示高度真实感的 3D 地球场景,如何来构成一个地球,Cesium 做了这些拆分:

1、地球球体

我们拿一个灯笼来举例,地球球体就类似灯笼的骨架,决定了其形状。

earth

Cesium 中球体被抽象为 Ellipsoid (地球椭球体),并在 Globe 类中进行管理,默认使用 WGS84 椭球 ,当然官方也提供其他椭球体,在 地球球体 中我们将详细介绍。

2、影像

现在我们给灯笼贴上纸,也就是我们的影像。

imagery2

影像在 Cesium 中被抽象为 ImageryLayer 类,主要是通过加载 影像数据 来实现 。

加载不同的影像资源我们可以得到不同的效果,例如昼夜效果:

imagery

3、地形

但我们的地球并不是像灯笼那样光滑平坦,最高处是珠穆朗玛峰-海拔 8848.86 米,最低处是马里亚纳海沟-海底 11034 米,再加上地球自转所产生的离心力,其实地球是一个表面凹凸不平的椭球体。

terrain

地形在 Cesium 中被抽象为 Terrain 类,主要是通过加载 地形数据 来实现,地形数据包含了每个点的高度信息,通过这些高度信息可以绘制出地形。

4、环境

蓝天白云、太阳月亮、大气星空都是现实世界中的自然现象,作为一个三维地球可视化框架,这些是不可或缺的。

蓝天白云、星空在 Cesium 中抽象为 SkyBox 天空盒

大气抽象为 SkyAtmosphere 类

太阳抽象为 Sun

月亮抽象为 Moon

5、实体

自然地理环境中的各种空间对象虽然种类繁多,但是都可以抽象为简单的几何图形,比如海洋湖泊可以抽象为多边形几何,道路河流可以抽象为线几何,而人车树木则可以抽象为点几何。自然地理环境中的各种空间对象,我们可以统称为 实体,Cesium 中抽象为 Entity 类,实体不仅可以用来绘制简单的几何图形,也能用来绘制复杂的( 如 Model )图形。

二、计算

Cesium 刻画的是一个真实的 3D 地理环境,其所涉及的范围之大,数据种类之多都是超乎想象的,在正确处理海量空间数据关系的情况下,还要保证程序的高性能运行,如果没有大量高效的算法来支持计算是不可能实现的。在 Cesium 中计算无处不在,主要的计算有坐标转换、测量计算、矩阵运算、几何计算和空间分析。哪怕是在地图上展示一个简单的贴地体块,都涉及到坐标和矩阵计算,不然在地球这边垂直向上的物体到了背面就变成了垂直向下。

三、交互

Cesium 的交互功能非常丰富,包括鼠标操作、键盘操作、触摸操作等,这些操作都是通过 ScreenSpaceEventHandler 类来实现的。由交互事件可以衍生出点位绘制、测量等功能。

四、渲染

在常规地图的效果上展示效果想要更加精进,就需要在渲染上下功夫,Cesium 的渲染功能非常强大,可以通过贴图、光照、阴影、后处理等技术来提高地图的真实性和美观度。这些在 Cesium 进阶中我们有详细讲解。

MGis 地理三维库