1. 程式人生 > >CesiumLab 地形資料處理

CesiumLab 地形資料處理

最近接連有使用者反應地形資料處理的各種問題,我也是各種測試,想想還是整理一個文件徹底說明一下。

地形柵格資料格式,一般是tif ,也有dem或者img,但是我個人強烈建議使用tif格式,因為cesiumlab都是用這個格式測試的。

我們先說一下地形柵格資料的幾個關鍵引數:

強烈建議處理之前,先用arcmap開啟,確保以下引數正常

1,空間參考(spatial reference)

spatial reference 定義了 柵格資料的座標空間,下圖為正常引數,如果arcmap 這裡顯示undefined,那表示空間參考未知,必然無法正常處理。

 
柵格的空間參考資訊

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

  cesiumlab中指定空間索引

2,無資料值(nodata)

nodata定義了刪格中的無效資料資料值,也就是說如果柵格里某個畫素的值 = nodata,意味著該畫素沒有資料。

對於nodata的處理,cesiumlab把該位置使用高程0填充。

 但是原始資料中這個值很亂,完全是使用者設定的,柵格里可能沒有這個nodata資訊,也可能為任意值。一般使用者會設定一個超大的負數值,比如 -10000  ,-99999等。這裡強烈建議,不要設定資料極值,例如-1.797693e+308 ,這種極值會導致中間計算出現非數字,導致地形處理異常。

  無資料值

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

   

  這個-9999.005859是怎麼來的? 我們還是必須通過arcmap開啟tif,使用indentify工具,點選我們明確知道是無資料區域,那麼獲得他的值。

  arcgis里人工判定nodata

 

3,地理範圍(extent)

    柵格資料實際上是一張圖片,必須要一個轉換,把畫素座標轉到地理座標,這就是extent,在gdal裡是geotransform。在arcmap裡如下圖所示

  柵格的地理範圍

正常這裡應該顯示的地理座標,如果你發現這個extent的四個值裡有0,那麼基本意味著,你的tif的地理範圍資訊缺失。

tif 一般把這個資訊儲存在檔案內,還有另一種方式儲存為 同名的tfw 檔案。

所以我們處理或者拷貝資料的時候,如果有tfw,請一併拷貝。

 

  tfw檔案

 

確保上面三個關鍵引數正確,我們再分析cesiumlab處理地形的異常情況原因

1, 瞬間結束

      空間參考缺失  或者  地理範圍缺失

2,處理完成之後半邊黑球

      nodata 過大

3,地形高程異常

      nodata 缺失或者不正確

4,位置不正確或伴隨高程不正常

      一般是空間參考不正確

根據異常原因,請在arcmap使用相關工具處理你的柵格資料。