Cesium添加WMS,WMTS,地形圖圖,3D Tiles數據

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* 在編譯器中…