关于几种dem数据文件间的转换

来源:互联网 发布:清华大学知乎 编辑:程序博客网 时间:2024/05/19 16:50

       之前在学习《实战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,展示效果较好。