多波束测深XTF格式解析及解码程序研制

2015-06-22 14:56王胜平卢凯乐
关键词:字节解码波束

王胜平, 卢凯乐

(1.东华理工大学测绘工程学院,江西 南昌 330013;2.流域生态与地理环境监测国家测绘地理信息局重点实验室,江西 南昌 330013)



多波束测深XTF格式解析及解码程序研制

王胜平1,2, 卢凯乐1,2

(1.东华理工大学测绘工程学院,江西 南昌 330013;2.流域生态与地理环境监测国家测绘地理信息局重点实验室,江西 南昌 330013)

XTF格式可作为目前广泛使用的多波束测深数据通用格式,以二进制格式存储,不利于原始观测信息的解读以及在此基础上的二次开发。以Seabat8101多波束系统获取的测深数据为例,分析其数据结构,并运用C#编程语言编写程序完成XTF文件解码,将解码信息与Hypack软件处理的数据进行比对,验证了解码方法和结果的正确性。

多波束测深;XTF格式;数据解码;程序

王胜平,卢凯乐.2015.多波束测深XTF格式解析及解码程序研制[J].东华理工大学学报:自然科学版,38(4):443-448.

Wang Sheng-ping,Lu Kai-le.2015.Multi beam bathymetric XTF format and decoding program development[J].Journal of East China Institute of Technology (Natural Science), 38(4):443-448.

多波束测深是一种具有高精度、高效率和高分辨率等优点的海底地形测量新技术。该技术起源于20世纪60年代美国海军研究署资助的军事研究项目,目前,其研究和应用已达到了较高水平(刘经南等,2002;李家彪,1999)。

多波束测深系统种类繁多,主要有 ELAC Nautik 公司的Seabeam系列、RESON公司的SeaBat系列、Kongsberg Simrad公司的EM系列和Atlas公司的Fansweep20等(武同元等,2014),而且数据采集和数据处理用的第三方软件种类也多,主要有HYPACK, CARIS, Fledermaus等(程永寿等,2013)。由于多波束测深数据的存储格式多样,对后续数据精细处理和数据共享带来诸多不便。XTF(eXtended Triton Format)是Triton公司创建的一种文件格式,可在一个文件内存储不同的数据源信息。XTF是目前广泛使用的多波束数据通用格式之一,可以很好地统一波束测深数据的存储问题(李军等,2002;丁维凤等,2011;韩春花等,2012)。鉴于上述原因,以Seabat8101多波束测深系统获取的多波束测深XTF文件为例,深入分析XTF格式文件的数据结构,阐述其解码思路与方法,并运用C#(陈宏斐,2013)编程语言编写程序,完成XTF格式测深数据的解码,并与Hypack处理过的数据进行比对,验证其正确性。

1 XTF格式数据结构分析

XTF数据格式是目前广泛使用的多波束数据通用格式之一,可保存声纳、导航、遥测、测深等多种类型的信息。从数据组织的层面可将XTF数据看作无序树结构,头文件作为根节点,子节点则为各种类型的数据包,数据包子节点对应其相关数据,其主要内容包括文件头(基本信息与通道信息)、数据包(包头和数据记录块)。数据包与数据包之间紧密相连,但数据包种类可能不同。XTF格式文件是一种可扩展格式文件,目前部分仪器厂商会根据其需要增加附加信息。针对测深数据包,各厂商自主定义部分主要是测深数据记录部分(R Theta DATA),Seabat 8101的R Theta DATA结构体定义如表1所示。XTF测深文件其公共部分数据结构定义由Triton公司的XTF文档具体定义,当解码不同厂商仪器的XTF格式测深文件时,需要其提供数据记录部分的结构定义。

表1 Seabat 8101的R_Theta_DATA结构体

从文件存储的层面,XTF文件以线性形式存储。XTF头文件总大小102 4字节,第166到168字节、168到170字节分别记录侧扫和测深通道数量,当通道数量总数大于6时,头文件大小增加1024个字节。头文件中的信息存储划分到固定字节块中,例如第1个字节存储信息是判定该文件是否为XTF文件,第164字节往后读取2字节信息为导航数据存储类型(平面坐标或者经纬度)。前256个字节存储头文件中基本信息,具体内容主要有:声纳类型(第34到36字节记录声纳类型Sonar type)、导航数据存储类型(第164到166字节记录声纳类型nav units)、通道数量、仪器的安装信息;如GPS(216到224字节)、罗经(224到228字节)等传感器在船体坐标系下的坐标及姿态安装偏差(244到252、232到240字节)等。以6通道数据为例,每个通道占128字节,通道信息主要内容:通道类型(第1个字节),样本字节数(bytes per sample,6到8字节),倾斜角(tilt angle,40到44字节),波束宽度(beam width,44到48字节),换能器安装偏差信息(48到68字节)、采样格式(Sample Format,74到75字节)等。

