Cesium添加WMS,WMTS,地形图图,3D Tiles数据

Cesium 中,你可以添加 WMSWMTS地形图3D Tiles 数据源。以下是详细的实现方法:


1. 添加 WMS 服务

WMS(Web Map Service)是一种动态地图服务,适用于加载栅格地图图层。

代码示例

javascript 复制代码
const viewer = new Cesium.Viewer("cesiumContainer");

// 添加 WMS 图层
const wmsProvider = new Cesium.WebMapServiceImageryProvider({
    url: "https://your-wms-server.com/wms", // WMS 服务地址
    layers: "layer1,layer2", // 要加载的图层
    parameters: {
        service: "WMS",
        format: "image/png",
        transparent: true,
    },
    enablePickFeatures: false, // 是否支持点击查询
});

viewer.imageryLayers.addImageryProvider(wmsProvider);

参数说明

  • url:WMS 服务地址。
  • layers:要加载的图层名称(多个用逗号分隔)。
  • parameters:WMS 请求参数(如 format, transparent)。
  • enablePickFeatures:是否允许点击查询要素(默认 false)。

2. 添加 WMTS 服务

WMTS(Web Map Tile Service)是一种瓦片地图服务,适合加载高分辨率地图。

代码示例

javascript 复制代码
const viewer = new Cesium.Viewer("cesiumContainer");

// WMTS 配置
const wmtsProvider = new Cesium.WebMapTileServiceImageryProvider({
    url: "https://your-wmts-server.com/wmts", // WMTS 服务地址
    layer: "layer-name", // 图层名称
    style: "default", // 样式
    format: "image/png",
    tileMatrixSetID: "EPSG:3857", // 瓦片矩阵集(如 Web Mercator)
    maximumLevel: 18, // 最大缩放级别
    credit: new Cesium.Credit("Data provided by XXX"), // 数据来源声明
});

viewer.imageryLayers.addImageryProvider(wmtsProvider);

参数说明

  • url:WMTS 服务地址。
  • layer:要加载的图层名称。
  • tileMatrixSetID:瓦片矩阵集(如 EPSG:3857EPSG:4326)。
  • maximumLevel:最大缩放级别(影响加载的瓦片分辨率)。

3. 添加地形数据

Cesium 支持加载 全球地形自定义地形(如 Cesium World Terrain)。

(1)使用 Cesium World Terrain(默认全球地形)

javascript 复制代码
const viewer = new Cesium.Viewer("cesiumContainer", {
    terrainProvider: Cesium.createWorldTerrain(), // 使用 Cesium 全球地形
});

(2)加载自定义地形(如 STK 地形)

javascript 复制代码
const customTerrainProvider = new Cesium.CesiumTerrainProvider({
    url: "https://your-terrain-server.com/terrain", // 地形服务地址
    requestVertexNormals: true, // 是否请求顶点法线(用于光照效果)
    requestWaterMask: true, // 是否请求水面效果
});

const viewer = new Cesium.Viewer("cesiumContainer", {
    terrainProvider: customTerrainProvider,
});

(3)本地地形数据(如 quantized-mesh)

javascript 复制代码
const localTerrainProvider = new Cesium.CesiumTerrainProvider({
    url: "./data/terrain", // 本地地形数据路径
});

const viewer = new Cesium.Viewer("cesiumContainer", {
    terrainProvider: localTerrainProvider,
});

4. 加载 3D Tiles

3D Tiles 是 Cesium 的 3D 数据标准 ,适用于加载 倾斜摄影、BIM、点云 等数据。

(1)加载 3D Tiles 模型

javascript 复制代码
const viewer = new Cesium.Viewer("cesiumContainer");

const tileset = viewer.scene.primitives.add(
    new Cesium.Cesium3DTileset({
        url: "https://your-3dtiles-server.com/tileset.json", // tileset.json 路径
        maximumScreenSpaceError: 2, // 渲染质量(数值越小越精细)
        dynamicScreenSpaceError: true, // 动态调整加载精度
        dynamicScreenSpaceErrorDensity: 0.00278, // 密度控制
    })
);

// 定位到 3D Tiles
viewer.zoomTo(tileset);

(2)调整 3D Tiles 样式

javascript 复制代码
tileset.style = new Cesium.Cesium3DTileStyle({
    color: {
        conditions: [
            ["${Height} >= 100", "color('red')"],
            ["${Height} >= 50", "color('yellow')"],
            ["true", "color('blue')"],
        ],
    },
});

(3)控制 3D Tiles 显隐

javascript 复制代码
tileset.show = false; // 隐藏
tileset.show = true;  // 显示

总结

数据类型 Cesium 加载方式 适用场景
WMS WebMapServiceImageryProvider 动态地图服务
WMTS WebMapTileServiceImageryProvider 瓦片地图服务
地形数据 CesiumTerrainProvider 全球/自定义地形
3D Tiles Cesium3DTileset 3D 模型、BIM、点云

常见问题

  1. WMS/WMTS 加载失败?

    • 检查 url 是否正确,确保服务支持 CORS
    • 确认 layerstileMatrixSetID 参数是否正确。
  2. 3D Tiles 加载慢?

    • 调整 maximumScreenSpaceError 降低渲染质量。
    • 使用 Cesium3DTilesetpreloadWhenHidden 预加载。
  3. 地形不显示?

    • 确保 terrainProvider 正确设置。
    • 检查地形数据路径或服务是否可用。

相关推荐
Mr.wangh3 分钟前
Redis主从复制
java·数据库·redis
穿背心的程序猿5 分钟前
推荐一款集成AI功能的数据库管理工具
数据库
柱子jason1 小时前
使用IOT-Tree消息流【标签读写】功能详细说明
数据库·物联网·时序数据库·influxdb·iot-tree
鲲志说2 小时前
电子证照系统国产化改造实践:从MongoDB到金仓数据库的平滑迁移与性能优化
大数据·数据库·mongodb·性能优化·数据库开发·数据库架构·金仓数据库
范纹杉想快点毕业3 小时前
单片机开发中的队列数据结构详解,队列数据结构在单片机软件开发中的应用详解,C语言
c语言·数据库·stm32·单片机·嵌入式硬件·mongodb·fpga开发
William_cl4 小时前
【连载2】 MySQL 事务原理详解
数据库·mysql
java水泥工4 小时前
师生健康信息管理系统|基于SpringBoot和Vue的师生健康信息管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
chirrupy_hamal4 小时前
PostgreSQL WAL 日志发展史 - pg7
数据库·postgresql
五颜六色的池5 小时前
my sql 常用函数及语句的执行顺序
数据库·sql
Gold Steps.5 小时前
从 “T+1” 到 “秒级”:MySQL+Flink+Doris 构建实时数据分析全链路
大数据·数据库·数据分析