基于Creator的三维地形建模中DED文件的生成

时间:2022-07-10 06:22:18

基于Creator的三维地形建模中DED文件的生成

摘 要:DED(Digital Elevation Data)是MultiGen Creator引入数字网格高程数据的惟一格式,其他高程数据在引入前必须先转换为DED格式。本文结合基于MultiGen Creator的某院校常用训练场地三维地形模型的建立,通过对DED文件的格式的研究,探讨了利用等高线地图生成DED文件的过程、方法和技巧;开发了自定义地形数据格式转换成DED文件的转换软件,实现了高质量DED文件的生成。

关键词:Creator;DED;DEM;地形数据;地形建模

中图分类号:TP311文献标识码:B

文章编号:1004-373X(2009)12-159-04

Generation of DED File in 3D Terrain Modeling Based on Creator

NIE Wenbing1,GAO Fei2

(1.Unit Battle Library,Nanchang Army Academy,Nanchang,330103,China;

2.Ordnance Institute of Technology,Ordnance Engineer College,Shijiazhuang,050003,China)

Abstract:DED(Digital Elevation Data)is the only format which can be used in the MultiGen Creator,others must be transformed in to DED before using.The generation process,methods and tips of DED file with the 3D terrain model generating for training field which in common used by certain academy are discussed,and the format of DED file is studied,the software for transforming user-defined terrain data to the DED file is developed,and creating of the high quality DED file is realized.

Keywords:Creator;DED;DEM;terrain data;terrain modeling

0 引 言

MultiGen Creator是一套功能强大、在视景仿真中应用广泛的建模软件。然而各种格式的地形数据文件不能在Creator中使用,必须经过处理转换成Creator专用的数字高程数据(Digital Elevation Data,DED)文件,基于该文件生成的地形,精确度高,并且支持从多方面对地形模型进行优化调整,比如:BSP(Binary Separating Planes),LOD(Level Of Detail),CAT(Continuous Adaptive Terrain)等。因此,由DED文件生成地形是Creator地形建模的一种重要方法,如果能将其他常用数字地图文件中有用的数据读出,直接生成DED文件,将对Creator的建模提供很大的方便。这里主要探讨利用军用等高线地图生成三维地形模型的过程中DED文件的生成过程、方法和技巧。

1 由等高线地图生成DEM

数字高程模型(Digital Elevation Model,DEM)是以数字形式存储的表示物置高程值的集合。DEM是美国国家图像和地图测绘局(National Image And Mapping Agency,NIMA)开发的描述地面高程的一种模型,它采用x,y,z坐标表达地表形态。DEM数据经过格式转换,可以在大多数地形生成软件(如ARC/INFO,MultiGen Creator,MapInfo,IMAGIS,MAPGIS等)中生成三维地形。

1.1 地形源数据的获取

地形源数据主要是建立数字高程模型(Digital Elevation Model,DEM)用到的高程数据。它的获取方法有以下几种:

(1) 采用大地测量的方法直接从地形上测出高程;

(2) 利用航空摄影测量照片,采用数字高程判断仪从两张对应的照片上读取高程;

(3) 利用卫星摄影测量照片读取高程数据(遥感);

(4) 从小比例尺普通等高线地图上读取高程数据;

(5) 从现有的地图数据库提取所需区域的地形高程数据。

等高线地形图生产DEM的方法已经可以广泛应用于生产。以现有某院校的常用训练场地用图为基础数据来源,充分利用自有条件对纸质军用地图进行扫描、预处理、数字化、高程赋值等操作,最后生成DEM,既体现了经济性,又能满足战术演练的需求。

1.2 等高线地图的矢量化

等高线地形图经过扫描、二值化、细化等预处理后,保留了表达地形的最基本的特征――等高线。这时可以用专门的矢量化软件进行矢量化处理,也可以根据用户的需求开发一个矢量化系统来进行等高线地图的矢量化工作。在此采用第三方软件Able Software R2V for Windows(R2V)来完成这部分工作。它是一种高级光栅图矢量化软件系统,具有强有力的智能自动数字化技术与方便易用的菜单驱动图形用户界面有机地结合到Windows & NT环境中,为用户提供了全面的自动化光栅图像到矢量图形的转换功能;它可以处理多种格式的光栅(扫描)图像,是一个可以用扫描光栅图像为背景的矢量编辑工具。

将经扫描并处理完成的某院校常用场地训练用图(YEJIGANG.bmp)导入R2V软件,可以直观地看到地图上的任意位置;接下来的工作就是按照R2V软件提供的矢量化过程,按部就班地进行地图矢量化,以获取生成DEM所必须的高程信息,主要包括如下几个步骤:

(1) 对等高线进行屏幕跟踪矢量化;

(2) 对等高线标赋高程值;

(3) 对离散高程点进行屏幕矢量化;

