A. Hypack2018處理側掃聲吶資料
Hypack2018處理側掃聲吶資料是本文探討的重點。本文使用的是Hypack2018 64位的Targeting and Mosaicking模塊進行數據處理。
啟動模塊後,界面與處理單波束數據時類似,界面簡潔,但顯得有些樸素。進行數據載入時,推薦使用XTF格式,博主單位多使用Klein3000/4000型號的側掃聲吶設備,其自帶的SonarPro軟體採集數據,格式偏好XTF。
打開XTF文件後,Hypack2018會彈出對話框,使用默認參數,設置Frequency2為高頻。打開數據文件後,可以看到數據的初步呈現。
接下來,通過掃描視圖(Scan view)來查看測線瀑布圖,如果顯示效果不理想,可以通過滑鼠右鍵點擊側掃控制菜單,調整增益至Auto TVG,Sensitivity越高,圖像越亮。
進行底跟蹤(Bottom Tracking)是側掃聲吶處理的重要步驟。首先設置自動底跟蹤,根據數據採集情況輸入Blanking距離,通常為採集量程的1/10。以圖中50m的量程為例,設置Blanking為5m,點擊應用後即可顯示底跟蹤的藍色線。
底跟蹤功能也支持手動操作,在原始數據窗口和掃描視圖界面均可進行。手動底跟蹤操作雖然起初可能有些不習慣,但隨著實踐逐漸熟悉。方法是點擊底跟蹤按鈕後,點擊圖像上的紅色點進行海底跟蹤,再次點擊底跟蹤按鈕,紅色點將自動連成線。需要注意的是,點紅色點時並不實時連成線。
最後一步是鑲嵌(Mosaic)處理,通過「Mosaic」菜單命令進行。鑲嵌時,可以進行解析度、是否移除水柱等設置。以0.1m解析度、移除水柱的圖像為例,若追求更高清晰度,可將解析度調整為更小的格網,如0.05m。
Hypack2018在Targeting and Mosaicing模塊中提供了目標提取功能,提取後目標會在Hypack主界面的項目文件/目標中顯示。然而,該模塊似乎不支持直接畫線段,Hypack幫助中也未找到相關功能。在鑲嵌圖像生成的TIFF文件中,使用Hypack的各種編輯工具繪制線性和面狀目標物,導出為矢量文件,如dwg格式。
B. EXCEL運行VB宏定義時產生錯誤「5」
'CommandBars("Worksheet Menu Bar").Controls(1).Controls(3).Delete
'CommandBars("Worksheet Menu Bar").Controls(1).Controls(7).Delete
『小心上面的操作是刪除我沒有調試,如果你只是不用的話不如用Visible = False
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Any, ByRef lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const HKEY_LOCAL_MACHINE = &H80000002
Sub ModifyMenu()
Dim str, strBuffer As String
Dim hKeyBinPath As Long
Dim lngResult, cb As Long
CommandBars("Worksheet Menu Bar").Enabled = True
CommandBars("Worksheet Menu Bar").Visible = True
CommandBars("Worksheet Menu Bar").Reset
'CommandBars("Worksheet Menu Bar").Controls(1).Controls(3).Delete
'CommandBars("Worksheet Menu Bar").Controls(1).Controls(7).Delete
CommandBars("Worksheet Menu Bar").Controls(1).Controls(3).Visible = False
CommandBars("Worksheet Menu Bar").Controls(1).Controls(7).Visible = False
CommandBars("Standard").Enabled = True
CommandBars("Standard").Visible = True
'CommandBars("Standard").Reset
CommandBars("Visual Basic").Enabled = True
CommandBars("Visual Basic").Visible = True
CommandBars("Visual Basic").Reset
' find registry key
strKey = "bin"
lngResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"Software\Baker Atlas\CASE", _
0, KEY_ALL_ACCESS, hKeyBinPath)
If 0 = lngResult Then
' read value
strBuffer = Space(255)
cb = Len(strBuffer)
lngResult = RegQueryValueEx(hKeyBinPath, _
strKey, 0, REG_EXPAND_SZ, ByVal strBuffer, cb)
If 0 = lngResult Then
str = Left(strBuffer, cb - 1)
End If
End If
strCasePath$ = str + "\"
strSaveFileAction$ = strCasePath$ + "Macros.xls!SaveFile.SaveFile"
Set cstmSave = CommandBars("Worksheet Menu Bar").Controls(1).Controls.Add(Type:=msoControlButton, Before:=2)
With cstmSave
.Caption = "Save As " + strCasePath$ + "Text1.csv and update XTF"
.OnAction = strSaveFileAction$
End With
End Sub
調試通過,另附對應名稱ID表
菜單欄各個ID
ID,名稱
1,文件(&F)
2,編輯(&E)
3,視圖(&V)
4,插入(&I)
5,格式(&O)
6,工具(&T)
7,數據(&D)
8,操作(&C)
9,窗口(&W)
10,幫助(&H)
文件菜單-ID與名稱
1,新建(&N)...
2,打開(&O)...
3,關閉(&C)
4,保存(&S)
5,另存為(&A)...
6,另存為網頁(&G)...
7,保存工作區(&W)...
8,文件搜索(&H)...
9,許可權(&M)...
10,許可權(&M)
11,簽出(&E)
12,簽入(&E)...
13,版本記錄(&R)...
14,網頁預覽(&B)
15,頁面設置(&U)...
16,列印區域(&T)
17,列印預覽(&V)
18,列印(&P)...
19,發送(&D)
20,屬性(&I)
21,此處為最近所用文件的名稱(&R)
22,此處為最近所用文件的名稱(&R)
23,此處為最近所用文件的名稱(&R)
24,此處為最近所用文件的名稱(&R)
25,此處為最近所用文件的名稱(&R)
26,此處為最近所用文件的名稱(&R)
27,此處為最近所用文件的名稱(&R)
28,此處為最近所用文件的名稱(&R)
29,此處為最近所用文件的名稱(&R)
30,簽出(&T)
31,退出(&X)