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

2008-04-09 04:10:23来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


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编译通过。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:VisualC 2003中DLL初学者指南

下一篇:在VC中用CMenuXP使应用程序拥有Office XP风格的界面