图1 XTF格式测深文件解码流程图Fig.1 The decoding flow chart of XTF bathymetric file

头文件之后紧随数据包(ping),常见的数据包种类主要有声纳、测深、注释和姿态。数据包无规则排列在头文件之后,每种数据包第1个字节都必须是起始标志,第二个字节记录信息为数据包类型。数据包内第10字节开始,其后4字节内容信息为该数据包大小。

测深数据包由数据包头(BathyHeader)、数据记录块(R Theta DATA)组成,数据包头由固定的256字节构成,开始于十六进制的0xFACE。数据包头则主要记录数据包大小、日期、时间、拖鱼信息、导航信息、姿态信息等。数据记录块有一个通道头,在Seabat8101的XTF格式测深文件中,通道头主要记录采样率(samples per second)、声速、波束夹角、波束个数等信息等,通道数据则记录每一个测量数据值。

2 XTF格式测深数据解码方法与编程实现

XTF格式测深数据解码流程图如图1所示。本文运用C#语言编写程序解码XTF文件,C#是一种简单、现代、面向对象、类型非常安全、派生于 C 和 C++ 的编程语言。它同时具有 Visual Basic 的易用性、高性能 以及 C++的低级内存访问性,同时它还具有高效率及安全性、支持现有的网络编程新标准、错误提示功能、扩展交互性等优点(Christian et al.,2010)。

XTF文件格式的解码主要依托于其数据结构的定义,解码XTF文件从其头文件开始。头文件及通道信息具体结构定义可参考TRITON公司的XTF说明文档。在C#编程时,首先建立数据流(FileStream),然后建立二进制阅读器 BinaryReader,将基元数据类型读取为二进制值,并且二进制位数按读取大小依次增加,BinaryReader是基于数据流的。读取的二进制值可根据需要转换成相应十进制值。

在编程解码文件时,先读取1024字节,再判断是否为XTF文件,依据是第一个字节(FileFormat)必须等于0x7B(十进制值等于123),然后开始读取数据包(ping)。先读取2字节,十六进制值为0xFACE(十进制值为64206)则代表是数据包的开始,再往后读取一个字节是记录数据包类型(HeaderType),十进制值0代表声纳数据包、1代表注释包、2代表测深包、4代表姿态数据包,数据包的种类是有很多种的,参考TRITON公司的XTF说明文档可找出相对应类型。在编写程序时根据判断数据包类型(HeaderType)的值识别数据包,当不是测深数据包时,根据数据包结构读出其指示数据包大小的NumBytesThisRecord,从而跳过该数据包。

当判断为测深包时,开始读取测深包类容。测深包头(BathyHead)大小为256字节,除上述的判别是否为数据包和数据包类型的字节块外,剩余字节块对应的记录信息可参考TRITON公司的XTF说明文档。BathyHead之后开始读取R Theta DATA, Seabat8101测深数据包的通道头开始标志是十六进制值{0xff,0xff,0x00,0x00}接下来是通道类型(packet_type,Seabat8101值是0x17),通道头每个字节块对应的具体信息可参考表1的R Theta DATA结构体定义。

多波束的数据量非常庞大,当解码长条带数据时,程序调试会出现内存溢出问题。其内存分配作如下处理可解决,思路:逻辑判断控制放在内存中管理的数据量,当其占用到一定量内存时,用文件形式或外部数据库等方式进行过渡。具体一种解决方法:读取原始数据放在内存中,超出预定大小时,在另一线程中将内存中数据暂存入物理硬盘中,并及时释放内存,原始数据继续读取。完成XTF文件的解码后,提取出相应数据如安装信息、观测时间和测线信息、船体姿态信息、波束数和波束旅行时间等。

多波束XTF格式解码程序是多波束测深数据处理系统中一个子功能模块,程序主界面如图2所示。

图2 程序界面Fig.2 Program interface

3 实验结果及验证

