1. 程式人生 > 其它 >詳細介紹XTF檔案資料格式

詳細介紹XTF檔案資料格式

技術標籤:XTF檔案解析pythonpycharm

詳細介紹XTF檔案資料格式

(按照資料結構順序列出)(普遍適用)

  1. XTFFILEHEADER Structure

這個是整個檔案的header,裡面儲存了檔名,SonarName,SonarType,CHANINFO等基礎資訊。
裡邊會有一個判斷哪個通道的問題,這個也差不多決定了之後你的資料結構是哪一種型別的。
比如NumberOfBathymetryChannels==1的時候,就差不多是關於Bathymetry的資料包了。
之後CHANINFO為六個通道的資訊
通道資訊還是比較重要的,關係到之後的ping檔案中有幾個通道。
這個意思是,當CHANINFO中儲存了兩個通道的有效資訊

,pingHeader中就有兩條資料通道。

just like this
在這裡插入圖片描述
(!!注意為有效資訊,有些通道只是空資料包,需要跳過)
如果遇到Bathymetry,那只有一條通道。
在這裡插入圖片描述

以上加起來一共1024bytes。

  1. 之後就是每一個ping對應的結構

包括XTFPINGCHANHEADER以及具體的資料包

2.1. XTFPINGCHANHEADER
當你在寫這部分程式碼時候,一定要注意,XTF檔案中的ping數不勝數,每一個ping中都有header以及data,而且ping的型別可能還不相同。所以你需要仔細看一下你的header都有什麼,對應哪一個structure。
注意:每一個header的前六個內容基本一致,我們可以利用這一特性,先獲取HeaderType是哪一種型別,通過if判斷之後應該執行哪一個structure。

這時候,你會遇到空資料包的存在,判斷是否為空資料包的方法為:ping的大小為該pingheader的大小,也就是整個ping中只有pingheader,data為空。當遇到這種情況的話,用return直接返回,獲取下一個ping。
另外注意,HeaderType會有幾個特殊的結構,一定要仔細看完,不是全部的pingheader都是一樣的。

2.2. data sturcture
我大概理解XTF說明檔案中的內容為:資料格式不歸我管,你去找別人要!聲納格式網上比較普遍,可以直接看我上一篇中的資源有哪些,裡面介紹了幾個博文,可以參考。因為我需要的資料為Bathymetry,網上沒有,我直接給那個公司發郵件獲取的。我這裡也給大家貼上

[XTF檔案],檔案內容為Sonic2020,2022-2024裝置的data structure以及xtf說明書,大家自取。
連結:https://pan.baidu.com/s/1bIyzsWcXRHx3ggljKaCTDA
提取碼:fyej
大概的結構基本就是這些。

寫程式碼的時候,最好在某些顯眼的地方加入if判斷,判斷是不是剛好讀到了這個位置
比如在開始讀取pingheader的時候

if self.MagicNumber == 64206:# XTF檔案裡面有具體說明
    print("\nPING檔案格式正確")

如果輸出PING檔案格式正確,說明前面沒有發生錯位,可以正常讀取。

如果覺得好的話,點贊支援一下!
之後會更新我的一些程式碼邏輯。
網上有關XTF檔案的內容真的不多,如果有比較好的,也可以直接留言,讓更多人的知道。
我今天已經全部完成了對XTF檔案的解析。再次紀念一下。