詳細介紹XTF檔案資料格式
詳細介紹XTF檔案資料格式
(按照資料結構順序列出)(普遍適用)
- XTFFILEHEADER Structure
這個是整個檔案的header,裡面儲存了檔名,SonarName,SonarType,CHANINFO等基礎資訊。
裡邊會有一個判斷哪個通道的問題,這個也差不多決定了之後你的資料結構是哪一種型別的。
比如NumberOfBathymetryChannels==1的時候,就差不多是關於Bathymetry的資料包了。
之後CHANINFO為六個通道的資訊
通道資訊還是比較重要的,關係到之後的ping檔案中有幾個通道。
這個意思是,當CHANINFO中儲存了兩個通道的有效資訊
just like this
(!!注意為有效資訊,有些通道只是空資料包,需要跳過)
如果遇到Bathymetry,那只有一條通道。
以上加起來一共1024bytes。
- 之後就是每一個ping對應的結構
包括XTFPINGCHANHEADER以及具體的資料包
2.1. XTFPINGCHANHEADER
當你在寫這部分程式碼時候,一定要注意,XTF檔案中的ping數不勝數,每一個ping中都有header以及data,而且ping的型別可能還不相同。所以你需要仔細看一下你的header都有什麼,對應哪一個structure。
注意:每一個header的前六個內容基本一致,我們可以利用這一特性,先獲取HeaderType是哪一種型別,通過if判斷之後應該執行哪一個structure。
另外注意,HeaderType會有幾個特殊的結構,一定要仔細看完,不是全部的pingheader都是一樣的。
2.2. data sturcture
我大概理解XTF說明檔案中的內容為:資料格式不歸我管,你去找別人要!聲納格式網上比較普遍,可以直接看我上一篇中的資源有哪些,裡面介紹了幾個博文,可以參考。因為我需要的資料為Bathymetry,網上沒有,我直接給那個公司發郵件獲取的。我這裡也給大家貼上
連結:https://pan.baidu.com/s/1bIyzsWcXRHx3ggljKaCTDA
提取碼:fyej
大概的結構基本就是這些。
寫程式碼的時候,最好在某些顯眼的地方加入if判斷,判斷是不是剛好讀到了這個位置
比如在開始讀取pingheader的時候
if self.MagicNumber == 64206:# XTF檔案裡面有具體說明
print("\nPING檔案格式正確")
如果輸出PING檔案格式正確,說明前面沒有發生錯位,可以正常讀取。
如果覺得好的話,點贊支援一下!
之後會更新我的一些程式碼邏輯。
網上有關XTF檔案的內容真的不多,如果有比較好的,也可以直接留言,讓更多人的知道。
我今天已經全部完成了對XTF檔案的解析。再次紀念一下。