(4) 对高程点标赋高程;

(5) 对这些矢量化结果进行编辑、检查、拼接以生成拓扑关系完整的矢量图。

1.3 DEM的生成

通过屏幕数字化软件对某院校常用训练场地用图进行数字化,并对等高线赋ID值(高程)后,选用合适的算法,生成自定义规则格网DEM模型,从而获取了地形建模的数据源DEM文件。用等高线生成规则格网DEM最主要的方法是内插法。按内插点的分布范围,可将内插分为整体内插、分块内插和逐点内插三类,具体的选择依据是精度和运算速度之间平衡。

这里采用逐点内插法中的加权平均法。为了求每个格网点的高程值,采用4个方向的搜索,分别为东南方向、西南方向、西北方向和东北方向。寻找距离待求点距离最近的点,考虑精度的要求参考点的数目不小于5。而邻近数据点采用基于点的范围进行选择,选择方式如图1所示。

邻近点的选取,由于圆的半径取决于原始数据的疏密程度和原始数据点可能影响的范围。为了解决这个问题,可以采用动态圆半径的方法,它的思路是从数据点的平均密度出发,确定圆内数据点数(平均要有10个),以求解圆的半径R,其公式为:

πR2=10(A/N)(1)

根据这些已知点的高程值,以距离参数作为权重,利用加权平均法求解待定点的高程值。数学方程式如下:

Zp=∑ni=1piZi/∑ni=1pi(2)

式中:Zp是待定点p的高程;Zi是第i个参考点的高程值;n为参考点的个数;pi是第i个参考点的权重,这里权重由参考点与待求点的距离决定。

图1 动态圆取点

2 DED文件的生成

2.1 DED文件格式和计算方法

2.1.1 DED文件格式

标准DED文件由标准文件头、统计记录、数据单元文件头和数据单元四部分组成,各部分定义如下:

(1) 标准文件头(128 B)

typedef struct ss_ stdhdr {

long len;/* 块的字节数,4 B */

char id[4];/* 文件识别码 */

char part[8];/* 软件分号 */

char rev[8];/* 软件修订号 */

char create[26];/* 创建日期时间 */

char update[26];/* 最后更新日期时间 */

char spare[52];/* 空格 */

}ss_stdhdr;

(2) 统计记录(32 B)

typedef struct stats {

long ncell;/* 数据单元数目 * /

short minz,maxz;/* 整个文件最小、最大高程 */

char spare[24];/* 空格 */

}stats;

(3) 数据单元(40 B)

typedef struct cell_hdr {

float latstart,latend;/* 起止纬度 */

float longstart,longend;/* 起止经度 */

float deltalat,deltalong;/* 经纬间距,单位10 s */

float nptlat,nptlong;/* 纬度和经度上的点数 */

float deltax,deltay;/* 两点间距离(英尺)*/

}cell_hdr

(4) 单元数据

数据为2 B Short型,所有数据无间隔的连续存放。

2.1.2 DED文件的计算方法

生成DED文件的重点是计算单元格两点间的距离。DED中数据单元的两点间实际距离即DED数据网格的间距,是用地球椭球面上大地线的长度来度量的。网格中任意两点A(B1,L1)和B(B2,L2)间的距离可以采用大地主题解算方法来计算。

首先将B1,L1和B2,L2换算成以弧度为单位,然后进行下列计算。计算中常数采用的是克拉索夫斯基椭球体元素。

b=B2-B1(3)

P=sin bcos L2(4)

Q=cos L1sin L2-sin L1cos L2cos b(5)

M=sin L1sin L2+cos L1cos L2cos b(6)

A0=arctan(P/Q)(7)

A1=arctan[cos L2sin A0/1-(cos L2sin A0)2](8)

A=arctan[(Psin A0+Qcos A0)/M](9)

S=6 356 863.020+(10 708.949-

13.474cos A1)cos A1(10)

得到A,B间距离为:L=AS,最后将“米”为单位的数据转化为“英尺”单位。

2.2 DEM数据格式转换成DED数据格式

在分析DED文件的格式规范和计算方法后,通过格式转换软件便可实现DEM数据格式文件向DED格式文件的转换。由于可获得的原始高程数据无统一标准,文件格式也有所差别,有时MultiGen Creator自带的工具并不能派上用场,这就需要自己开发地形数据格式转换工具软件。

在编制地形数据转换软件主要做的工作有以下几项:

(1) 从文件中读取有用的高程数据

一些常用的标准的高程数据文件如DEM,DMA等,Creator自带了转换工具。对于一些自定义的文件格式或Creator不支持的其他文件格式,须根据其文件格式,将其中有用的数据分离读出。

(2) 根据DED文件的格式计算出DED文件需要的相关参数

DED文件表示的是某一经纬度区域内的地形,需根据高程文件的地形参数,计算出DED文件中有关的参数,如:经纬度的起始值和终止值、经纬度的跨度及相邻两点的距离等。