在导出XTF测深数据文件的解码信息后,选择部分数据与Hypack软件处理后的数据对比,XTF头文件主要信息与原始HSX(Hypack软件导出文件)文件信息对比如表2,可以看出头文件信息读取完全正确。选取时间起点03:11:17.54后的50PING的数据,Hypack处理后的姿态数据(Pitch,Roll,Heading,Heave)与解码XTF文件获取的值对比如图3,可验证解码其值完全正确。对原始数据进行声线跟踪、姿态改正、归位计算和水深改正,最终可得出多波束每一条带的测点坐标。在此选取上述时间起点后第一PING的中央波束和左右各25个波束的解算的测深数据,将其与与Hypack处理后导出深度对比如图4。由于解算算法可能与软件有所不同,导致与Hypack软件处理过的深度值有细微差异,但深度误差值已经非常小。

图3 Pitch、Roll、Heading、Heave解码值与Hypack导出值比较Fig.3 The Pitch、Roll、Heading、Heave information contrasted between decoded of XTF and exported by Hypack

图4 解算深度与Hypack处理深度对比Fig.4 The comparison of processing depth and Hypack solution depth

4 结束语

XTF格式文件可以很好地统一测深数据的存储,XTF格式测深数据的解码对于后续能更灵活的进行误差分析以及数据后处理提供帮助。本文程序编写实现的是针对Seabat8101多波束测深包的解码,并与Hypack软件处理后的信息比对,验证了解码方法与解码结果正确。不同型号仪器和第三方数据处理软件转换获得的XTF文件的R_Theta_DATA有所差异,但解码思路和方法相同。

陈宏斐. 2013. 基于ArcGIS Engine的农村土地信息系统设计与实现[J]. 东华理工大学学报:自然科学版, 36(3):219-223.

程永寿, 姜效典,孔敏等.2013. 侧扫XTF格式数据UTM坐标转换重写入实现[J]. 海洋信息,(2):13-18.

丁维凤,冯霞,傅晓明,等. 2011. 多波束XTF格式数据航向信息重写入实例[J]. 海洋通报, 30(1):1-6.

韩春花,殷汝广,张俊明,等. 2012. XTF格式侧扫声纳数据格式解析与应用[J]. 海洋信息,(1):17-21.

李家彪. 1999. 多波束勘测原理技术与方法[M]. 北京:海洋出版社:45-68.

李军,滕惠忠. 2002. 侧扫声纳数据的格式转换及应用[J].海洋测绘,(3):36-38.

刘经南,赵建虎. 2002. 多波束测深系统的现状及发展趋势[J]. 海洋测绘,22(5):3-6.

武同元, 居向明, 谢清陆等.2014. 多波束.XTF数据结构与.ALL数据结构剖析[J]. 北京测绘, (1):16-21.

Christian Nagel,Bill Evjen,李铭. 2010. C#高级编程[M]. 下版,北京:清华大学出版社.

Multi Beam Bathymetric XTF Format and Decoding Program Development

WANG Sheng-ping1,2, LU Kai-le1,2

(1.School of Geomatics, East China Institute of Technology,Nanchang,JX 330013,China; 2.Key Laboratory of Watershed Ecology and Geographical Environment Monitoring,NASG,Nanchang,JX 330013,China)

Multi-beam bathymetric data mainly store in binary format at present,it is inconvenient to Interpreting the original observation information and doing secondary development On the basis of this format. the XTF format bathymetric data were collected by Seabat8101.Through analyze the data structure of XTF format file and write a program to decode XTF file by using the C# programming language. Then compared the decoded information with the data that processed by Hypack data- processing software, and validate the decoding method and the result.

multi-beam echosounder system; XTF format; data decoding; program

2015-09-09

国家自然科学基金(41206078);江西省自然科学基金(20142BAB217025);广东省交通运输厅科技项目(科技-2013-02-048);江西省教育厅科技项目(GJJ13441)

王胜平(1983—),男,博士研究生,主要从事航道、海洋测绘方面研究。E-mail:shwang@ecit.cn

10.3969/j.issn.1674-3504.2015.04.017

P229

A

1674-3504(2015)04-0443-06

猜你喜欢
字节解码波束
《解码万吨站》
No.8 字节跳动将推出独立出口电商APP
基于共形超表面的波束聚焦研究
超波束技术在岸基光纤阵中的应用
解码eUCP2.0
No.10 “字节跳动手机”要来了?
毫米波大规模阵列天线波束扫描研究*
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
简谈MC7字节码