Cesium 是一款開源的虛擬地球引擎,可以在瀏覽器中實現高效的三維渲染和地理空間數據可視化。其中一個重要特性就是支持加載高精度的地形數據,而地形數據最常見的格式就是 Cesium Terrain JSON。本文將介紹 Cesium Terrain JSON 的基本結構、如何生成和加載。
{ "batchTable": { ... }, "extensionsUsed": [ "CESIUM_RTC" ], "geometricError": 70, "header": { "boundingSphere": { ... }, "childTileMask": 3, "contentBoundingVolume": { ... }, "geometricError": 70, "refine": "ADD" }, "root": { "boundingVolume": { ... }, "geometricError": 70, "refine": "ADD", "content": { "url": "https://assets.cesium.com/1/carlson-terrain/" } }, "version": "1.0" }
Cesium Terrain JSON 文件包含以下幾個部分:
1. batchTable
batchTable 是一個可選的屬性,它可以包含一些列數據,這些數據可以與地形數據進行匹配。例如,我們可以根據 batchTable 中的屬性來給不同高度的地形貼上不同的材質。
2. extensionsUsed
extensionsUsed 是一個字符串數組,用于指示該 JSON 文件需要哪些擴展。Cesium RTC 是一種擴展,用于支持 Cesium 的實時渲染技術。
3. geometricError
geometricError 表示地形數據的精度。其值越小,表示地形數據越精細,但加載速度越慢。
4. header
header 是一個對象,它描述了數據集的頭部信息。包括 boundingSphere、childTileMask、contentBoundingVolume、geometricError 和 refine 等屬性。
5. root
root 描述了數據集中的根節點。
6. content
content 是一個包含地形數據的 URL,可以是絕對路徑或相對路徑。
7. version
version 表示地形數據的版本號,目前最新的版本為 1.0。
如何生成和加載
生成 Cesium Terrain JSON 最常用的工具是 Cesium Terrain Builder,它可以將高程數據轉換為 Cesium Terrain JSON 格式。加載地形數據可以使用 Cesium 的 TerrainProvider 和 CesiumTerrainProvider 組件。
var viewer = new Cesium.Viewer('cesiumContainer'); var terrainProvider = new Cesium.CesiumTerrainProvider({ url : 'https://assets.cesium.com/1/carlson-terrain/', requestWaterMask : true, requestVertexNormals : true }); viewer.terrainProvider = terrainProvider;
以上示例代碼演示了如何加載地形數據,并將其覆蓋在 Cesium 的默認地形之上。