摘 要:全站儀目前已經(jīng)成為測繪領域重要的測量儀器,特別是在地形圖碎部測量中,它以速度快、操作簡單、成圖方便的優(yōu)點在測量界得到了廣泛應用。但是,如果在操作過程中出錯,造成的重復工作量也是極大的。本文采用了計算機編程的方法來解決在全站儀碎部測量過程中將坐標值輸反造成的測量坐標與真值之間的解算問題。 
關鍵詞:VB6.0;全站儀;三維坐標;數(shù)據(jù)解算 
  全站儀,即全站型電子速測儀(Electronic Total Station),是一種集光、機、電為一體的高技術測量儀器,是集水平角、垂直角、距離(斜距、平距)、高差測量功能于一體的測繪儀器系統(tǒng)。因其一次安置儀器就可完成該測站上全部測量工作,所以稱之為全站儀。 
  隨著全站儀的普及,全站儀在地形圖測繪工作中得到了廣泛的應用。在已知平面控制網(wǎng)點上安設儀器,后視另外已知平面控制網(wǎng)點,便可完成設站,設站完成后便可進行碎部點的測量。如果在全站儀設站過程中將坐標的X、Y值輸反,在地形圖測繪過程中很難發(fā)現(xiàn),只有在地形圖測繪完成后,將全站儀內(nèi)的碎部點三維坐標展繪到成圖軟件上才會發(fā)現(xiàn)。 
  X、Y值輸反后測量出的碎部點三維坐標值到底與該碎部點的真實三維坐標值存在什么樣的關系呢?我們假設在A點安設全站儀,B點作為后視點,C點是我們的目標點,在X、Y值輸反的情況下,A點到C點的水平距離、天頂距、高差以及后視點、設站點與目標點之間的水平角都是正確的,也就是說在這種情況下我們測得的C點高程是沒有問題的,剩下的就是X值與Y值得關系了。 
  我們知道我們由A點測量C點的坐標的過程是這樣的: 
  Cx=Ax+△x 
  Cy=Ay+△y 
  其中△x=lAC×cosαaAC 
  △y=lAC×sinαAC 
  也就是說只要找出在X、Y值輸反情況下測得的A-C的方位角與正常情況下測得的A-C之間的方位角之間的關系就可接算出正確的碎部點坐標。 
  αAC=Αba+βBAC±180° 
  (在所測水平角為左角的情況下,上式成立。) 
  我們假設在X、Y輸反的情況下得到的A、B、C點分別為A’、B’、C’。 
  根據(jù)A’、B’、C’三點的平面坐標我們可以反算它們之間的水平距離及方位角。 
  βB`A`C`= αA`C`-αB`A`±180° 
  根據(jù)以上公式,我們便可求出正常情況下A點到C點的方位角 。 
  αAC=αBA+βB`A`C`±180 
  另lA`C`=lAC 
  根據(jù)求得的αAC和lAC即可求出相應的坐標增量,從而求出C點的正確坐標。通過VB6.0能夠很好的實現(xiàn)上述解算過程。 
  首先我們編程實現(xiàn)根據(jù)兩點坐標反算方位的函數(shù),函數(shù)內(nèi)容如下: 
  Public Function direct(px1 As Double, py1 As Double, px2 As Double, py2 As Double) As Double 
  If (py2 - py1) >= 0 And (px2 - px1) > 0 Then direct = Atn(Abs((py2 - py1)) / Abs((px2 - px1))) 
  If (py2 - py1) > 0 And (px2 - px1) < 0 Then direct = Pi - Atn(Abs((py2 - py1)) / Abs((px2 - px1))) 
  If (py2 - py1) < 0 And (px2 - px1) > 0 Then direct = 2 * Pi - Atn(Abs((py2 - py1)) / Abs((px2 - px1))) 
  If (py2 - py1) <= 0 And (px2 - px1) < 0 Then direct = Atn(((py2 - py1)) / ((px2 - px1))) + Pi 
  If (py2 - py1) > 0 And (px2 - px1) = 0 Then direct = Pi / 2 
  If (py2 - py1) < 0 And (px2 - px1) = 0 Then direct = 3 * Pi / 2 
  End Function 
  在程序中根據(jù)上述函數(shù)首先求出αA`C`、αB`A`以及αB`A`,再根據(jù)以下公式求出αAC 
  βB`A`C`=αA`C`-αB`A`±180° 
  αAC=αBA+βB`A`C`±180 
  最后在程序里根據(jù)以下公式求出最終的C點正確坐標。 
  △x=lAC×cosαAC 
  △y=lAC×sinαAC 
  Cx=Ax+△x 
  Cy=Ay+△y 
  下面以一個實際例子來說明程序運行過程及結(jié)算結(jié)果: 
  在Q1(3966947.745,20567254.362,183.5)點支設全站儀,后視點Q4(3967070.213,20567350.114,181.3),共觀測HB1、HB2、HB3、HB4、HB5 共5個碎部點。 
  HB1,3966919.202,20567296.396,183.269 
  HB2,3966894.958,20567318.871,183.110 
  HB3,3966862.615,20567391.897,182.958 
  HB4,3966781.122,20567533.938,182.583 
  HB5,3966746.157,20567577.353,182.435 
  解算后的碎部點坐標為: 
  HB1,3966981.652,20567216.522,183.269 
  HB2,3966997.615,20567187.572,183.110 
  HB3,3967060.681,20567138.568,182.958 
  HB4,3967178.868,20567025.216,182.583 
  HB5,3967212.566,20566980.81,182.435 
  實驗證明該程序解算后的碎部點三維坐標完全正確,利用Vb6.0進行計算機程序設計的方法來解決全站儀碎部測量過程中坐標值輸反造成的碎部點測量值與真值之間的解算是可行的。 
  參考文獻: 
  [1]李曉娥,張慶勇.利用VB編程實現(xiàn)全站儀數(shù)據(jù)格式的轉(zhuǎn)換[J].科技情報開發(fā)與經(jīng)濟,2005,17.