袁 鵬
(長(zhǎng)江宜昌航道局,湖北 宜昌 443000)
在水下測(cè)量過程中,往往需要對(duì)同一區(qū)域不同時(shí)間段或者不同測(cè)量隊(duì)伍之間的測(cè)量數(shù)據(jù)進(jìn)行對(duì)比。引起兩期數(shù)據(jù)差異的原因有很多,如沖淤、施工、測(cè)量誤差及錯(cuò)誤等等。因此,合理地分析這些差異,進(jìn)而對(duì)測(cè)量結(jié)果進(jìn)行評(píng)定分析尤為重要。同時(shí)由于水下測(cè)量隱蔽等特性,兩期測(cè)量數(shù)據(jù)在平面位置上往往并不重合,這就導(dǎo)致兩者在對(duì)比過程中存在很大的不確定性,此時(shí)如何準(zhǔn)確確定兩者之間的差異并加以量化,對(duì)評(píng)定測(cè)量質(zhì)量、分析水下地形的變化有著重要的現(xiàn)實(shí)意義。諸如arcgis、surfer等軟件也有相應(yīng)的數(shù)據(jù)疊加分析的功能,但是對(duì)于普通測(cè)量員工,該操作過程略顯煩瑣,同時(shí)其并不能以準(zhǔn)確數(shù)值顯示每個(gè)點(diǎn)位的變化情況。因此,基于測(cè)量行業(yè)需求與VBA語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單可視化的測(cè)量數(shù)據(jù)對(duì)比軟件的開發(fā),以期提高水下測(cè)量數(shù)據(jù)的比對(duì)效率和質(zhì)量。
實(shí)現(xiàn)兩期數(shù)據(jù)的對(duì)比分析,核心的問題就是如何快速準(zhǔn)確的計(jì)算出同一位置兩期測(cè)量數(shù)據(jù)的差值。基于水下測(cè)量的實(shí)際需求,計(jì)算出同一點(diǎn)位前后兩期的高程差值,并根據(jù)高程差值所在的不同區(qū)間對(duì)測(cè)量點(diǎn)數(shù)加以統(tǒng)計(jì)。測(cè)量行業(yè)多采用CAD進(jìn)行繪圖展點(diǎn),基于AutoCAD VBA的編程原理進(jìn)行程序開發(fā),更有利于測(cè)量人員操作。因此選擇基于VBA進(jìn)行程序開發(fā)及窗體設(shè)計(jì),以期為用戶提供一個(gè)既快速準(zhǔn)確又具有良好人機(jī)交互界面的數(shù)據(jù)對(duì)比軟件。
如何實(shí)現(xiàn)同一位置兩期數(shù)據(jù)的對(duì)比,根據(jù)實(shí)際操作過程主要有以下3種方法:① 采用距離相近法,對(duì)距離相近的兩個(gè)點(diǎn)間進(jìn)行比較計(jì)算(類似于傳統(tǒng)方法進(jìn)行兩期數(shù)據(jù)的對(duì)比);② 采用網(wǎng)格法,計(jì)算前后兩期網(wǎng)格點(diǎn)的數(shù)據(jù)然后進(jìn)行比較計(jì)算(類似于surfer軟件的計(jì)算原理);③ 采用三角網(wǎng)插值法,按本次測(cè)量點(diǎn)位對(duì)原數(shù)據(jù)進(jìn)行內(nèi)插計(jì)算[3],本次測(cè)量點(diǎn)位內(nèi)插值與實(shí)測(cè)值進(jìn)行比較計(jì)算。考慮到方法①中如何界定距離相近存在人為性,同時(shí)在水下地形復(fù)雜的地方,較小的位置偏差水深就會(huì)有較大的變化,因此比較的嚴(yán)謹(jǐn)性不足,而且同一位置相近的點(diǎn)也許會(huì)有很多,容易出現(xiàn)死循環(huán);方法②中網(wǎng)格的大小確定存在一定問題,生成的網(wǎng)格區(qū)域一般都是規(guī)則的矩形[4],需經(jīng)過處理,才能直觀反映測(cè)區(qū)情況,同時(shí)檢查結(jié)果展點(diǎn)后呈現(xiàn)規(guī)則的網(wǎng)格狀,為判斷其在測(cè)區(qū)的位置關(guān)系,還需進(jìn)行測(cè)量邊界的白化處理;方法③對(duì)比的位置與實(shí)測(cè)位置一致,同時(shí)檢查的密度也與實(shí)測(cè)的比例尺一致,檢查結(jié)果根據(jù)實(shí)測(cè)的點(diǎn)密度和斷面設(shè)計(jì)情況輸出呈現(xiàn)。綜上所述,確定采用三角網(wǎng)內(nèi)插計(jì)算的方法進(jìn)行數(shù)據(jù)的對(duì)比分析。
內(nèi)插法計(jì)算差值主要分為4步(圖1):
圖1 內(nèi)插算法示意圖
第一步,根據(jù)原始數(shù)據(jù)生成三角網(wǎng)點(diǎn)表。
第二步,判斷本次測(cè)量的各點(diǎn)(內(nèi)插點(diǎn)),采用角度法判斷點(diǎn)在那個(gè)三角形角網(wǎng)內(nèi),或者三角形邊上。
第三步,用雙線性內(nèi)插計(jì)算內(nèi)插點(diǎn)的高程[5-6]。
雙線性內(nèi)插的計(jì)算方法如下。根據(jù)已知3個(gè)點(diǎn)A、B、C,內(nèi)插計(jì)算P的高程:
Zl=ZA+(ZB-ZA)×(Xl-XA)/(XB-XA)
Zy=ZA+(ZC-ZA)×(Xr-XA)/(Xc-XA)
Zp=Zl+(Zr-Zl)×(Xp-Xl)/(Xr-Xl)
Yp=Yl=Yr,點(diǎn)l、r分別位于直線AB和AC上。
第四步,本次測(cè)量的高程值與內(nèi)插所得高程值進(jìn)行差值計(jì)算,所得值即為該點(diǎn)前后兩次測(cè)量的不符值。
根據(jù)程序設(shè)計(jì)的流程及軟件的操作過程,繪制程序架構(gòu)[7],如圖2所示。首先把兩期的測(cè)量數(shù)據(jù)轉(zhuǎn)換為常用的CASS格式(點(diǎn)號(hào),,Y,X,Z)。在軟件開始界面輸入兩期數(shù)據(jù),并輸入互查閥值,即確定差值所在區(qū)間進(jìn)行統(tǒng)計(jì)和展點(diǎn)顯示。點(diǎn)擊確定,基于后臺(tái)程序的計(jì)算把每個(gè)點(diǎn)位的差值和統(tǒng)計(jì)結(jié)果分別顯示在CAD界面和軟件界面上。
圖2 程序架構(gòu)圖
(1)利用原始數(shù)據(jù)生成三角網(wǎng)
Private Function Create_Triangle(l As Long, x#(), y#(), h#(), Sjw_L As Long, X1#(), Y1#(), H1#(), X2#(), Y2#(), H2#(), x3#(), y3#(), h3#())As Boolean
….
X1(Sjw_L)= x(a),X2(Sjw_L)= x(b),x3(Sjw_L)= x(c)
Y1(Sjw_L)= y(a),Y2(Sjw_L)= y(b),y3(Sjw_L)= y(c)
H1(Sjw_L)= h(a),H2(Sjw_L)= h(b),h3(Sjw_L)= h(c)
(2)本次測(cè)量數(shù)據(jù)內(nèi)插并求取差值
Public Function Triangle_Ins(l As Long, x#(), y#(), h#(), X1#(), Y1#(), H1#(), X2#(), Y2#(), H2#(), x3#(), y3#(), h3#(), Point_x#, Point_y#)As Double
….
OutPoint_xyh(2)= bc_h(ds)-go.Triangle_Ins(l, x, y, h, X1, Y1, H1, X2, Y2, H2, x3, y3, h3, OutPoint_xyh(0), OutPoint_xyh(1))
….
(3)把計(jì)算差值結(jié)果與設(shè)置臨界值的關(guān)系按實(shí)際點(diǎn)位位置以文字的形式標(biāo)出
Call ThisDrawing.ModelSpace.AddText(Format(OutPoint_xyh(2), "0.0"), OutPoint_xyh, TextHeight)
以某水域前后兩期測(cè)量數(shù)據(jù)為例。手動(dòng)設(shè)置數(shù)據(jù)檢查的各臨界值,通過閥界值的設(shè)定,程序會(huì)自動(dòng)對(duì)兩次測(cè)量數(shù)據(jù)的差值進(jìn)行分區(qū),以不同的層、不同顏色進(jìn)行展點(diǎn)顯示。輸入與輸出界面如圖3-圖5所示。
圖3 程序開始界面
圖4 程序計(jì)算結(jié)果界面
圖5 對(duì)比顯示結(jié)果界面
各區(qū)間占比數(shù)字的字體顏色與相對(duì)應(yīng)區(qū)間展點(diǎn)的字體顏色一致。
關(guān)閉顯示界面,返回CAD界面,此時(shí)各區(qū)間差值點(diǎn)都已經(jīng)展繪在CAD界面上。
通過構(gòu)建三角網(wǎng),內(nèi)插對(duì)比的方法能夠大幅度的提高檢查對(duì)比的效率,且更加準(zhǔn)確,同時(shí)鑒于差值不同的顯示效果,可以快速確定地形變化區(qū)域;在對(duì)比過程中對(duì)對(duì)比結(jié)果的統(tǒng)計(jì),能夠?qū)Ρ敬螠y(cè)量結(jié)果進(jìn)行準(zhǔn)確評(píng)價(jià);根據(jù)實(shí)際需要可對(duì)差值區(qū)間進(jìn)一步細(xì)化,或變換差值顯示效果,提高對(duì)比的辨識(shí)效果。