之前在學習《實戰Opengl》的時候,系統使用的三維地形dem資料是美國萊卡公司Helava全數字攝影測量系統來擷取的DEM檔案。檔案頭為:
781395 1869975 50 50 333 127 -9999
分別表示的是:DEM左下角X座標,DEM左下角Y座標,DEM資料點在X方向的間距,DEM資料點在Y方向的間距,DEM總列數,DEM總行數,DEM無效資料點高程值。
前段時間想拿自己的TIF資料放到系統中試試,首先面臨的就是檔案的轉換問題。在網上看tif轉dem,我就用global mapper轉換了,結果這個dem不是我要的。Global mapper轉的dem均是USGS的DEM格式,檔案頭很長,包括dem四個點的XY座標,X,Y的資料間距,有多少列等:
0 1 1 1 48 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000
0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 2 2 4 349436.6339622639900003436562.474716980000000 349436.633962263990000 3437498.474716980000000
350624.6339622639900003437498.474716980000000 350624.633962263990000 3436562.474716980000000 1645.000000000000000 2395.000000000000000 0.000000000000000 0 2.000000 2.000000 0.100000 1 595 00 00 0 0 0 0 0 3 0 0 0 0 0
00.00
下面開始是一塊一塊的資料值:
1 1 469 1 349436.6339622639900003436562.474716980000000 0.000000000000000 1645.000000000000000 1796.556274414062500 17711 17710 17708 17697 17665 17680 17641 1754017538 17530 17532 17527 17489 17482 17458 17448
17438 17430 17428 17418 1741117418 17435 17408 17400 17400 17400 17398 17388 17379 17374 17380 17378 1737017370 17370 17370 17418 17571 17570 17568 17559 17537 17484 17506 17463 1746017450 17450 17450 17448 17433 17405 17408 17420 17418 17408 17354 17278 1727017268
17260 17254 17252 17290 17291 17264 17179 17171 17168 17160 17158 1714117110 17112 17118 17110 17108 17099 17095 17091 17076 17070 17065 17050 1705017047 17036 17028 17018 17008 16999 16991 16988 16978 16962 16933 16912 1687316882 16882 16882 16881 16873 16849
16838 16823 16820 16818 16810 16810 1680816800 16800 16800 16799 16799 16796 16800 16800 16800 16800 16800 16800 1679216766 16758 16731 16668 16660 16658 16656 16650 16648 16648 1664…..
位移量 類型 長度 內容
名稱和描述文本
0000-0005H 整數 6 本記錄地區中在DEM資料中行數(一般為1)
0006-000BH 整數 6 本記錄地區中在DEM資料中列數
000C-0011H 整數 6 本記錄地區中所包含的DEM資料個數
0012-0017H 整數 6 本記錄地區所包含的列數(一般為1)
記錄中第一個高程資料的大地座標
0018-002FH 浮點數 24 X
0030-0047H 浮點數 24 Y
資料特徵
0048-005FH 浮點數 7 記錄的本機資料海拔
0060-0077H 整數 4 本記錄地區的最小高程
0078-008FH 整數 2 本記錄地區的最大高程
之後是資料區。
從USGS到系統適用的dem,我寫了個轉換的小程式,匯入發現地形有點詭異,不知道是tif到dem轉換的問題,還是我程式轉換的問題。
找問題中間又查到了Arc/Info ASCII Grid 格式與系統使用的DEM轉換比較方便,我用globalmapper轉成這個格式,然後寫了個小程式轉成dem(從Arc/Info ASCII Grid 到dem就自己計算一下檔案頭即可。寫程式就方便一些)
Arc/Info ASCII Grid標頭檔為
ncols 157 //列數
nrows 171 //行數
xllcorner -156.08749650000 //左下X
yllcorner 18.870890200000 //左下Y
cellsize 0.00833300 //x,y間距
轉換後的地形讀出來看著應該是對了。
PS:地形雖然是對了,但是在《實戰opengl》這本書裡dem採用global mapper轉換預設的間隔2效果不好,轉換時應該根據自己tif資料設定不同參數,我的資料改成間隔20,展示效果較好。