最近接連有用戶反應地形數據處理的各種問題,我也是各種測試,想想還是整理一個文檔徹底說明一下。
地形柵格數據格式,一般是tif ,也有dem或者img,但是我個人強烈建議使用tif格式,因為cesiumlab都是用這個格式測試的。
我們先說一下地形柵格數據的幾個關鍵參數:
強烈建議處理之前,先用arcmap打開,確保以下參數正常
1,空間參考(spatial reference)
spatial reference 定義了 柵格數據的坐標空間,下圖為正常參數,如果arcmap 這里顯示undefined,那表示空間參考未知,必然無法正常處理。

如果tif中不含空間參考,但是空間參考數據處理人員又明確知道,那么可以在cesiumlab中指定。反過來說如果不確定,那就不要亂嘗試,只會浪費處理時間。

2,無數據值(nodata)
nodata定義了刪格中的無效數據數據值,也就是說如果柵格里某個像素的值 = nodata,意味着該像素沒有數據。
對於nodata的處理,cesiumlab把該位置使用高程0填充。
但是原始數據中這個值很亂,完全是用戶設置的,柵格里可能沒有這個nodata信息,也可能為任意值。一般用戶會設置一個超大的負數值,比如 -10000 ,-99999等。這里強烈建議,不要設置數據極值,例如-1.797693e+308 ,這種極值會導致中間計算出現非數字,導致地形處理異常。

如果原始柵格中沒有nodata值,只有一種情況處理地形高程會正常(數據的空間參考是wgs84,地形數據邊界為矩形),除此之外都必須設置此值。在cesiumlab選中對應tif,如下設置。

這個-9999.005859是怎么來的? 我們還是必須通過arcmap打開tif,使用indentify工具,點擊我們明確知道是無數據區域,那么獲得他的值。

3,地理范圍(extent)
柵格數據實際上是一張圖片,必須要一個轉換,把像素坐標轉到地理坐標,這就是extent,在gdal里是geotransform。在arcmap里如下圖所示

正常這里應該顯示的地理坐標,如果你發現這個extent的四個值里有0,那么基本意味着,你的tif的地理范圍信息缺失。
tif 一般把這個信息存儲在文件內,還有另一種方式存儲為 同名的tfw 文件。
所以我們處理或者拷貝數據的時候,如果有tfw,請一並拷貝。

確保上面三個關鍵參數正確,我們再分析cesiumlab處理地形的異常情況原因
1, 瞬間結束
空間參考缺失 或者 地理范圍缺失
2,處理完成之后半邊黑球
nodata 過大
3,地形高程異常
nodata 缺失或者不正確
4,位置不正確或伴隨高程不正常
一般是空間參考不正確
根據異常原因,請在arcmap使用相關工具處理你的柵格數據。