XTF格式浅地层剖面数据文件解译*
2022-01-19汪诗奇刘海波孙嘉骏
汪诗奇,刘海波,王 莹,孙嘉骏,陈 科
(1.中国电建集团昆明勘测设计研究院有限公司 信息技术研究院,云南 昆明 650051;2.华能澜沧江水电股份有限公司,云南 昆明 650214)
0 引言
浅地层剖面仪(浅剖)是一种典型的声学探测设备,它的主要原理是借助声学换能器向海底发射低频声波,利用低频声波所具备的穿透地层的能力以及不同介质对声波的声阻抗差异,使得声波在各介质交界面处产生较强回波,通过接收器接收这些时序的回波并存储为浅剖数据文件。浅剖数据对于了解水底浅地层结构和构造情况具有重要的作用[1,2],此外,在油气资源探测、海岸工程、海洋调查等方面也能发挥重要作用[3,4]。
Edgetech 3200型浅地层剖面仪是由美国Edgetech公司生产的一种声呐设备。它主要由SB-216S拖鱼(包括发射器、水听器、前置放大等)、甲板处理单元(放大器、显示处理器等)以及拖曳电缆组成。换能器发射的波形信号包含频率从0.5 kHz~12 kHz的扫频式高振幅信号。该系统配备Edgetech Discover数据采集软件,数据存储格式包括*.JSF和*.XTF两种。其中,XTF格式数据灵活性好,可扩展性较高,能够同时保存浅地层剖面数据、侧扫声呐数据、多波束测深数据、导航数据等多种数据信息,因此XTF格式的应用更为广泛。
本文以Edgetech 3200型浅地层剖面仪采集获得的XTF格式浅地层剖面数据为研究对象,深入分析了其数据结构,并借助编程手段进行数据文件解码及浅地层剖面图像生成。实践证明,本文解译生成的浅地层剖面图像与商用软件SonarWiz生成的结果基本一致,表明本文所述的浅地层剖面数据文件解译方式是正确有效的。
1 XTF文件格式解析
1.1 XTF文件格式简介
XTF文件格式是一种可扩展的数据格式[5],它的伸缩性和可扩展性很强,可保存声呐、航行、遥测、测深等多种类型的信息。在保存数据时,不会有储存空间被浪费,也不会产生数据不连续的现象。用户可以根据数据包的标识信息识别数据包的类型,仅读取所需要的数据包,而忽略未知或不需要的数据包。
所有的XTF文件都是由文件头开始。文件头数据保存在一个有1 024个字节大小的XTFFILEHEADER结构中,每个XTFFILEHEADER结构中包含6个通道的数据,每个通道的数据保存于CHANINFO结构中,当存储的数据通道大于6时,头文件的大小会以1 024的整数倍进行增加,直到有足够用的空间存储CHANINFO结构为止。随后是数据包,不同类型的测量数据均以包的形式存放,每个包中有一个包头(它以XTFPINGHEADER结构形式存在),存放每个脉冲中各通道的相关数据。最后则是通道头与通道数据,通道头以XTFPINGCHANHEADER结构形式存在,内部存放着脉冲号、通道标示等信息。
1.2 主要数据结构
1.2.1 XTFFILEHEADER数据结构
在XTFFILEHEADER数据结构(见表1)中,主要记录了文件类型、系统类型、声呐通道数、测深通道数、Snippet通道数、回拨强度通道数等必须填写的项和测量文件名、导航延迟、导航系统和姿态传感器的安装偏差等选填项目,而在末尾,还包含6个(一般情况下)CHANINFO的数据结构(见表2)。
表1 XTFFILEHEADER数据结构Tab.1 Data structure of XTFFILEHEADER
表2 CHANINFO的数据结构Tab.2 Data structure of CHANINFO
CHANINFO结构的大小为128个字节,其中包含通道类型和每个采样点的字节数两个必填项,也包括通道极性、电压范围、频率、波束开角、安装偏差(坐标和角度)等选填项,末尾还包括53个字节的未使用区域。
1.2.2 浅剖数据包数据结构
浅剖数据包主要包含3个部分:XTFPINGHEADER、XTFPINGCHANHEADER以及浅剖回波时序数据。
其中XTFPINGHEADER数据结构(见表3)中,主要包含本Ping数据记录时间(日期及时刻)、位置(导航数据)、航向、船速、声速等数据。
表3 XTFPINGHEADER数据结构Tab.3 Data structure of XTFPINGHEADER
XTFPINGCHANHEADER数据结构(见表4)中,主要包含本Ping数据的采样点个数、回波接收总时间、回波接收总距离等数据信息。
表4 XTFPINGCHANHEADER数据结构Tab.4 Data structure of XTFPINGCHANHEADER
浅剖回波时序数据紧跟其后连续存储。每个采样点的数据存储格式为短整型(short)。
1.3 解译程序实现
根据上述对XTF文件结构的分析,首先定义各主要结构体如下:
struct XTF_FILE_HEADER
{ BYTE FileFormat; //文件类型(set to 123)
BYTE SystemType; //系统类型
char RecordingProgramName[8];
char RecordingProgramVersion[8];
……
float MRUOffsetYaw; //姿态传感器航偏
float MRUOffsetPitch; //姿态传感器纵摇
float MRUOffsetRoll; //姿态传感器横摇
XTF_CHANINFO chaninfo[6];};
然后,根据二进制文件读取的特点,利用以上定义好的结构体,使用fread( void *buffer,size_t size,size_t count,FILE *stream) 函数可以很容易地将文件(硬盘)中的内容读取到缓存中[6]。
解译程序主要代码如下:
FILE *file;
file=fopen(filename.c_str(),"r+b");
if(file==NULL) {
printf("Can’t open file!");
return false; }
XTF_FILE_HEADER file_header;
fread(&file_header,sizeof(XTF_FILE_HEADER),1,file);
……
2 实例数据处理
为验证本文方法,利用某水库实测浅地层剖面数据进行实验。为了说明本文解译结果的正确性,利用商用软件SonarWiz的处理结果进行比较和分析。
对某一条测线数据进行解析得到如下信息:测量道数1 769,每道采样点数1 068。将其中某一道数据绘制成折线图(横坐标为采样点号,纵坐标为回波强度),如图1所示。
图1 某一道数据绘制的折线图Fig.1 Line chart drawn by using a certain data
从图1可以看出,在第297个采样点处具有最大回波强度,说明此处是发射声波在水体与水底交界面处产生的强回波。而后,回波能量随着传播距离增加逐步衰减。
将每一道数据作为一列,依照每道数据的连续性依次排列可以得到矩阵形式的回波数据。将该矩阵的每一个元素值归一化到0~255范围内,即可将该回波数据矩阵转化为灰度图像。某测线数据对应的浅剖图像如图2所示。
图2 某测线数据对应的浅剖图像Fig.2 Sub-bottom profiler images corresponding to a certain data
对比图2(a)和图2(b)可知,利用本文方法对XTF格式数据解译后所生成的图像与利用SonarWiz软件生成的图像基本一致。但本文绘制的图像存在较多竖直向条纹状的噪声干扰,而SonarWiz得到的图像比较平滑,层界清晰。经过分析,笔者认为存在以下原因:
1)本文成图时是直接将原始回波数据转换为图像,没有经过其他处理;而SonarWiz软件成图时重新进行了增益调整。
2)本文方法与SonarWiz软件采取的从回波数据到图像的转换过程存在差异。
3)本文成图后未经过任何处理,而SonarWiz软件对结果图像进行了去噪处理。
3 结束语
本文以XTF格式浅剖数据为研究对象,详细分析了XTF格式文件结构,并对各结构数据进行了说明,再利用编程手段对其进行了解译,最后对解译结果进行了成图展示。通过与SonarWiz商业软件的成图结果进行比较,认为本文对文件的解译方式是可行的。但是,因为本文方法未对原始回波数据进行相应的处理,导致所生成的图像与商业软件结果存在差异,在后续的工作中,需要加强这方面的研究,以获得更为真实的浅剖图像。