(3) 将参数及数据写入DED文件

DED文件是二进制文件。在写入数据时应注意以二进制的方式写,并应注意在写入数据时要按照DED文件中高程数据的排列顺序;否则,生成的DED文件中可能出现方向的变化。

由于DED文件格式源于SGI Irix系统平台,多字节数据的存储方式是将低字节存储在起始地址,称为小端(little-endian)字节序;而Windows系统平台的多字节数据存储方式是将高字节存储在起始地址,称为大端(big-endian)字节序,所以在读取和写入时需要进行转换。以下是部分示例代码:

CDedHead::ReadFile(CString chName) //读文件

{

for(int i = 0;i < m_stats.nCell;i++)

{

nn = m_fileDED.Read(&m_cell,sizeof(cell_Hdr));

m_cell.nptlong = Ex32Float(m_cell.nptlong);

m_cell.nptlat = Ex32Float(m_cell.nptlat);

}

}

unsigned long CDedHead::Ex32Int(unsigned long lv)

{

unsigned long *buf = &lv;

for(unsigned int i=0;i

{

ENDIAN_32(buf[i]);

}

return *buf;

}

float CDedHead::Ex32Float(float fv)

{

float *buf = &fv;

for(unsigned int i=0;i

{

ENDIAN_32r(buf[i]);

}

return *buf;

}

unsigned long CDedHead::GetDedLong(unsigned long lv)

{

unsigned long by1 = lv - (lv>>8)*256;

lv = lv>>8;

unsigned long by2 = lv - (lv>>8)*256;

lv = lv>>8;

unsigned long by3 = lv - (lv>>8)*256;

lv = lv>>8;

unsigned long by4 = lv - (lv>>8)*256;

unsigned long lRet = (unsigned long)by4;

lRet += (unsigned long)(by3*256);

lRet += unsigned long(by2*256*256);

lRet += unsigned long(by1*256*256*256);

return lRet;

}

unsigned short CDedHead::GetDedshort(unsigned short sv)

{

unsigned short by1 = sv - (sv>>8)*256;

sv = sv>>8;

unsigned short by2 = sv - (sv>>8)*256;

unsigned short lRet = (unsigned short)by2;

lRet += (unsigned short)(by1*256);

return lRet;

}

采用自主开发的转换软件,将基于等高线地图生成的某院校常用训练地域DEM转化为DED格式的文件“YEJIGANG.ded”,这样就完成了三维地形生成的地形数据准备工作。

3 结 语

在此以某院校常用训练场地三维地形模型的建立为例,详细介绍了以等高线地图生成Creator专用数据DED文件的方法、过程和技巧。该方法成本低,效率高,可操作性强;同时利用专业矢量化软件和自己编制的转换软件,优势互补、使用灵活。

在扫描数字化、插值等步骤中注意了误差的控制,最后得到的DEM数据具有较高了误差的控制,使得到的DEM数据具有较高的精度,从而得到高精度的DED文件,实践证明,该方法确能快速有效的生成DED文件,为其他地区批量生成DED提供了借鉴,从而利用MultiGen Creator软件建立高质量的三维地形模型。

参考文献

[1]胡少林.基于DEM数据的三维地形建模方法研究与实现[D].长沙:国防科学技术大学,2002.

[2]姚建新,冯秀兰.等高线的三维地形建模与实现[J].林业资源管理,2002,9(4):31-33.

[3]陈珩.战场环境仿真中的三维地形生成技术研究[J].航空电子技术,2006,32(2):38-44.

[4]马龙,杜道生.GIS中DEM产品精度的分析和评价[J].测绘信息与工程, 2003,28(3):4-6.

[5]马友平,冯仲科,张志华,等.地形图的R2V矢量化与ArcView的三维显示[J].湖北民族学院学报:自然科学版,2007(3):331-334.

[6]戴振华.R2V与MapInfo在林业制图中的组合应用[J].湖南林业科技,2003,30(2):57-58.

[7]王乘,周均清,李利军.Creator可视化仿真建模技术[M].武汉:华中科技大学出版社,2005.

[8]王洪涛.深入剖析Visual C++编程技术及应用实例[M].北京:人民邮电出版社,2003.

[9]段琪庆,郝光荣,李培红,等.在Mapinfo下制作DEM的程序设计及方法[J].山东建筑工程学院学报,2004(3):15-18.

[10]宗玮,徐雷振.泰宁1∶1万DEM的生成及应用[J].株洲师范高等专科学校学报,2005,10(5):31-33.

[11]郭艳萍,娄国胜.等高线三维显示技术的探讨[J].三晋测绘,2004(1):19-21.

上一篇:变压器事故后的色谱分析 下一篇:USB在PCR仪嵌入式系统中的应用