Cesium學習筆記——dem/tif地形的分塊與加載

前言

????????在Cesium的學習中,學會讀文檔十分重要!!!在這里附上Cesium中英文文檔1.117。

? ? ? ? 在Cesium項目中,在平坦坦地球中加入三維地形不僅可以增強真實感與可視化效果,還可以??提升用戶體驗與交互性,今天,我們來學習一下如何將dem/tif格式的地形數據進行分塊和加載。

一、dem/tif格式數據下載

? ? ? ? DEM(??Digital Elevation Model??)是描述地表高程信息的數字模型,通過規則網格或點云數據記錄地形起伏,廣泛應用于地理信息系統(GIS)、遙感、三維可視化(如Cesium)等領域。

1.1、DEM常見數據格式

  1. GeoTIFF(.tif)?????:地理參考的柵格格式,高程值存儲為像素值,元數據(坐標、投影)嵌入文件頭。其兼容性強,QGIS、ArcGIS、Python GDAL均支持。 如NASA SRTM數據(30米分辨率)常以GeoTIFF分發。
  2. ASCII Grid(.asc):純文本格式,以行列數、網格尺寸、高程值矩陣定義地形。
  3. ??HGT(.hgt):SRTM任務專用格式,每文件覆蓋1°×1°區域。
  4. DEM(.dem):USGS標準格式,含頭文件(坐標、分辨率)和二進制高程數據。
  5. ??Point Cloud(.las/.laz):離散點云記錄高程,精度極高但需柵格化生成DEM。

1.2、DEM數據的獲取

? ? ? ? 在國內,我們可以使用地理空間數據云來獲取DEM數據。

????????地理空間數據云(GSCloud)旨在通過云計算、大數據等技術,解決科研人員在地理空間數據全流程(搜索、獲取、分析等)中的需求,推動數據開放共享與高效利用。其服務理念為“開放共享、創新服務”,已發展成為國內最具影響力的地學數據平臺之一。

????????在左上角的數據集中,我們可以選擇想要的DEM類型,然后選擇其空間位置,將其下載下來,一般這里的格式為dem或tif,如果是其他格式如img,可以在gis軟件中將其轉換,方便后續切片的處理。

? ? ? ? 下載好的數據直接預覽可能一片漆黑,要專業的gis軟件預覽的效果會好一點。

二、數據切片

? ? ? ? 切片是指將??原始DEM數據??(如整塊GeoTIFF或HGT文件)切割成??多層級瓦片金字塔??(Tile Pyramid),每個瓦片(Tile)覆蓋特定地理范圍和分辨率,按需動態加載,提升性能。

? ? ? ? 而全球30米分辨率DEM未經切片的原始數據可能高達數十GB,直接加載會耗盡內存和網絡帶寬。

? ? ? ? 這里,我們使用cesiumlab來進行切片(也可以用gdal+python)。CesiumLab?是一個基于WebGL技術的3D地理信息系統(GIS)平臺,主要用于在瀏覽器中呈現和分析地理空間數據。它由Cesium平臺設計,旨在最大化提升三維數據可視化效率?。最重要的是,其基礎功能基本上免費。

????????

????????這里,存儲類型記得改成散列,在提交處理時,有可能會讓你登錄,若未登錄,點擊上面的網站注冊一下就好了,然后第一次登錄的賬號密碼就是注冊的賬號密碼,默認密碼是手機號后8位。

? ? ? ? 切片好的文件夾如下,其中meta是其元數據,我們可以從中獲取此DEM的范圍等信息。

{"bounds": {"east": 117.00018882751465,"north": 30.00014305114746,"south": 28.99970054626465,"west": 115.99974632263184},"contentType": "quantizedmesh","latLonBounds": {"east": 117.00018882751465,"north": 30.00014305114746,"south": 28.99970054626465,"west": 115.99974632263184},"maxzoom": 14,"minzoom": 0,"proj": 4326,"tiletrans": "tms","type": "terrain","ziped": false
}

三、TerrainProvider的介紹

? ? ? ? 在Cesium中,一般使用Cesium.TerrainProvider來加載地形。TerrainProvider是Cesium的一個接口,負責從服務器或本地獲取地形瓦片數據。

