解決Cesium開挖時沒數據問題

遇到的問題,是Cesium開挖時沒數據,因爲Cesium.sampleTerrainMostDetailed()需要額外的細節。

 

我首先看了下CTB,CTB中出現的問題是寫.terrain時,用的gzwrite(),這樣是不行的,改用fwrite時,正常寫數據。如果不用Cesium.sampleTerrainMostDetailed(),還是可以開挖的。

這裏說下CTB,有.terrain->.tif和.tif->.terrain兩種方式,其中.tif是float32,.terrain是int16,.terrain格式是固定的,但是.tif是可以改的,不一定非是浮點數,只是代碼上寫死了而已。

 

言歸正傳,問題聚焦在mostdetailed,需要額外的數據,於是參照萬花筒的格式,輸出了每個級別佔用的塊數,發現還是不行,因爲生成的是高程圖,於是更改爲"format":"heightmap-1.0",然後OK

 

這裏總結下四叉樹數據的重採樣問題,比較複雜,分爲以下幾步


1,給定.tif,得到級別及四至
2,根據級別,進行向上計算重採樣(並不真的重採樣),至0級或者1塊,
3.1,如果是0級,則分塊(如果>1塊)
3.2,如果到1塊還沒有到0級時,到第N級,則將0-N級都設置爲N級的數據
4,對每一級進行四叉樹分塊,判斷每塊的起始終止座標,
5,對地球進行按級別計算每塊xy方向的度數,
6,根據每塊起始終止座標和該級別每塊的度數,計算出在哪塊,放入四至佔用塊座標數組中。
7,輸出四至佔用塊數組

 

其中,關鍵在於第5步和第6步

非常感謝博客園烏合之衆,也是我查找到的唯一的.terrain格式說明的,讓我有了方向https://www.cnblogs.com/oloroso/p/11063905.html

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章