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


1. 添加 WMS 服务

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

代码示例

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)是一种瓦片地图服务,适合加载高分辨率地图。

代码示例

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(默认全球地形)

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

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

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)

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 模型

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 样式

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

(3)控制 3D Tiles 显隐

tileset.show = false; // 隐藏
tileset.show = true;  // 显示

总结

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

常见问题

  1. WMS/WMTS 加载失败?

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/903748.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/903748.shtml
英文地址,请注明出处:http://en.pswp.cn/news/903748.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库基本概念:数据库的定义、特点、分类、组成、作用

一:数据库相关概念 1.1 定义 (1)数据库:存储数据的仓库 (2)数据库管理系统:模拟和管理数据库的大型软件 (3)SQL:操作关系型数据库的编程语言,定义…

【项目篇之消息序列化】仿照RabbitMQ模拟实现消息队列

实现消息序列化 为什么不使用JSON来序列化直接使用二进制序列化实现序列化方法toBytes()1: 创建内存缓冲区​​2 :创建对象序列化通道​3:执行序列化操作​4:提取二进制数据,转换成byte[]序列化图示流程:序…

单片机-89C51部分:13、看门狗

飞书文档https://x509p6c8to.feishu.cn/wiki/LefkwDPU7iUUWBkfKE9cGLvonSh 一、作用 程序发生死循环的时候(跑飞),能够自动复位。 启动看门狗计数器->计数器计数->指定时间内不对计数器赋值(主程序跑飞,无法喂…

C++23/26 静态反射机制深度解析:编译时元编程的新纪元

目录 引言 一、C静态反射的核心特性 1. 编译时元数据获取 2. 元信息操作的语法革新 3. 与现有特性的深度融合 二、应用场景:从理论到实践 1. 序列化与反序列化 2. 领域特定语言(DSL)与代码生成 3. 动态插件系统 4. 调试与元编程增强…

RISCV学习(5)GD32VF103 MCU架构了解

RISCV学习(5)GD32VF103 MCU架构了解 1、芯片内核功能简介 GD32VF103 MCU架构,采用Bumblebee内核,芯来科技(Nuclei System Technology)与台湾晶心科技(Andes Technology)联合开发&am…

【Java学习笔记】递归

递归(recursion) 思想:把一个复杂的问题拆分成一个简单问题和子问题,子问题又是更小规模的复杂问题,循环往复 本质:栈的使用 递归的注意事项 (1)需要有递归出口,否者就…

渗透测试中的那些“水洞”:分析与防御

1. Nginx 版本泄露 风险分析: Nginx 默认会在响应头中返回 Server: nginx/x.x.x,攻击者可利用该信息匹配已知漏洞进行攻击。 防御措施: 修改 nginx.conf 配置文件,隐藏版本信息:server_tokens off;使用 WAF 进行信息…

基于C#开发的适合Windows开源文件管理器

使用DDD从零构建一个完整的系统 推荐一个功能强大且直观的开源文件管理器,适用于Windows平台。 01 项目简介 该项目是一个基于C#开发、开源的文件管理器,适用于Windows,界面UI美观、方便轻松浏览文件。此外,支持创建和提取压缩…

实习入职的总结

我是4月14号入职的,到现在差不多已经三个礼拜了,今天想总结一下这段时间的工作情况,并给学弟学妹们提供一些指引。 目前,我所在的公司是一家初创企业,专注于IPC安防领域。作为一名大专生,我深知自己的学历在…

Ubuntu 系统上部署 Kubernetes 的完整指南

Ubuntu 系统上部署 Kubernetes 的完整指南 一、环境准备(Ubuntu 22.04/24.04)1. 系统初始化2. 安装容器运行时(containerd)3. 安装 Kubernetes 组件(kubeadm, kubelet, kubectl) 二、部署 Kubernetes 集群1…

partition_pdf 和chunk_by_title 的区别

from unstructured.partition.pdf import partition_pdf from unstructured.chunking.title import chunk_by_titlepartition_pdf 和 chunk_by_title 初看有点像,都在"分块",但是它们的本质完全不一样。 先看它们核心区别 partition_pdfchun…

基于深度学习的医疗诊断辅助系统设计

标题:基于深度学习的医疗诊断辅助系统设计 内容:1.摘要 随着医疗数据的爆炸式增长和深度学习技术的飞速发展,开发基于深度学习的医疗诊断辅助系统具有重要的现实意义。本研究的目的在于设计一个高效、准确的医疗诊断辅助系统,以辅助医生进行更精准的诊断…

Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟

Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟 前言一、PWM调制技术基本原理二、仿真模型中加入PWM调制三、逆变电路MOS管添加体二极管四、模拟添加机械负载五、仿真模型与控制框图文章相关模型文件下载链接参考链接 前言 本系列文…

Curl 全面使用指南

Curl(Client URL)是一个跨平台命令行工具,支持多种协议(HTTP/HTTPS/FTP/SFTP等),用于数据传输、API调试、文件上传/下载等场景。以下从 核心功能、用户疑问解答、高级技巧 三方面系统总结,并整合…

PyTorch中“原地”赋值的思考

在开发一个PyTorch模块时,遇到了一个诡异的现象,将他描述出来就是下面这样: f[..., :p_index - 1] f[..., 1:p_index] 这个操作将f张量的部分数值进行左移,我在模型训练的时候还能正常跑,但是当我将模型部署到项目中…

什么是:云边端一体化架构

什么是云边端一体化架构 文章目录 什么是云边端一体化架构云、边、端云计算边缘计算终端设备 云边端一体化协同云边端一体化架构协同的流程云边端一体化架构协同的应用云边端一体化架构协同的价值云边端一体化架构协同未来发展趋势 云、边、端 云(Cloud&#xff09…

gephi绘图

参考: 如何在Gephi中正确的显示中文? Gephi绘制网络图初步探索 gephi 节点标签 调节_图分析与可视化-从Gephi开始

马克·雷伯特:用算法让机器人飞奔的人

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 马克雷伯特:用算法让机器人飞奔的人 一、天才的起点 在机器人领域,有一个名字如雷贯耳——马克雷伯特(Marc Raibert)。作为波士顿动力公司(Boston…

三维装配可视化界面开发笔记

三维装配可视化界面开发笔记 项目概述 这是一个基于Vue.js和Three.js的三维装配可视化系统,用于展示机械零部件的装配和拆解过程。系统支持模型加载、拆解/装配路径生成、动画展示和工艺流程图生成等功能。 技术栈 前端框架: Vue 3 (使用组合式API)构建工具: Vi…

深⼊理解指针(8)

1.对上一篇的补充内容 typedef int* ptr_t #define PTR_T int* 这两种写法都是可以的 ptr_t p1, p2; //p1, p2 都是指针变量 PTR_T p3, p4; //p3 是指针变量, p4是整型变量 为什么p3 是指针变量, p4是整型变量呢? 因为PTR_T 真的被改为了 int* 在编译器中…