操作過程
獲取 DEM 地形文件
網上有多種公開的全球 DEM 地形數據,包括 GDEM、SRTM、DLR 等,也有很多下載渠道,就不一一列舉了,感興趣的朋友可以在參考資料里詳細了解。我個人選擇的是數據來源地理空間數據雲,經測試下載速度很快。下載好的文件中包含一個 XXX_dem.tif 文件、一個 XXX_num.tif 文件以及一個 README.pdf 文件。其中 XXX_dem.tif 文件為所需的 DEM 文件。
DEM 拼接
由於 CTB 不支持多張 tif 生成地形文件,因此需要地形文件進行拼接,由於筆者不是 GIS 專業出身,這部分內容不太熟悉,只了解常用工具為 ArcGIS 和 QGIS,就不詳細描述了。
tif 轉 terrain
工具1:Cesium Terrain Builder
Cesium Terrain Builder 是一個用於創建 terrain 文件的 C++ 庫,包含對應的命令行工具。其 windows 安裝過程比較復雜,有很多坑要踩,因此筆者選擇了較為簡單的 linux 安裝方式。
Ubuntu 上 Cesium Terrain Builder 的安裝過程
- 升級 apt-get
sudo apt-get update
- 安裝 make
sudo apt-get install make
- 安裝 gcc
sudo apt-get install gcc
- 安裝 g++
sudo apt-get install g++
- 安裝 Cmake
sudo apt-get install cmake
- 安裝 Ruby
sudo apt-get install ruby
- 安裝 zlib
sudo apt-get install zlib1g
,sudo apt-get install zlib1g.dev
- 安裝 gdal
wget http://download.osgeo.org/gdal/CURRENT/gdal-2.4.1.tar.gz
tar -xzvf gdal-2.4.1.tar.gz
cd gdal-2.4.1
./configure
make
make install
- 安裝 Cesium Terrain Builder
wget https://github.com/geo-data/cesium-terrain-builder/archive/v0.4.1.tar.gz
tar -xzvf v0.4.1.tar.gz
cd cesium-terrain-builder-0.4.1/
mkdir build
cd build
cmake ..
安裝過程中可能會缺少其他組件,查看錯誤列表補充安裝即可。
在安裝 gdal 和 Cesium Terrain Builder 后,可能會出現 "error while loading shared libraries: xxx.so.x" 的錯誤,可能是由於文件安裝在了 /usr/local/lib 目錄下,需要將該目錄加入到配置文件 /etc/ld.so.conf
中,可使用vim 編輯器或以下命令。
cat /etc/ld.so.conf
sudo sh -c "echo '/usr/local/lib' >> /etc/ld.so.conf"
# 更新 ldconfig
ldconfig
安裝完成后輸入 ctb-tile -V
查看 Cesium Terrain Builder 版本。
安裝完成后即可使用 GitHub 中的腳本說明進行轉換操作了,需要注意的是 Cesium Terrain Builder 不會生成 layer.json 文件,需要用 cesium-terrain-builder-docker 生成。
工具2:Cesiumlab 工具箱
官方網站為https://www.cesiumlab.com/,其自身帶了免費的地形處理功能,鑒於 ctb 復雜的安裝過程,可采用該工具箱完成地形轉換操作,由於操作過程較為簡單,此處就不詳述了。
生成完成后的目錄結構如圖所示:
加載
文件生成完成后可使用直接發布為文件服務,在 Cesium 中使用以下代碼加載即可:
viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
url: "/offline-terrain-url"
})
參考
DLR、ASTER GDEM、SRTM3、GMTED2010等5種全球高程數據對比 by VANGE
SRTM、ASTER GDEM等全球數字高程數據(DEM)下載方式簡介 by VANGE
地理空間數據免費獲取(一) by GIS_KHF
Cesium 生成terrain地形數據----CTB方式及步驟 by 大大大大大碗面
Linux下安裝gdal by TheOneGIS
"error while loading shared libraries: xxx.so.x" 錯誤的原因和解決辦法 by sahusoft