影像
Cesium 不仅仅是一个三维地球可视化框架,而且还是一个地图可视化框架,支持加载主流格式的地图影像数据。
在 Viewer 初始化的时候,会有默认的影像图层,默认加载的为 Bing Maps Aerial。

影像管理
去除默认影像
在 Viewer 类的构造参数中看到是一个名为 baseLayer 的参数为我们设置了一个默认的影像地图,如果不想要默认的底图,将此参数设置为 false 即可。
const viewer = new Cesium.Viewer("cesiumContainer", {
baseLayer: false,
});图层集合
在一个项目中,往往需要添加多个影像图层,比如卫星图+标注图层、大范围低精度图层+小范围高精度图层、或者多个专题图层。
此时就需要使用 Viewer 类的 imageryLayers 属性,该属性类型为 ImageryLayerCollection 即影像图层集合,用来管理场景中的影像图层。
viewer.imageryLayers.add(
new Cesium.ArcGisMapServerImageryProvider({
url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
})
);ImageryLayerCollection 重要方法如下
add(layer, index)向集合中添加一个图层addImageryProvider(imageryProvider, index)向集合中添加一个影像服务提供者contains(layer)集合中是否包含某个图层get(index)获取指定索引的图层indexOf(layer)查询图层的索引lower(layer)将图层往下移一层raise(layer)将图层往上移一层raiseToTop(layer)将图层移到最顶remove(layer)删除指定图层removeAll()删除所有图层
默认情况下,先添加到场景中的图层显示在底下,后添加到场景中的图层显示在顶上,所以 ImageryLayerCollection 类提供了相关的方法来控制图层的显示层级。
影像服务提供者
影像图层的类型为 ImageryProvider,我们称之为影像服务提供者。就像前面说到的地形服务提供者那样,底图数据来源多种多样,格式繁杂不一,有基于 OGC 标准的,有基于其他标准的,每个 GIS 厂家出来都可能搞一套自己的标准,都有自己的数据格式。为了解析不同数据格式,所以就有不同的影像服务提供者,而 ImageryLayer 则是上层接口,用以屏蔽这些影像服务提供者的差异,提供统一的操作接口,这就是面向对象编程的多态性。

Cesium 为我们封装了大量的影像服务提供者,具体使用时可以结合自己的数据选择合适的影像服务提供者。
// arcgis 影像服务
const imageryProvider = new Cesium.ArcGisMapServerImageryProvider({
url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
});最后的三个 UrlTemplateImageryProvider、WebMapServiceImageryProvider、WebMapTileServiceImageryProvider 是比较通用的影像加载类,分别也对应了三种规范。
Web 地图服务规范
GIS 开发需要面对各种地图服务规范,例如 WMS、WMTS、TMS 等。WMTS 服务和 WMS 服务都是由开发地理信息联盟(OGC)指定,其不同在于,WMTS 服务采用缓存技术能够缓解 WebGis 服务器端数据处理的压力。TMS 服务由开源空间信息基金会(OSGEO)指定。
1. WMS (Web Map Service)
- 特点 :基于 OGC 标准的动态地图服务,每次请求由服务器实时生成图片
- 渲染方式:动态生成
- 性能:较低
- 适用场景:需要实时数据更新的场景
2. WMTS (Web Map Tile Service)
- 特点 :预生成金字塔瓦片的 OGC 标准服务,持 HTTP 缓存机制,降低服务器负载
- 渲染方式:预切片缓存
- 性能:高
- 适用场景:静态底图服务
3. TMS (Tile Map Service)
- 特点 :OSGeo 维护的瓦片地图规范,采用 {z}/{x}/{y} 的 URL 结构
- 渲染方式:预切片缓存
- 性能:高
- 适用场景:开源地图服务
- 注意:需确保服务坐标系与 Cesium 的 WGS84 坐标系兼容
影像金字塔
上面的 WMTS 和 TMS 在预切片的时候其实都按照影像金字塔的方式去切割。
影像金字塔是栅格数据集的简化的分辨率图像的集合,通过影像重采样方法,建立一系列不同分辨率的影像图层,每个图层分别存储,并建立相应的空间索引机制,从而提高缩放浏览影像时的显示速度。为减小影像的传输数据量和优化显示性能,有时需要为影像建立影像金字塔。
为影像建立了影像金字塔之后,以后每次浏览该影像时,系统都会获取其影像金字塔来显示数据,当您将影像放大或缩小时,系统会自动基于用户的显示比例尺选择最合适的金字塔等级来显示该影像。
