GIS三维地景仿真设计之数字高程模型(2)
2008-04-09 04:10:23来源:互联网 阅读 ()
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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
