科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件GIS三维地景仿真设计之数字高程模型

GIS三维地景仿真设计之数字高程模型

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

要绘制某一区域场地的场景自然需要通过对该区域各点坐标数据的建模来实现。

作者:青岛郎锐 来源:天极开发 2007年10月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
DEM数据文件的读取与保存

  既然已经清楚DEM数据文件的存储格式,数据的读取就不是一件困难的事情了。下面先给出执行函数ReadDEM(CString sDemFile)的实现过程:

CFile file(sDemFile, CFile::modeRead); // 打开文件
DWORD length = file.GetLength(); // 得到文件长度
if (file.Read((LPSTR)&DemHeader, sizeof(DEMFILEHEADER)) != sizeof(DEMFILEHEADER)) { // 读入DEM头文件
 MessageBox("文件头信息错误!","提示信息");
 return false;
}
m_nDemX = DemHeader.iDemX; // 从文件头中取数据
m_nDemY = DemHeader.iDemY;
m_nInterval = (int)DemHeader.interval; // 网络间隔
m_pDemX = new int[(m_nDemX + 1) * (m_nDemY + 1)]; // X坐标
m_pDemY = new int[(m_nDemX + 1) * (m_nDemY + 1)]; // Y坐标
m_pDemH = new int[length - sizeof(DEMFILEHEADER)]; // Z坐标
m_nHSize = length - sizeof(DEMFILEHEADER);
m_nSumPointOfDem = m_nDemX * m_nDemY; // 网格总点数
int m_nSumFaceOfDem = 2 * (m_nDemX - 1) * (m_nDemY - 1); // 网格总面数
file.ReadHuge(m_pDemH, length - sizeof(DEMFILEHEADER)); // 读取数据
file.Close(); // 关闭文件

  至此,已经取出DEM文件头信息和高程点阵数据。这只是原始信息,为了能够在后面将要进行的场景绘制中以此来建模,还要标定格网点的X、Y坐标并将坐标原点移动到地形的中心:

for (int i = 0; i < m_nDemY; i++) {
 for (int j = 0; j < m_nDemX; j++) {
  m_pDemX[m_nDemX * i + j] = m_nInterval * j - (m_nDemX / 2) * m_nInterval;
  m_pDemY[m_nDemX * i + j] = m_nInterval * i - (m_nDemY / 2) * m_nInterval;
 }
}

  至此,已经从DEM文件恢复出各节点的坐标参数(X,Y,Z坐标数据分别存放在m_pDemX、m_pDemY和m_pDemH指向的缓冲区中)。

  如果需要将当前正在显示的地景仿真数据保存,只需简单的将DEMFILEHEADER 结构对象DemHeader中的数据保存到DEM文件头、将整型数组m_pDemH中的数据保存到DEM文件高程点阵即可:

CFile file(m_sDEMFile, CFile::modeReadWrite); // 保存文件
file.Write((LPSTR)&DemHeader, sizeof(DemHeader));
file.WriteHuge((LPSTR)m_pDemH, DemHeader.iDemX * DemHeader.iDemY * sizeof(int));
file.Close();

  小结

  本文主要介绍了对DEM数字高程模型数据的一般使用方法,为三维地景仿真处理系统的场景绘制提供了基本的数据来源。读者需要掌握的技术主要有对DEM文件的创建和对DEM文件的读写访问等。本文所述程序在Windows 2000 Professional + SP4下由Microsoft Visual C++ 6.0编译通过。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章