关于 Cesium
Cesium 是一个基于 JavaScript 开发的三维地球和地图可视化开源库。它利用了现代 Web 技术,如 WebGL、WebWorker 和 WebAssembly,来提供跨平台和跨浏览器的三维地理空间数据可视化。接下来让我们一起来看下其主要功能以及能实现的效果:
一、地球可视化
Cesium 可以在 Web 浏览器中显示高度真实感的 3D 地球场景,如何来构成一个地球,Cesium 做了这些拆分:
1、地球球体
我们拿一个灯笼来举例,地球球体就类似灯笼的骨架,决定了其形状。

Cesium 中球体被抽象为 Ellipsoid (地球椭球体),并在 Globe 类中进行管理,默认使用 WGS84 椭球 ,当然官方也提供其他椭球体,在 地球球体 中我们将详细介绍。
2、影像
现在我们给灯笼贴上纸,也就是我们的影像。

影像在 Cesium 中被抽象为 ImageryLayer 类,主要是通过加载 影像数据 来实现 。
加载不同的影像资源我们可以得到不同的效果,例如昼夜效果:

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

地形在 Cesium 中被抽象为 Terrain 类,主要是通过加载 地形数据 来实现,地形数据包含了每个点的高度信息,通过这些高度信息可以绘制出地形。
4、环境
蓝天白云、太阳月亮、大气星空都是现实世界中的自然现象,作为一个三维地球可视化框架,这些是不可或缺的。
蓝天白云、星空在 Cesium 中抽象为 SkyBox 天空盒 类
大气抽象为 SkyAtmosphere 类
太阳抽象为 Sun 类
月亮抽象为 Moon 类
5、实体
自然地理环境中的各种空间对象虽然种类繁多,但是都可以抽象为简单的几何图形,比如海洋湖泊可以抽象为多边形几何,道路河流可以抽象为线几何,而人车树木则可以抽象为点几何。自然地理环境中的各种空间对象,我们可以统称为 实体,Cesium 中抽象为 Entity 类,实体不仅可以用来绘制简单的几何图形,也能用来绘制复杂的( 如 Model )图形。
二、计算
Cesium 刻画的是一个真实的 3D 地理环境,其所涉及的范围之大,数据种类之多都是超乎想象的,在正确处理海量空间数据关系的情况下,还要保证程序的高性能运行,如果没有大量高效的算法来支持计算是不可能实现的。在 Cesium 中计算无处不在,主要的计算有坐标转换、测量计算、矩阵运算、几何计算和空间分析。哪怕是在地图上展示一个简单的贴地体块,都涉及到坐标和矩阵计算,不然在地球这边垂直向上的物体到了背面就变成了垂直向下。
三、交互
Cesium 的交互功能非常丰富,包括鼠标操作、键盘操作、触摸操作等,这些操作都是通过 ScreenSpaceEventHandler 类来实现的。由交互事件可以衍生出点位绘制、测量等功能。
四、渲染
在常规地图的效果上展示效果想要更加精进,就需要在渲染上下功夫,Cesium 的渲染功能非常强大,可以通过贴图、光照、阴影、后处理等技术来提高地图的真实性和美观度。这些在 Cesium 进阶中我们有详细讲解。