? ? ? ? 它有幾個子類,EllipsoidTerrainProvider,CesiumTerrainProvider VRTheWorldTerrainProvider,GoogleEarthEnterpriseTerrainProvider,ArcGISTiledElevationTerrainProvider。其中EllipsoidTerrainProvider是用來加載橢球模型(無真實的地形),CesiumTerrainProvider可以用來加載cesium自帶的地形或者是用戶的地形,VRTheWorldTerrainProvider支持從VT MAK VR-TheWorld Server服務器請求的高度地圖地形圖,最后兩個是谷歌和ArcGIS的地形。

? ? ? ? 這里,我們主要學習用CesiumTerrainProvider加載地形。

四、CesiumTerrainProvider加載默認地形

????????在這個文檔中,CesiumTerrainProvider不能直接構造地形對象(可能其他的版本不一樣),其支持兩種格式的地形

  • Quantized Mesh
  • Height Map

? ? ? ? 我們上面的切片地形是第一種格式的。

? ? ? ??CesiumTerrainProvider提供了兩種加載地形的方法CesiumTerrainProvider.fromIonAssetId 和?CesiumTerrainProvider.fromUrl,其中第一種可以用來加載Cesium的資源,但在這之前,記得先申請一個Ion。Cesium.Ion.defaultAccessToken =‘你的Ion’

? ? ? ? 其有兩個參數,第一個是資源id,比如說地形是1,第二個是對象,其有如下參數,第一個是真實的地球光照,第二個是水的渲染,但是需要從服務器獲取。

  let terrainProvider1 = Cesium.CesiumTerrainProvider.fromIonAssetId(1, {requestVertexNormals: true,requestWaterMask: true,});viewer.terrainProvider = terrainProvider1;

? ? ? ? 效果如下,但是默認的地形受網絡影響大,有時候加載不出來。

五、CesiumTerrainProvider加載本地地形

5.1、直接加載

? ? ? ? 本地地形則是通過CesiumTerrainProvider.fromUrl函數來加載。它的參數也和上面的類似,但是第一個路徑需要是相對路徑,在本地Cesium無法讀取絕對路徑。

? ? ? ? 注意這個路徑所在文件夾terrain是打開里面一個有json文件的文件夾,這里我把terrain放在public里。

  let terrainProvider = Cesium.CesiumTerrainProvider.fromUrl('/terrain',);viewer.terrainProvider = terrainProvider;

5.2、服務器代理加載?

? ? ? ? 但是上面那種方法無法用于實際生產,因為我們切片的目的就是提高性能,減少頁面體積,如果直接放在public里,這些地形切片會直接和前端頁面一起全部發送給瀏覽器,相當于沒有解決問題。

? ? ? ? 而且,這些地形通常是不變的靜態數據,因此我們可以用一個服務器來進行發布。這里,我用nginx,也可以用python,tomcat等。

? ? ? ? 我們先去nginx官網下載一個nginx。下載好后,其目錄結構如下。terrain是我們的切片地形,需要我們復制過來(terrain1是我的另一個)。

? ? ? ? 接下來,我們要對其進行代理配置,進入第一個文件夾,里面有一個nginx.conf文件,這是其配置文件。其配置內容大概如下。

  • ?全局塊(main)?:設置工作進程數(worker_processes auto;匹配CPU核心數)、錯誤日志路徑及級別(建議生產環境用warn級別)?
  • events塊?:定義連接處理模型(如use epoll;優化Linux性能)、單個進程最大連接數(高并發場景需調高worker_connections)
  • http塊?:包含全局HTTP設置(如MIME類型、日志格式)、多個server虛擬主機配置? ?
  • server塊?:定義監聽端口(listen 80;)、域名(server_name)、訪問控制規則,內部嵌套location路徑匹配規則

????????這里,我們要配置的是server這一塊,其默認端口號為 80,這里我改成了9999。

????????然后就是location路徑匹配規則,root里面的是根路徑,如何不修改,nginx默認訪問的就是這個文件夾,這里要改成我們代理的文件夾terrain。

????????atuoindex on在Nginx配置中用于開啟目錄瀏覽功能。當設置autoindex on時,Nginx會在訪問指定目錄時顯示該目錄下的文件列表,類似于文件管理器中的目錄瀏覽功能,這里我們要開啟才能訪問我們的資源。

