云端的格式转换(精选7篇)
云端的格式转换 篇1
多媒体技术逐渐普及深入,也随之出现了许多多媒体格式互相转换的软件,常见的格式有:avi、swf、flv、rm、rmvb和wmv等,不常见的格式有:navi、mkv等。不同格式的视频文件的计算方法不同,即采用了不同的的视频编码方法,这也就导致了保存同样的视频内容,视频清晰度不同和占用空间不同[1]。一般采用占用空间大的算法,其视频清晰程度也越高,而采用占用空间小的算法,其视频清晰度也越低。有些视频格式编码算法比较复杂,占用空间大,为了减少存储空间的占用率,也就是说为了减小体积,我们将某一格式转换为另一格式。另一方面,多媒体文件通常要制作多种多媒体产品,有时工具对视频格式的支持是有限的,所以为了满足相关工具的支持,所以,把少数格式(不常用的格式,软件不支持的格式)转换为多数格式(即常用的格式),满足了软件的制作需要,也就能够制作出产品来了。
1 相关背景
为了满足市场对多媒体视频处理的需求,无论是公司还是开源社区都作出了很多积极的尝试,出现了很多优秀的产品,他们分别是GStreamer、Drect Show和ffmpeg等,以下分别对这三种技术作出简单介绍。
GStreamer是一个开源的多媒体框架库。利用它可以实现从简单的ogg播放功能到复杂的音频和视频的处理。由于良好的封装性能,应用程序可以方便利用解码和过滤技术。开发者可以使用简洁通用的接口来编写一个简单的插件来添加新的解码器或滤镜。GStreamer是linux上的多媒体应用框架。一直以来,linux上的多媒体开发都很麻烦,由于没有统一模型,所以很多东西都需要自己实现。gstreamer的目的就是弥补这一缺陷。
Direct Show是微软公司在Active Movie和Video for Windows的基础上推出的新一代基于COM的流媒体处理的开发包,与Direct X开发包一起发布。Direct Show为多媒体流的捕捉和回放提供了强有力的支持。运用Direct Show,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。这样使在多媒体数据库管理系统(MDBMS)中多媒体数据的存取变得更加方便。
ffmpeg是一款强大的音视频编码器与解码器的集合[2],支持多种文件格式,ffmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)你可以自由获取所有ffmpeg的源代码。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。这个项目最初是由Fabrice Bellard发起的,而现在是由Michael Niedermayer在进行维护。许多ffmpeg的开发者同时也是MPlayer项目的成员,ffmpeg在MPlayer项目中是被设计为服务器版本进行开发。由于ffmpeg拥有良好的开源社区支持,ffmpeg视频格式转换越来越受到大家的重视。
2 ffmpeg格式转换
ffmpeg拥有强大的视频格式转换能力,其libavcodec库是专门用来对各种类型声音/图像进行编解码的。具体流程如图1所示。
格式转换算法流程如下:
第一步,打开输入文件,获取文件流信息
第二步,在视频文件中,存在音频流和视频流,这一步,主要从输入文件中的目标对象,即视频流。
第三步,根据视频流信息,找到相应的解码器,并打开解码器,让其处于工作状态,为接下来的视频解码做好准备。第四步,如果视频文件没有结束,则解码视频流文件下一帧,否则,结束。
第五步,根据格式转换的需要,构建输出视频文件信息,打开输出视频编码器。
第六步,将解码的视频流帧,利用第五步得到的编码器进行编码,并将其添加到输出视频文件中。
3 实现过程
3.1 寻找视频流,代码如下
3.2 解码视频帧,代码如下
3.3 编码视频帧,代码如下
4 结束语
ffmpeg由于得到开源社区的大力支持,接口函数得到了透明良好的封装,使得视频格式转换能够快速有效的进行,正因为如此,ffmpeg在视频处理领域越来越得到广大开发者的认可。
参考文献
[1]张学武,杨学星,江冰.基于H.263的视频编码、解码的研究及软件实现[J].计算机工程与设计,2005(9).
[2]吴张顺,张珣.基于FFmpeg的视频编码存储研究与实现[J].杭州电子科技大学学报,2006(3).
云端的格式转换 篇2
0 引言
在开发一款文档自动生成软件的过程中, 需求分析中需要将完成的纯文本ODF文件转换为Doc文档。本文叙述了一种在软件开发过程中实现的ODF文件直接转换Doc文件的方法[1]。
在目前, 处理此类问题主要使用的Aspose.Words等控件或是采用Office的宏操作。前者受限于一定的编程平台, 后者需要用户系统装有微软Office软件套装。
而本文研究并采用的方法是直接通过解析ODF文件和Doc文件格式并分别对其进行读取与写入操作。最终获得了能将简单纯文本格式文字的ODF文件转换为Doc文件的方法[2,3]。
1 格式介绍
1.1 ODF文件规范
ODF格式的文本文档的扩展名为*.odt。一个odt文档实质上是一个打包的文件, 并且通常都经过了zip格式的压缩。一个odt文件经过解压后可以见到的常见文件与其功能见表1。
1.2 DOC文件规范
Doc文件其实质是一个Windows复合二进制文件, 其主要分为4个部分:用来定义文档的Header, Header之后为大量Sector区域, 每个Sector区域的大小都是固定的, 这些区域主要有:存放文档索引信息的Directory、文档摘要信息的DocumentSummary Information和文档主要信息的Word Document[4,5]。
1.2.1 文件头Header的结构
Doc文件的Header部分是一个固定512字节的2进制文件, Header部分用来记录本Doc文件最重要的参数, 其一般包含如图1的信息。
(1) Header的前8字节为固定的十六进制0x D0 0x CF 0x110x E0 0x A1 0x B1 0x1A 0x E1, 这是Doc文件的固定标示。
(2) 0x30H到0x33H的4字节, 是Directory区域开始的Sector的ID。
(3) 从0x1CH到0x1DH的2字节, 是固定为0x FE 0x FF, 表示文档的字节序使用的是x86系统中标准的Little Endian (小端序) 规范。
(4) 从0x1EH到0x1FH的2字节, 是指代Sector大小, 默认为9 (0x09 0x00) , 即每个Sector为2的9次方, 512字节。
1.2.2 Word Document的结构
在Doc文档中, Word Document的Sector ID总是固定为0。其包含着整个文档最重要的信息和引用自文档其它部分的信息。在这之中最重要的是文档的FIB (The File Information Block) 。
FIB表结构包含关于文档的各种信息, 并指定文件的指针以组成文件的各个部分。对于FIB, 其长度是可变长的[6]。
(1) FIB中最开头的为固定32字节长的base (File Base) , 是用来记录文档的加密信息和保存次数等信息的;
(2) 2字节的csw和cslw, 其值必须为0x0E和0x16;
(3) 28字节的Fib Rg W97块和88字节的Fib Rg Lw97块;
在FIB的这些分块中, 我们可以从中提取部分有用数据:
(1) File Base中偏移量为0x AH到0x BH的2字节在用位运算的第九位为1时表示文字存储于1Table, 为0时表示文字存储于0Table;
(2) Fib Rg W97中的最后2个字节代表该Doc文档的语言, 如0x0804为简体中文、英文为0x0409、台湾地区繁体中文为0x0404等;
(3) Fib Rg Lw97的前4个字节为32位整数, 为Word Document中有意义的字节数;
1.2.3 Table Stream的结构
Table Stream是1Table Stream或者0Table Stream的总称。Table Stream有且只能有一个有效, 具体文字存在哪个Table中由FIB中的值决定。Table Stream主要是对Word Document部分信息的补充, 同时也对正文每部分内容进行索引。Table Stream中最重要的是Clx, Clx主要由Pcdt组成, Pcdt的结构如图1-2所示, Pcdt的开头的第一个字节clxt为固定的0x02, 紧接着的4字节lcb为无符号整形为该Pcdt的大小Pcdt Size, 其计算公式为:
n= (Pcdt Size-4) /12
Plc Pcd结构是由n+1个Plc结构和n个Pcd结构组成。
每个Plc结构记录每一段文本的开始位置, 同时其也是上一段文字的结束位置。
Pcd指定了文字在Word Document的具体位置和对这些文字的格式, 它的结构如图1-3所示。
(1) 首位A为1时则代表其不包括段落符号;
(2) fc中定义的了本段文本在Word Document储存的偏移量和是否使用Unicode格式存储文本。
(3) prm是其格式的指针。
根据Plc Pcd, 可以获取每一段文本在Word Document中的实际地址, 其计算公式为:
Content Address=fc Compressed+ (Word Document Sector ID+0x0001) *Sector Size+0x0000
2 具体实现
程序的流程图如图2-1所示, 程序通过直接向一个空白的Doc文件插入文本内容再对其中受到影响的代码进行更改是目前对多余块的操作[7]。而只需要在插入文本之后对Word Document和Table Stream的相应数据进行修改即可。
在开发过程中因为.net库对二进制和XML读写提供了较为完整的支持, 所以以下部分代码由C#完成。
2.1 读取content.xml中的文本数据
ODT中所有文字均在text标签之间, 只是根据其所在位置不同其后面附带不同的标签。在代码中, 我们采用Xml Text Reader打开content.xml文件, 然后用自建的实体Text Entity所构成的List存储和首段文字的entity。
在具体的每次读取数据过程中, Xml Text Reader对于读取到的每一个XML元素, 会根据元素的Name的值进行具体的操作:若其Name名为段落标签“text:p”一类的, 则将该元素中的文字赋值给entity并将此entity加入List;若其Name名为“text:span”等块标签时, 则将该元素文字添加到entity的末尾而不作其他操作。
部分代码如下:
通过以上过程可以得到一个存放了正文数据的List。
2.2将文字插入Doc文件
在生成空的Doc文件后, 通过Table Stream和Word Document的PIB, 可以证明对于空白Doc文件的文字内容实际起始位置固定为0x0A00, 因此可以直接用C#的二进制读写控件Binary Writer打开, 然后定位到文档内容起始位置0x0A00进行读写操作。
再写入对于List中取出的的每一个实体tempentity, 由于每一个实体代表一个段落, 因此要在实体最后加上换行符, 然后将其转化为二进制数据流写入文件。需要注意的是在Word中Word文档中的换行为“r”, 而常见的换行符为“rn”或”n”。{tempentity.Text+="r";byte[]byte Array=System.Text.Encoding.Default.Get Bytes (tempentity.Text) ;bw.write (byte Array) ;}由于Word Document中每个模块均为0x0200长, 因此我们需要对当前文件进行填充空数据:for (int i=bw.Position;i< (bw.Position%0x0200+1) *0x0200;i++) bw.write ('0') ;
2.3修改Table Stream和FIB的数据
在经过以上操作便得到了写入了文字的Doc文件后, 由于Table Stream和FIB中包含了对Word Document中文字实际长短的定义, 因此我们需要对其进行修改。
主要是记录了Word Document中有意义的字节数的Fib Rg Lw97的前4个字节和记录了文档中正文的总字数的Fib Rg Lw97中偏移量为0x10到0x13的四个字节。同时也要修改Table Stream的Plc Pcd中的Plc信息以保证文件校验正确。
3结束语
ODF文档是基于xml语言的纯文本文档, 本文介绍了一种在软件开发过程中实现的ODF文件直接转换Doc文件的方法。在目前, 由于受编程平台的限制, 不易被很好的使用。
通过解析ODF文件和Doc文件格式并分别对其进行读取与写入操作。最终获得了能将简单纯文本格式文字的ODF文件转换为Doc文件的方法。
参考文献
[1]闾国年, 胡迪, 温永宁, 盛业华.一种数据格式的描述方法, 南京师范大学, 南京师范大学出版社, 2012-10-03
[2]于玲.开放文档格式研究, 中国人民大学信息资源管理学院, 浙江档案, 2009-09-25
[3]邱萍, 周琴.面向对象的数据格式转换, 西安交通大学, 情报杂志, 2001-06-15
[4]夏松竹.基于XML的数据格式转换方法研究, 哈尔滨工业大学, 哈尔滨工业大学出版社, 2006-04-01
[5]黎美秀, 李宁, 方春燕.ODF与OOML文档格式中文支持能力概述, 北京信息科技大学, 信息技术与标准化期刊, 2010-06-10
[6]方海英.基于时空折衷算法的word文档破解研究, 杭州电子科技大学, 杭州电子科技大学出版社, 2009-12-01
云端的格式转换 篇3
关键词:电子版学位论文,PDF文件,文件格式转换工具
1 研究生学位论文的结构要素
在高校图书馆数字化信息资源建设中,研究生学位论文数据库的建设是作为一项重要内容,受到了重视。中国知网(CNKI)建设了《中国优秀硕士学位论文全文数据库》、《中国博士学位论文全文数据库》,通过对这两个数据库的考察,可以发现,在研究生学位论文的结构要素中,各院校大体相同,都有封面、摘要、目录、正文章节内容、参考文献、附录、读研期间主要学术成果与奖励、致谢、版权声明等部分。但是也有细节上的不同,如各部分排列的顺序可能有差别,如,摘要部分有的排在目录前,有的排在目录后,版权声明部分有的排在文前,有的排在文后,有的还有英文封面。
2 电子版研究生学位论文的文档格式
2.1 WORD格式
研究生学位论文原始版本的电子文档大多为WORD格式,在形式上与印刷版相同,有封面、摘要、目录、正文、文后各部分内容。
为了便于组织论文,WORD格式的论文可以采用WORD的大纲视图组织工具,以大纲的形式组织论文的全部内容。这样做的好处是论文结构层次分明、便于阅读和修改完善,直至定稿。
因为需要编制目录,特别是为了在制作转换为PDF格式时制作目录的方便,所以在用大纲组织论文时应该使用WORD提供的样式工具,设置WORD文档各部分内容的不同样式,特别是各章节题目的标题样式,应使用WORD的内置标题样式,当然标题的层级数、标题的版面格式要根据论文的要求进行设置,如字体、字号、编号等样式,甚至可以做出相对统一的模板。不同层级的标题样式应该有区别,而相同层级的标题应尽量使用相同的样式,特别要注意字体和字号的设置。
应用大纲样式组织文档后,通过“文档结构图”可以实现目录的自动生成,方便论文的编辑和修改,同时可以利用样式编制论文目录,并方便随时更新,章节与页码之间的对应关系也不会出现错误,而不需要进行手工编制目录。通过目录可实现对各部分内容的跳转链接。
2.2 pdf格式
供读者阅读的电子文档大多为PDF等图象文件格式,其特点是图象文件与印刷版式完全对应,读者只能阅读而不能直接编辑。但是,如果仅仅通过论文的目录部分实现从各章节标题到内容的链接,由于这种链接是单向的,阅读并不方便,因此实现在各章节和相对内容之间的随时跳转显得尤为重要。
在PDF格式的论文中,为了方便阅读,需要制作导航栏,在PDF文件中被称为书签,由书签组成导航目录,其形式如WORD文档中的“文档结构图”,与印刷版目录相同,但它可以按层次展开和折叠,书签目录与各章节相应的内容之间可以实现跳转链接,而且书签目录与论文正文内容可以同时显示,左侧显示书签目录,右侧显示论文正文,比印刷版更便于阅读。
3 pdf格式论文的制作/转换问题
图象文件格式的论文(PDF文件)可以在WORD文件的基础上通过一些工具软件转换生成,一些常用的软件有:大型软件如
Adobe公司的Acrobat,小型软件如PDFcreater,PDF Factory,wordtopdf converter,wordtopdfpro等。
3.1 PDF Factrory
作为打印机使用,通过虚拟打印的功能实现文件格式的转换,软件安装的速度较慢,实现文件格式转换的速度也较慢,而且需要注册才能正常使用。
只要是可以打印的内容均可完成转换,因此对文件格式无特殊要求,格式转换完成后,可以先预览,后保存。文件转换的效果比较令人满意,但是应用比较烦琐。
如果要转换生成目录书签,软件可检测文件中的标题并为每个标题添加一个书签。但是这就需要在源文件中对各级拟作为目录书签的标题进行特别设置。要使相同级别的标题使用相同的样式,对不同级别的标题使用不同的样式,特别是字体、字号的设置。在文件转换时,还要对拟在PDF文件中使用的各级书签进行各级标题样式的设置,这些设置应与源文件中的设置一致,当然对于源文件中的标题,不一定全部设为书签。
3.2 wordtopdf convertor和wordtopdfpro
这两个软件同PDF Factory一样,都可以视为打印驱动程序,并作为打印机使用,通过虚拟打印功能实现文件格式的转换,但是需要专门的工具插件,不识别书签,因此不能通过转换生成目录书签。文件转换速度一般。
软件需要注册使用,提供卸载功能。
3.3 PDF Creator和pdf24creator
安装速度较快,文件格式转换也较快,使用也比较简便,可作为软件直接运行。缺点是不能识别书签,不提供软件卸载功能。
PDF Creator提供标准安装和服务器模式安装两种安装模式。标准安装模式,可以将可打印的文件转换为PDF、BMP、PS文件。服务器模式安装,可以使网络中的其他计算机通过网络创建PDF、BMP、PS文件。提供多语种界面。
pdf24creator只提供英语和德语两种语言的界面,应用不如前者方便,但其使用较前者简便,只需按提示输入文件名即可。前者则需输入多项内容描述,显得较为烦琐。
3.4 AdobeAcrobat
专业的PDF文件制作软件,体积庞大,安装所用时间最多,功能也最为强大,使用方便。
只要设置好论文的各章节的标题样式,通过该软件就可以转换为相应的pdf格式的论文版本,并能生成相应的章节目录书签。对于没有设置标题样式的论文,可以通过文档结构生成相应的书签,但是但是可能会把其他样式也识别成了目录书签,也可能会识别错误甚至不能识别。对于不能通过转换生成目录书签的论文,可以手工添加,虽然比较麻烦,但是很实用。
3.5 WPS2010
如果使用wps2010,也不需要再安装上述专用软件,只要设置好论文的各章节的标题样式,通过软件的输出为PDF文件,就可以生成相应的pdf格式的论文版本,并能生成相应的章节目录书签,当然如果没有设置标题样式,只使用了样式而其各章的标题还是正文格式,软件也可以识别并生成目录书签,但是可能会把其他样式也识别成了目录书签。
3.6 MSOffice2007
如果使用msoffice2007,由于软件提供了PDF插件,可以直接将WORD文件保存为PDF格式的文件,就不需要再安装上述专用软件,只要设置好论文的各章节的标题样式,就可以保存为相应的pdf格式的论文版本,并能生成相应的章节目录书签。当然如果没有设置标题样式,只使用了样式而其各章的标题还是正文格式,软件也可以识别并生成目录书签。
4 小结
几款PDF文件格式转换软件比较:
云端的格式转换 篇4
关键词:FPGA,视频格式转换,硬件设计
1、引言
多路音视频记录仪采像器件安装在客运汽车前后左右, 记录汽车周围的音视信号。需要时可以调出记录的音视频, 主要用于事故发生后责任的界定。基于FPGA的多路音视频记录仪视频电路中视频格式转换模块设计, 是多路音视频记录仪中用于处理摄像头模块捕获的原始视频信号, 格式转换后, 存储到非挥发性Memory中。电路中的错误可以通过修改代码加以改正, 允许设计者跟随系统升级或者系统动态, 重置系统模块和连接。[1]
2、视频电路模块设计
如图1所示的视频电路中, TRDB_D5M模块是以I2C方式控制, 由I2C产生CCD模块所需要的时钟;CCD Capture模块用于获取由CMOS摄像头抓到的视频信号;当获取视频信号后, 所获取的视频信号为RAW格式, 需要将格式转化为RGB格式才能显示在L C D上;格式转换后的视频信号经由F L A S H_S D R AM_Controller模块存入FLASH;对于4.3''触摸式LCD模块控制, LCD_SPI_Con troller模块、LCD_Timin g_Controller模块、ADC_SPI_Controller模块和Touch_Point_Detect模块等将从FLASH Memory中取出的RGB格式视频信号由列至行, 依次排列在TRDB_LTM模块的缓冲暂存器, 以用LCD面板显示。[2]
3、视频格式转换RAW_to_RGB模块设计
CCD_Capture模块控制摄像头捕捉光源信号, 然后把每个像素感应的光源信号转化成12bits宽度的原始信号数据 (RAW) 。跟在CCD_Capture模块后的RAW_to_RGB模块, 主要作用是把每12bits数据对应的像素像素色彩转换为RGB信号, 存入非挥发性记忆体FLASH芯片, 模块管脚如图2所示。[3]
图3所示为视频格式转换电路主信号数据流程。2bits输入信号iZoom是摄像头焦距调整控制;iX_Cont和iY_Cont是摄像头获取的视频信号像素坐标。RAW_to_RGB模块根据iX_Cont和iY_Cont代表的像素位置, 把12bits输入数据iData转换成12bits RGB格式, 通过三个12bits输出寄存器分别送到输出端oRed/oGreen/oBlue。
4、每十六个像素对应的RGB信号格式
每帧视频信号所有像素转换成的RGB信号总共有九类, 下面分别用A/B/C/D/E/F/G/H/K九个字母代表九类RGB信号。每个方格对应一个像素, 用十六个像素的视频信号表示九种RGB信号的位置, 列在表1中。[4]
5、结语
RAW_to_RGB模块接收每个像素的12bits信号, 经过位移寄存器分配出wData0、wData1和Data2, 然后根据像素的坐标, 取不同的量形成rR、rG和rB, 此种算法应用在每十六个像素中。
参考文献
[1]张春《.SOPC视频实验指导书》.清华大学本科实验指导教材.
[2]Altera公司《.Avalon_MM Interface》.
[3] (美) 沃尔夫《.基于FPGA的系统设计》.机械工业出版社.
云端的格式转换 篇5
电子地图, 即数字地图, 是一种新兴的数字应用技术, 它利用了计算机技术、地理信息系统 (GIS) 、数据库等技术[1]。数字高程模型 (DEM) , 是指一定范围内的地理高程数据的集合, 用以描述实际地形特征的空间分布。数字高程模型是电子地图的一种重要格式, 它在国民经济和国防建设以及人文和自然科学领域有着广泛的应用[2]。
地理高程数据模型的存储格式, 种类繁多, 不同格式的数据很难在统一电子地图软件中对其进行操作, 导致数据之间不能实现共享, 同时也制约着地理信息系统整体的发展。在实际应用中发现, 最好的解决方法是数据格式的转换, 而当前的一些主流的电子地图软件, 如Global Mapper, 可以对国外的多种地图进行显示、编辑、格式转化、打印等多种操作, 但是这些软件不是开源的, 对一些国内标准的电子地图如NSDTF-DEM文件不支持, 而且对于某些地图格式之间的转换也可能会不太准确。即使购买国内的一些特殊的商业化组件, 也未必能完全满足需求, 而且这些组件需要专门的学习, 这也会增加研究和开发的经费和难度。研究者对数据格式转换进行研究, 以解决在部分开发应用中地图格式的限制, 完善GIS开发软件的数据接口, 促进地理数据信息的转换和共享。
1 地图格式分析
DEM地图格式转换最主要的是研究文件内的数据存储规则, 其数据结构的存储主要有等高线、三角网、规则格网、断面线和离散点式, 其中规则格网式是目前运用最广泛的一种数据结构形式[3]。下面介绍国内外几种不同的DEM电子地图都是格网式数据结构。
1.1 NSDTF-DEM格式分析
NSDTF-DEM是一种国家标准空间数据的交换格式, 后缀一般是.dem。格式文件由文件头和数据实体两部分构成。NSDTF-DEM是可读的, 但它不是ASCII码。NSDTF-DEM格式的头文件如表1所示。
头文件信息的第一行是数据交换格式的标志, 通常为NSDTF-DEM;第二行是该空间数据交换格式的版本号;第三行坐标单位, K表示公里, M表示米, D表示以度为单位的经纬度, S表示以度分秒表示的经纬度 (此处坐标格式为DDDMMSS.SSSS, DDD为度, MM为分, SS.SSSS为秒) ;第四行和第五行是方向角和压缩方法, 0表示不压缩, 1表示游程编码;第六和第七行表示坐标原点值;第八和第九行分别表示X、Y方向的间距;第十和第十一行表示数据的行数和列数;第十二行表示的高程放大倍数, 通常设置高程的放大倍率, 以使高程数据以整数存贮[4]。
NSDTF-DEM文件的数据部分存储一个二维DEM高程数据矩阵, 类型一般为整型 (单位为m) , 数据之间用空字符隔开。NSDTF-DEM属于格网式数据模型, 其中的每个数据表示DX×DY范围内的平均地面高程值。矩阵格网DEM占的存储空间较小, 比较容易处理, 但是由于格网矩阵的高程值受网格的取值大小的影响, 很有可能不能准确的表示地形的起伏状态。
1.2 GRD格式分析
GRD文件格式最初是由美国Golden Software公司为Surfer的制定的专用格网式地图格式, Surfer具有强大的差值功能和绘制图件的能力, 是地质工作者必备的专业成图软件, 现在Gr ADS、Map GIS等软件业采用了这种格式。GRD格式分为GS Binary (*.grd) 格式和GS ASCII (*.grd) 格式两种, 此处主要研究的是GS ASCII (*.grd) 格式。GRD文件格式的文件头一共包括五条文件信息 (关于网格限制) , 文件头信息后面是高程数据z。GRD文件头信息结构如表2所示。
DSAA是Surfer ASCII格网文件的ID号。GRD文件的数据实体是矩形网格的DEM高程矩阵。其数据存储形式如下:
GRD row 1 (z值字符串, z的坐标点为 (x1, y1) , (x2, y1) , …, (xn, y1) )
GRD row 2 (z值字符串, z的坐标点为 (x1, y2) , (x2, y2) , …, (xn, y2) )
GRD row…
……
GRD row n (z值字符串, z的坐标点为 (x1, yn) , (x2, yn) , …, (xn, yn) )
注意, 此处x1<xn, y1<yn。并且这种文件格式是用空格来区分两个数据的。
通过上面的描述可以知, 高程数据实体是一个nx*ny的矩阵, 矩阵中每行数据存储的是同纬度的高程数据。高程矩阵的网格节点的间隔可以由头文件信息计算出。
1.3 Arc ASCII Grid格式分析
Arc ASCII Grid格式美国环境系统研究所 (ES-RI) 定义的一种文件格式标准, 文件后缀为.asc, 它最初应用于Arc GIS软件, Arc GIS是世界上应用最广泛的GIS软件。Arc ASCII Grid格式是一种二进制表示 (ASCII) 的电子地图格式, 文件由文件头信息和存储的高程数据两部分构成。Arc ASCII Grid文件内部的第一部分是头文件, 文件头信息里面记录的是地图数据的范围, 数据的精度, 以及数据的极限值, 文件头信息结构如表3所示。
Arc ASCII Grid格式的数据实体是标准的规则格网结构的DEM模型, 它是在X和Y方向上按照等距离的方式取坐标点, 记录坐标上的高程Z值, 形成一个格网矩阵DEM。Arc ASCII Grid的数据实体是一个ncols×nrows的高程数据矩阵, 数据单位通常为米, 数据类型为double。数据实体矩阵内存储数据的规则与GRD格式是相反的, 矩阵中每行数据存储的是同经度的高程数据。数据的起始 (地图的左下角) 坐标点和坐标的取点间隔记录在头文件信息中, 整个数据实体记录的是整个矩形截面内的平均高程数据。
规则格网数据结构表达简单, 便于用计算机进行数据计算和存储管理, 可以方便地进行数据压缩, 在地形分析中比较方便, 并且便于制作成立体图。但规则格网式的模型也有缺点:格网的大小影响内插精度;表示地面起伏精度时不够精确, 可能出现大梯度的现象, 表达起伏较小的地区时会出现大量数据冗余[5,6]。
1.4 USGS-DEM格式分析
USGS-DEM美国地质调查局定义的一种地图格式标准[7]。USGS-DEM文件由三个部分构成, 其中, 第一部分是头文件信息;第二部分是断面信息, DEM数据是按照精度划分成多个截面来存储的, 所以每个截面可看作是一个断面, 它包括断面头数据和DEM数据实体;第三部分是地图的精度信息, 一般采用默认精度而可以省略该部分。USGS-DEM数据存储采用ASCII码的形式, 三个部分逻辑存储都是以1024个字节长度为单位, 不足1024个字节部分的用空格补齐。断面信息的数据实体部分通常包含多个1024个字节, 为了有效的利用逻辑空间, 通常将每4个逻辑长度单位构成一个物理记录单位。头文件重要信息结构说明如表4所示。
上表为USGS-DEM的文件头信息重要部分, 都是不可缺失的信息, 跟数据实体计算相关。其余的一些信息基本都采用一些默认值, 甚至在某些特殊情形下可以缺失, 用空字符代替。该文件格式对信息的字节位数有严格的要求。断面信息主要结构如表5所示。
表中的字节位置是指在每个逻辑长度单位中的字节位置, 上表仅仅表示在第一个逻辑长度单位中, 数据实体的存储位置, 数据实体可能占用多个单位, 如果数据足够多, 那么从第二个逻辑单位开始, 起始字节为0。
USGS DEM主要采用两种类型的格网:UTM投影和地理坐标为单位的格网。此处研究的是以秒为单位的格网数据结构。界面覆盖的区域通常是一个地理上的矩形, 每个断面都单独记录起始坐标, 数据实体中高程值的单位与头文件信息中的高程最值的单位不一定是相同的。数据实体中默认单位为英尺, 而头文件信息中的最值, 默认单位为米[8]。
2 地图格式的转换计算与实现
2.1 文件头信息的转换计算
(1) NSDTF-DEM与GRD
(1) NSDTF-DEM到GRD的计算方法
nx=Row
ny=Col
xli=Xo
yli=Yo
xlo=Xo- (Row-1) *DX
ylo=Yo+ (Col-1) *DY
zli, zlo的大小由数据实体中查找高程值得到。
(2) 由GRD到NSDTF-DEM的计算方法
Xo=xlo
Yo=yli
DX= (xlo-xli) / (nx-1)
DY= (ylo-yli) / (ny-1)
Row=nx
Col=ny
Unit、Hzoom等由数据实体的数据决定。
(2) Arc ASCII Grid与GRD
(1) 由GRD到Arc ASCII Grid的计算方法
ncols=nx
nrows=ny
xllcorner=xlo
yllcorner=ylo
cellsize=∣xli-xlo∣/nx
NODATA_value=-9999
当|xli-xlo|/nx与|yli-ylo|/ny相等时可以按上面的公式转换, 但不相等时, 不能直接转换, 需要采用内插函数来计算数据实体, 或者是降低分辨率cellsize取公倍数, ncols、nrows需要重新计算。
(2) 由Arc ASCII Grid到GRD的计算方法
nx=nrows
ny=ncols
xli=xllcorner- (nrows-1) *cellsize
xlo=xllcorner
yli=yllcorner
ylo=yllcorner+ (ncols-1) *cellsize
zli, zlo的大小由数据实体中查找高程值得到。
(3) Arc ASCII Grid与USGS-DEM
(1) 由Arc ASCII Grid到USGS-DEM的计算方法
左下角坐标:
(xllcorner- (nrows-1) *cellsize, yllcorner+ (ncols-1) *cellsize)
高程点图定义:规则格网为“1”随机分布为“2”, 此处是规则格网。
坐标单位:0=弧度;1=英尺;2=米;3=弧秒。
高程坐标单位:1=英尺;2=米。对比Arc ASCII Grid数据实体判断是否需要对数据进行格式转换。
四个边界坐标:
行列数:nrows, ncols。
(2) 由USGS-DEM到Arc ASCII Grid的计算方法
由USGS-DEM到Arc ASCII Grid不一定能够直接转换, 当X轴分辨率和Y轴分辨率相等时, 可以直接转换;如果不相等, 需要先用内插函数来算出数据实体, 或者是取两个分辨率的公倍数作为新的分辨率, 但这会降低地图的分辨率。对于Arc ASCII Grid文件的头信息根据对应值, 直接从USGS-DEM查找即可。
2.2 高程数据实体计算
在格式转换时并不能简单的把数据实体移动到新的文件格式中, 往往需要对数据实体内的高程值进行计算, 也就是需要采用DEM的内插方法。
线性插值法是在一个格网内选取靠近且与待定高程点在同一连线上的两个已知高程数据点, 通过判断, 如果已知点的高程数据是接近线性变换的, 通过现行函数算出待定点的高程值[9]:
Hp=H1+ (H2-H1) * (Xp-X1) / (X2-X1) 式中, Hp为待定点的高程值, Xp为待定点的坐标, H1、H2为两个已知点的高程值, X1、X2为已知点的坐标。当数据转换只需改变一个维度的分辨率值, 可采用线性插值计算。
双线性内插法是在一个格网内选取临近待定高程点的4个已知高程点, 先在一个方向上内插两次, 然后从另一个方向上内插一次, 最终求得待定高程点的高程值。
Hp=Ha+ (x-x1) / (x2-x1) * (Hb-Ha) +y-y () 1/ (y2-y1) * (Hc-Ha) + (y-y1) * (xx1) / (y2-y1) / (x2-x1) * (Ha+Hd-Hb-Hc) 式中, Hp为待定高程点Po (x, y) 的高程值, Ha、Hb、Hc、Hd为四个已知高程点为A、B、C、D的高程值, P1、P2为临时点。先通过两次同方向的线性插值计算出P1和P2的高程值, 然后再通过P1和P2方向的线性插值计算出Po点的高程值Hp。
2.3 电子地图转换的具体方法步骤
根据对电子地图格式的分析, 确定其存储规则之后, 就可以对电子地图操作直接进行格式转换, 转换的具体步骤如下。
步骤1:打开需要转化的源文件, 并判断其文件格式类型。
Judge File () ∥判断文件格式
步骤2:根据源文件格式对应的文件头信息结构读取文件头, 将文件头信息存入缓冲区;根据数据存储规则读取文件的数据实体, 并存入数据缓冲区。
Read File () ∥读取文件
{
if (NSDTF-DEM)
StrReader.Read Line () ;
……
If (ASC)
…….
}
步骤3:确定目标文件格式类型, 创建目标文件, 并计算目标文件的头信息, 根据目标文件头信息的结构, 按照其规则写入目标文件。
Write Head File () ∥写入目标文件头信息
{
Stream Writer sw;
sw.Write Line ("ncols{0}", cols) ;
……
}
步骤4:根据源文件和目标文件结构实体的对应关系, 通过缓冲区的高程数据计算出目标文件的高程数据实体, 并按照存储规则写入目标文件, 完成格式转换。
Write File ()
{
For (pi=1:Row)
For (pj=1:Col)
{
sw.Write (Data[…])
}
sw.Write Line () ;
……
}
3 电子地图转换效果检验
以Arc ASCII Grid格式和USGS-DEM格式为例, 对上节介绍的电子地图数据格式转换进行了实验, 检验格式转换的效果。实验中, 首先找到同一地域的Arc ASCII Grid格式和USGS-DEM格式的地图, 然后对它们进行转换, 并将格式转换后的数据与原始该格式的数据进行了对比。实验中采用的Arc ASCII Grid格式的地图和USGS-DEM格式地图都来源于SRTM3 (Shuttle Radar Topography Mission) , 由美国太空总署 (NASA) 和国防部国家测绘局 (NI-MA) 联合测量[4]。两种地图的分辨率分别有90米和30米的分辨率为90米地图的经纬度范围是:115E~120E, 35N~40N;分辨率为30米地图的经纬度范围分别是:115E~116E, 34.5N~35.5N。由90米分辨率的USGS-DEM转化为90米分辨率的Arc ASCII Grid时, 由于转换过程中没有高程数据的插值计算, 仅仅是高程数据的复制和按规则重新存储, 所以可以实现无差错转换。由90米分辨率的USGS-DEM转化为30米分辨率的Arc ASCII Grid时, 以下为转换后的地图和下载的标准的30米分辨率地图的部分数据, 数据的左下角经纬度坐标都为 (115E, 35N) :
下载Arc ASCII Grid的数据:
加粗的数据表示一致的数据, 通过对比计算转换地图和下载地图的所有数据, 转换高程数据的平均误差≤2.736m。误差产生的原因是插值计算方式的不同, 以及采集的数据与计算数据的差异性。
将转换后的Arc ASCII Grid地图用自己编译的控件打开, 界面如图2所示。
如图2所示, 在实例操作过程中, 文中提到的几种地图格式文件之间都实现了正确转换, 证明了提出转换方法的有效性。
4 结束语
研究国内外几种不同标准的DEM电子地图, 确定数据存储规则, 对地图进行操作实现地图格式的转换。本文研究工作是基于一个具体项目的需要而展开的, 在项目的应用中表明, 按照所推荐的方法可以成功实现这几种电子地图格式之间的相互转换, 满足了项目对地图格式的基本要求, 达到了预期的效果。本文研究虽然仅仅包含几种格式的电子地图, 但对于一些性能要求不高的电子地图的开发, 在地图格式转换和数据接口扩展方面还是有一定的借鉴作用的。
参考文献
[1]武雪玲, 任福.新技术条件下电子地图的现状及发展趋势分析[J].测绘与空间地理信息, 2004 (6) :75-78.
[2]Summerfield M A.Geomorphology and global tectonics[M].London:John Wiley&Sons, Ltd.Press, 2000.
[3]王家耀, 崔铁军, 苗国强.数字高程模型及其数据结构[J].海洋测绘, 2004 (3) :1-4.
[4]Holmes K W, Chadwick O A, Kyriakidis P C.Error in a USGS 30-meter digital elevation model and its impact on terrain modeling[J].Journal of Hydrology, 2000, 233 (1) :154-173.
[5]王艳东, 龚健雅, 黄俊韬, 等.基于中国地球空间数据交换格式的数据转换方法[J].测绘学报, 2000 (2) :142-148.
[6]张瑞军, 杨武年, 刘汉湖, 等.数字高程模型 (DEM) 的构建及其应用[J].工程勘察, 2005 (5) :61-64.
[7]邵华, 王建力, 杨圆鉴.基于Arc Info的CAD数据到GIS数据转换初探[J].科学技术与工程, 2009 (10) :2778-2780, 2785.
[8]郭黎, 崔铁军, 吴正生.多源数字地图融合技术问题的研究——以数字海图与地形图融合为例[J].海洋测绘, 2002 (2) :22-25.
云端的格式转换 篇6
1 DEM的格式
数字高程模型 (Digital Elevation Model, DEM) 是用一组有序数值阵列形式表示地面高程的一种实体地面模型, 主要有三种表现形式:等高线、规则格网以及不规则三角网 (TIN) 。三种表现形式各有其优缺点, 并根据实际需要, 应用于不同的范围。
(1) 等高线:通常所说的等高线数据通常包含等高线、特征线、特征点。运用等高线数据能准确地表现地表形状, 并且易于编辑、修改。其缺点是不直观, 无法与影像数据一起真实地展示地形, 因此, 在三维场景展示中, 不直接使用等高线, 而是将其转换成其他的格式。
(2) 规则格网:规则格网的优点是数据量小, 便于使用, 容易管理, 因而是目前使用比较广泛的一种格式。其缺点是不能准确的表示地形的结构和细部。
(3) 不规则三角网 (TIN) :不规则三角网是将采集到的地形特征点按照一定的规则连接成覆盖整个区域的且互不重叠的三角形集合。TIN能较好地顾及地形地貌特征点、线, 在表示复杂地形表面时, TIN比规则格网更精确, 但是TIN具有数据量大、数据结构复杂、使用管理复杂等缺点。
2 FME中DEM转换模块
2.1 FME介绍
FME (Feature Manipulate Engineering) 是加拿大Safe Software推出的空间数据转换处理系统。该系统通过提供在转换过程中重新构造数据的功能, 实现了不同空间数据格式之间的转换, 为快速、高质量、多需求的数据转换应用提供了高效、可靠的手段。FME在数据转换过程中具有以下优势。
(1) 数据格式多样化。FME作为强大的GIS数据转换平台, 能实现150多种数据格式的相互转换, 同时也可以实现不同坐标系之间的转换。
(2) 流线型处理过程。通过在FME数据输入的阶段执行多个任务, 提供了一套可以以不同方式进行组合的构建模块。
(3) 数据整合。在单个数据转换过程中合并多个数据集, 所输入的数据可以是一个或者多个不同的输入格式。
2.2 FME的DEM生成模块
FME的SurfaceModeller模块能实现三维地形数据以及不同格式DEM数据的相互转换, 为不同的工程应用提供不同格式的DEM数据。
(1) 数据输入。任何形式的DEM数据, 作为数据源时, 均作为高程点和线元素输入, 其中线素分为等高线和特征线。将源数据分成三类, 可同时导入到SurfaceModeller中, 多种源数据也可以同时导入共同参与计算, 并实现格式的转换。
(2) 数据转换。SurfaceModeller模块是一个封装的数据数据转换模块, 只需要根据实际需要设置相关的参数, 如DEM格网间距、等高线维数等。
(3) 数据输出。SurfaceModeller模块提供多种输出DEM数据格式, 并且可以同时输出多种格式。
3 应用实例
以重庆市北部新区某大型开挖区域的土石方动态监测项目为例, 介绍FME在DEM数据转换中的应用。
3.1 项目概况
为了动态监测该项目的开挖进度以及土石方量的挖填平衡情况, 采用无人机对开挖区域 (约8平方公里) 及周边区域 (约6平方公里) 进行航空摄影, 并用GPS测量方法进行像片控制测量, 通过无人机数据处理软件MAP-AT可以获取该区域的数字正射影像图 (DOM) 以及数字高程模型 (DEM) 。由于篇幅有限, 无人机数据处理的具体方法就不做详细描述。运用所获得的DOM以及DEM数据, 运用Skyline的TerraBuilder可以生成真实的三维场景, 即可进行三维浏览以及土石方量的相关分析, 为工程的挖填平衡提供科学的依据和动态监测, 保证项目的后期的正常推进。
3.2 DEM数据转换及修正
由于目前无人机数据处理软件MAP-AT不是特别完善, 支持的DEM数据格式比较单一, 同时无法对生产的DEM数据中的错误点进行修正以及对DEM的精度做客观的评价, 因此通过无人机数据处理软件直接获得的DEM数据不能满足后期的应用需要对DEM数据错误点进行修正以及格式转换。
(1) DEM数据初始转换。
通过MAP-AT软件可以获取其专有文本格式的DEM数据, 需使用ArcMap软件的转换工具将DEM数据转换成通用的文本格式数据, 并进行Flip变换, 最后转换成Arc grid格式的DEM数据。
(2) 数据格式转换。
根据获取的DEM数据的缺点, 需要将其格式进行转换并同时生成三种格式DEM数据:等高线 (*.dgn格式) 、不规则三角网 (*.dgn格式) 以及栅格格式 (*.img格式) 。等高线数据主要用于与周边未开挖区域的已有地形数据进行比较, 以总体评价DEM的精度。不规则三角网用于对错误点进行修正, 栅格格式的DEM用于生成真实的三维场景。格式转换的过程如图1。
(3) 总体精度评价。
由于在开挖的区域无法获取其它正确的DEM数据, 因此只有将转换得到的等高线数据与未开挖的地形数据进行比较分析, 总体评价DEM的精度质量。在总体精度满足要求之后, 才能进行后续处理。
(4) 粗略三维场景生成。
首先运用转换好的DEM数据 (*.img) 与数字正射影像图, 运用skyline的TerrBuilder生成一个粗略的三维地形场景。在生成的三维场景中, 我们可以很容易的找到DEM数据中错误点位并进行标记, 为DEM的修正提供准确的定位 (如图2) 。
(5) DEM数据修正。
通过转换得到的TIN (*.dgn格式) 数据, 根据 (3) 中的错误标记, 将错误点及周边的TIN切割出来, 导入到专门的建模软件 (如3ds max、MultiGen Creator等) , 可以很方便的对错误点进行修正, 修正结果如图3。
(6) DEM数据整合。
将修正正确的TIN数据转换成*.img格式的DEM数据, 并替换初始错误的区域, 即可得到完整的正确的DEM数据。
3.3 三维场景的生成及挖填方分析
将修正过的DEM数据与数字正射影像, 运用TerrBuilder可以生成正确的真实三维场景。按照初始设计平常标高, 可以计算出当前的挖填状况, 为工程的后续工作提供科学的依据。土石方量挖填的计算结果如图4。
4 结语
根据实际工作经验, 本文介绍的DEM数据转换与修正的方法是可行的, 能满足工作要求, 并能运用到实际的工程项目中。但是, 整个数据处理的过程繁琐, 涉及的软件较多, 生产效率相对低下。因此, 在无人机数据处理软件或者三维场景生成软件的基础上, 开发出有效的DEM修正工具, 支持多种DEM数据格式, 一次性生产出合格可用的DEM数据势在必行。
摘要:以重庆市北部新区某土石方动态监测项目为例, 介绍了运用FME转换无人机数据处理软件制作的DEM数据以及对DEM数据错误点的修正方法, 同时生成真实的三维场景, 在skyline环境下实现土石方量的分析。
关键词:FME,DEM,三维场景
参考文献
[1]张祖勋, 张剑清.数字摄影测量学[M].武汉:武汉大学出版社, 1997.
[2]李莉, 李建榕, 魏福银.FME在数据加工项目中的应用[J].测绘信息与工程, 2003 (4) .
云端的格式转换 篇7
在实际教学中, 我们经常会遇到这样的问题, 我们制作的Flash课件拿到没有安装Flash播放器的机器上不能够播放演示.那么, 有没有一种好的办法能够在没有安装Flash播放器的机器上顺利地播放Flash程序呢?带着这个问题, 我们首先想到了格式转换, 利用VB6.0能够很好地解决此问题.
2.播放器对swf文件的处理
Flash播放器在一个显示帧标签到来之前会处理显示帧标签之前swf文件的所有标签.在这个时候, 播放列表被复制到屏幕上面, 与此同时Flash播放器在处理下一帧之前是空闲的.第一帧所显示的内容, 是在第一个显示帧标签之前的所有控制型标签操作产生的累积效果.第二帧所显示的内容, 是从文件开始到第二个显示帧标签所有控制型标签操作产生的累积效果.以此类推.
3.由swf文件转换为exe格式的文件
swf文件转换为exe格式的文件转换步骤:
(1) 以二进制方式读入你选定的Flash播放器, 并原封不动地写入新文件.这个播放器以Adobe Flash Player为宜.播放器的版本不要太高, 6.0左右即可, 因为版本越高, 体积越大.
(2) 以二进制方式读入一个swf文件内容, 并原封不动地写入新文件.
(3) 写入四个字节的文件标识符“56 34 12 FA”.
(4) 写入swf文件长度.
4.代码实现过程
新建一个工程, 在窗体上添加3个文本框、1个按钮.
Text1输入全路径源文件名, Text2输入转换后的全路径文件名, Text3输入全路径播放器文件名.
按钮1的标题是“转为exe”.
如下图所示:
程序代码:
以上程序代码为*.swf文件到*.exe文件的转换.由于篇幅有限, 我们对以上的EXEtoSWF 函数的代码稍加改动, 还可以由exe格式的文件中剥离出播放器来.
参考文献
[1]Visual Basic从入门到精通.北京:人民邮电出版社, 2010.
[2]剖析SWF文件结构探秘AVM运行原理.by laan, 2009 (12) .
【云端的格式转换】推荐阅读:
视频格式转换07-01
文档格式转换08-04
epub电子书格式转换08-02
巧用Word 样式集快速转换文档格式06-21
的格式06-14
的基本格式07-26
借据的格式05-16
发函的格式06-08
公函的格式06-08
编书的格式07-02