EXCEL VBA测量平差程序编写9—角度平差

2025-11-10 20:20:58

1、已将观测角度、起始边、终边方位角,边长输入到计算表格中,具体看查看我的其他几篇经验。

EXCEL VBA测量平差程序编写9—角度平差

2、编写以下程序,计算角度闭合差并进行角度平差。

Sub jisuan5f()

Dim cfwj As Double

Dim fb As Double

Dim n As Integer

   n = ThisWorkbook.Worksheets("sheet1").Range("v8").Value

Dim sf As String, rf As Range

   sf = ThisWorkbook.Worksheets("sheet1").Cells(5, 8).Value

   sf = Angle(sf)

Dim ef As String

   ef = ThisWorkbook.Worksheets("sheet1").Cells(5 + n * 2, 8).Value

   ef = Angle(ef)

Dim cjsum As String

   cjsum = ThisWorkbook.Worksheets("sheet1").Range("v10").Value

   cjsum = Angle(cjsum)

   cfwj = Val(sf) + Val(cjsum) - n * 180

      If cfwj < 0 Then

         cfwj = cfwj + 360

      End If

   ThisWorkbook.Worksheets("sheet1").Range("v12").Value = dfm2(cfwj)

   fb = cfwj - Val(ef)

   ThisWorkbook.Worksheets("sheet1").Range("v14").Value = fb  '角度闭合差

Dim a, b, c As Integer

Dim pfb As Double

   pfb = Round(fb * 3600)   '角度闭合差

   a = pfb \ n   '平分给各站

   b = pfb - a * n  '余数

   If b Mod 2 = 0 Then

      c = b / 2

   Else

      c = (b - 1) / 2

   End If

Dim d As Integer

   d = ThisWorkbook.Worksheets("sheet1").Range("v18").Value

Dim i As Integer

Dim nRow As Integer

   nRow = 6

For i = 1 To n

  ThisWorkbook.Worksheets("sheet1").Cells(nRow, 4).Value = -a

  nRow = nRow + 2

Next

Dim e As Integer

e = pfb - a * n

Dim f As Integer

      nRow = 6

      For i = 1 To Abs(e)

          f = ThisWorkbook.Worksheets("sheet1").Cells(nRow, 4).Value

          ThisWorkbook.Worksheets("sheet1").Cells(nRow, 4).Value = f - e / Abs(e)

           nRow = nRow + 2

      Next

End Sub

3、计算角度闭合差,具体程序如下:

EXCEL VBA测量平差程序编写9—角度平差

4、将角度闭合差分配给各个测站,如果不能平均分,计算出余数。

EXCEL VBA测量平差程序编写9—角度平差

5、选出外业测量时边长最短的边,短边的测量误差较大,把余数分配给短边。

EXCEL VBA测量平差程序编写9—角度平差

6、运行程序,程序计算出角度闭合差,并分配到各观测站进行平差,如图所示。

EXCEL VBA测量平差程序编写9—角度平差

7、如果认为分配的不合适,可手动进行调整。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