? ? ? ? 最后就是一些跨域請求問題,全部允許。

    server {listen       9999;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   terrain;autoindex on;# 支持跨域add_header Access-Control-Allow-Origin *;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';}

? ? ? ? ?最后點擊nginx.exe啟動,瀏覽器訪問http://localhost:9999/就可以訪問到文件里面的內容。

? ? ? ? 最后,將這個路徑填入即可。

  let terrainProvider = Cesium.CesiumTerrainProvider.fromUrl('http://localhost:9999/',);viewer.terrainProvider = terrainProvider;

? ? ? ? 最后效果如下,如果大家喜歡我的文章的話,請點一個免費的贊和關注吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77635.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77635.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77635.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot 斷點續傳實戰:大文件上傳不再怕網絡中斷

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、痛點與挑戰 在網絡傳輸大文件(如視頻、數據集、設計稿)時,常面臨: 上傳中途網絡中斷需重新開始服務器內…

數碼管LED顯示屏矩陣驅動技術詳解

1. 矩陣驅動原理 矩陣驅動是LED顯示屏常用的一種高效驅動方式,利用COM(Common,公共端)和SEG(Segment,段選)線的交叉點控制單個LED的亮滅。相比直接驅動,矩陣驅動可以顯著減少所需I/…

【上位機——MFC】菜單類與工具欄

菜單類 CMenu,封裝了關于菜單的各種操作成員函數,另外還封裝了一個非常重要的成員變量m_hMenu(菜單句柄) 菜單使用 添加菜單資源加載菜單 工具欄相關類 CToolBarCtrl-》父類是CWnd,封裝了關于工具欄控件的各種操作。 CToolBar-》父類是CC…

liunx中常用操作

查看或修改linux本地mysql端口 cat /etc/my.cnf 如果沒有port可以添加,有可以修改 查看本地端口占用情況 bash netstat -nlt | grep 3307 HADOOP集群 hdfs啟動與停止 # 一鍵啟動hdfs集群 start-dfs.sh # 一鍵關閉hdfs集群 stop-dfs.sh #除了一鍵啟停外&#x…

衡石chatbi如何通過 iframe 集成

iframe 集成方式是最簡單的一種&#xff0c;您只需要在您的 HTML 文件中&#xff08;或 Vue/React 組件中&#xff09;添加一個 iframe 元素&#xff0c;并設置其 src 屬性為 AI 助手的 URL。 <iframesrc"https://develop.hengshi.org/copilot"width"100%&q…

Java集合框架深度解析:HashMap、HashSet、TreeMap、TreeSet與哈希表原理詳解

一、核心數據結構總覽 1. 核心類繼承體系 graph TDMap接口 --> HashMapMap接口 --> TreeMapSet接口 --> HashSetSet接口 --> TreeSetHashMap --> LinkedHashMapHashSet --> LinkedHashSetTreeMap --> NavigableMapTreeSet --> NavigableSet 2. 核心特…

HTTP 1.0 和 2.0 的區別

HTTP 1.0 和 2.0 的核心區別體現在性能優化、協議設計和功能擴展上&#xff0c;以下是具體對比&#xff1a; 一、核心區別對比 特性HTTP 1.0HTTP 2.0連接方式非持久連接&#xff08;默認每次請求新建 TCP 連接&#xff09;持久連接&#xff08;默認保持連接&#xff0c;可復用…

gnome中刪除application中失效的圖標

什么是Application 這一塊的東西應該叫application&#xff0c;準確來說應該是applications。 正文 系統級&#xff1a;/usr/share/applications 用戶級&#xff1a;~/.local/share/applications ying192 ~/.l/s/applications> ls | grep xampp xampp.desktoprm ~/.local…

OpenFeign 使用教程:從入門到實踐

文章目錄 一、什么是 OpenFeign&#xff1f;1、什么是 OpenFeign&#xff1f;2、什么是 Feign&#xff1f;3、OpenFeign 與 Feign 的關系4、為什么選擇 OpenFeign&#xff1f;5、總結 二、OpenFeign 的使用步驟1. 導入依賴2. 啟用 OpenFeign3. 配置 Nacos 三、FeignClient 參數…

藍橋杯 16.對局匹配

對局匹配 原題目鏈接 題目描述 小明喜歡在一個圍棋網站上找別人在線對弈。這個網站上所有注冊用戶都有一個積分&#xff0c;代表他的圍棋水平。 小明發現&#xff0c;網站的自動對局系統在匹配對手時&#xff0c;只會將積分差恰好是 K 的兩名用戶匹配在一起。如果兩人分差小…

C#常用LINQ

在開發時發現別人的代碼使用到了LINQ十分便捷且清晰&#xff0c;這里記錄一下常用LINQ和對應的使用。參考鏈接&#xff1a;LINQ 菜鳥教程 使用的學生類和字符串用于測試 public class Student {public int StudentID;public string StudentName;public int Age; }Student[] st…

單例模式(線程安全)

1.什么是單例模式 單例模式&#xff08;Singleton Pattern&#xff09;是一種創建型設計模式&#xff0c;旨在確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問該實例。這種模式涉及到一個單一的類&#xff0c;該類負責創建自己的對象&#xff0c;同時確保只有單…

Python 之 __file__ 變量導致打包 exe 后路徑輸出不一致的問題

現象 做項目的時候&#xff0c;一直使用 os.path.dirname(os.path.abspath(__file__)) 來獲取當前目錄。然而&#xff0c;最近卻遇到了一個路徑相關的問題。直接運行 py 文件是正常的&#xff0c;但是打包成 exe 之后&#xff0c;卻顯示因為路徑問題導致程序報錯無法繼續執行。…

PH熱榜 | 2025-04-21

1. Google Whisk 2.0 標語&#xff1a;將圖像轉換為八秒的動畫短片。 介紹&#xff1a;Whisk 是谷歌實驗室的一項新創新&#xff0c;現在推出了 Whisk Animate——它可以將你的圖片轉換成生動的8秒視頻&#xff0c;采用了 Veo 2 技術。此功能現已在60多個國家的 Google One A…

AI大模型 —— 國產大模型 —— 華為大模型

有這么一句話&#xff0c;那就是AI大模型分兩種&#xff0c;一種是大模型&#xff1b;另一種是華為大模型。 如果從技術角度來分析&#xff0c;華為的技術不論是在軟件還是硬件都比國外的大公司差距極大&#xff0c;甚至有些技術評論者認為華為的軟硬件技術至少落后2.5代&#…

FPGA 中 XSA、BIT 和 DCP 文件的區別

在 FPGA&#xff08;現場可編程門陣列&#xff09;開發中&#xff0c;XSA、BIT 和 DCP 文件是常見的文件類型&#xff0c;它們在功能、用途、文件內容等方面存在明顯區別&#xff0c;以下是詳細介紹&#xff1a; 1. XSA 文件 定義與功能 XSA&#xff08;Xilinx Shell Archiv…

MH2103系列coremark1.0跑分數據和優化,及基于arm2d的優化應用

CoreMark 1.0 介紹 CoreMark 是由 EEMBC&#xff08;Embedded Microprocessor Benchmark Consortium&#xff09;組織于 2009 年推出的一款用于衡量嵌入式系統 CPU 或 MCU 性能的標準基準測試工具。它旨在替代陳舊的 Dhrystone 標準&#xff08;Dhrystone 容易受到各種libc不同…

云原生與AI的關系是怎么樣的?

云原生與AI的結合正在重塑現代應用的開發與部署模式&#xff0c;兩者相輔相成&#xff0c;共同推動技術創新與產業升級。以下是兩者的核心概念、結合點及未來趨勢的詳細解析&#xff1a; 一、云原生與AI的核心概念 云原生&#xff08;Cloud Native&#xff09; ? 定義&#…

【CentOs】構建云服務器部署環境

(一) 服務器采購 2 CPU4G 內存40G 系統盤 80G 數據盤 (二) 服務器安全組和端口配置 (三) 磁盤掛載 1 登錄 root 2 查看目前磁盤使用情況 df -h 3 查看磁盤掛載情況 識別哪些磁盤沒掛載 fdisk -l 4 對未掛載磁盤做分區 fdisk /dev/vdb 輸入m&#xff0…

LangChain4j語言模型選型指南:主流模型能力全景對比

LangChain4j語言模型選型指南&#xff1a;主流模型能力全景對比 前言 在大語言模型應用開發中&#xff0c;選擇合適的底層模型提供商是架構設計的關鍵決策。LangChain4j作為Java生態的重要AI框架&#xff0c;其支持的20模型提供商各有獨特的優勢場景。本文通過功能矩陣深度解…