关于DEM文件的介绍和应用

<转>关于DEM文件的介绍和应用

    DEM文件是一种摄影测量学专用的文件格式,分为文本和二进制两种,存储的是一个区域内的高程值。就其介绍如下:

    文本格式采用的国标NSDTF格式,使用文本格式保存,可以使用记事本打开查看。

    起头的12行描述了DEM的基本信息

    NSDTF-DEM 文件标识

    1.0 版本号

    M 单位(米)

    0.000000

    0.000000

    3000.000000 左上角X坐标

    9990.000000 左上角Y坐标

    30.000000 X方向采样间隔

    30.000000 Y方向采样间隔

    334 行数

    201 列数

    1000 缩放比例

    后面是DEM的采样高程,首先是最上面的一行高程坐标,然后是第二行,第三行...总共有行数×列数个高程坐标。保存的数值是整数,需要除以缩放比得到真实的浮点高程值。-99999为无效高程值。

    二进制格式说明

    在文件头部是一个结构体,结构体的定义如下

    typedef struct tagDEMHEADERINFO

    {

int nType;//类型 给0

double lfStartX;//起点

double lfStartY;//

double lfDx;//采样间隔

double lfDy;//

int nRow;//行

int nColumn;//列

double lfKapa;//旋转角,给0

int nProjection;//投影,给0

double lfHeight;//平均高度?

double lfNoData;//无效数

int nScale;//缩放比

int nDot;//小数点位数

int nPixelSize;//占用的字节数

    }DEMHEADERINFO,*PDEMHEADERINFO;

   

    在文件头后面开始真实的高程值,浮点形式。写入的顺序和文本格式的相同。

    简单例子如下:

    FILE *fp;

     if((fp=fopen(lpszFileName,"rt"))==NULL)

      {

           AfxMessageBox("文件无法打开!");

           return FALSE;

      }

     fscanf(fp,"%s",&m_DataMark);

     if(strcmp(m_DataMark,"NSDTF-DEM")!=0)

     {

       AfxMessageBox("文件错误!");

       return FALSE;

     }

    //AfxMessageBox(m_DataMark);

    fscanf(fp,"%f",&m_Version);//版本号

    fscanf(fp,"%s",&m_Unit);//单位(米)

    fscanf(fp,"%lf",&m_Alfa);//α

    fscanf(fp,"%lf",&m_Beta);//β

    fscanf(fp,"%lf",&m_lfStartX);

    fscanf(fp,"%lf",&m_lfStartY); 

    fscanf(fp,"%lf",&m_lfDx);

    fscanf(fp,"%lf",&m_lfDy);

    fscanf(fp,"%d",&m_nRow);

    fscanf(fp,"%d",&m_nColumn);  

    fscanf(fp,"%d",&m_nScale);

    int j;

    m_pHeight=new long*[m_nRow];

    for(j=0; j<m_nRow; j++)

    {

     m_pHeight[j]=new long[m_nColumn];

    }

    for(int i=0; i<m_nRow; i++)

     for(int j=0; j<m_nColumn; j++)

     {

        fscanf(fp,"%ld",&x);

        m_pHeight[i][j]=x;

       if(x==-99999)

       {

          m_pHeight[i][j]=(long) NoData;

        }

    else

        m_pHeight[i][j]=(long) x/m_nScale;

   }

   fclose(fp);

     

转载于:https://www.cnblogs.com/sunliming/archive/2011/03/07/1975774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值