⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formconver.frm

📁 用VB编写的水准平差软件
💻 FRM
字号:
VERSION 5.00
Begin VB.Form FormConver 
   Caption         =   "Form1"
   ClientHeight    =   6105
   ClientLeft      =   4710
   ClientTop       =   3075
   ClientWidth     =   9615
   LinkTopic       =   "Form1"
   ScaleHeight     =   6105
   ScaleWidth      =   9615
   Begin VB.TextBox final_d 
      Height          =   375
      Left            =   5280
      TabIndex        =   24
      Text            =   "???"
      Top             =   5400
      Width           =   1335
   End
   Begin VB.TextBox h2 
      Height          =   375
      Left            =   7320
      TabIndex        =   22
      Text            =   "230"
      Top             =   3720
      Width           =   1455
   End
   Begin VB.TextBox s 
      Height          =   375
      Left            =   6000
      TabIndex        =   21
      Text            =   "579.5888"
      Top             =   4560
      Width           =   1455
   End
   Begin VB.TextBox dh 
      Height          =   375
      Left            =   3000
      TabIndex        =   19
      Text            =   "50"
      Top             =   4560
      Width           =   1455
   End
   Begin VB.TextBox b2 
      Height          =   375
      Left            =   5400
      TabIndex        =   11
      Text            =   "41.4016"
      Top             =   3720
      Width           =   1575
   End
   Begin VB.TextBox h1 
      Height          =   375
      Left            =   7320
      TabIndex        =   10
      Text            =   "200"
      Top             =   2880
      Width           =   1455
   End
   Begin VB.TextBox b1 
      Height          =   375
      Left            =   5400
      TabIndex        =   9
      Text            =   "41.4000"
      Top             =   2880
      Width           =   1575
   End
   Begin VB.TextBox y1 
      Height          =   375
      Left            =   3360
      TabIndex        =   8
      Text            =   "393289.1530  "
      Top             =   2880
      Width           =   1575
   End
   Begin VB.TextBox y2 
      Height          =   375
      Left            =   3360
      TabIndex        =   7
      Text            =   "393630.4878"
      Top             =   3720
      Width           =   1575
   End
   Begin VB.TextBox x2 
      Height          =   375
      Left            =   1320
      TabIndex        =   6
      Text            =   "4615967.7804"
      Top             =   3720
      Width           =   1575
   End
   Begin VB.CommandButton Command1 
      Caption         =   "立即计算"
      Height          =   375
      Left            =   3120
      TabIndex        =   5
      Top             =   5400
      Width           =   1575
   End
   Begin VB.TextBox x1 
      Height          =   375
      Left            =   1320
      TabIndex        =   4
      Text            =   "4615500.3119"
      Top             =   2880
      Width           =   1575
   End
   Begin VB.OptionButton Option3 
      Caption         =   "WGS-84椭球体"
      Height          =   855
      Left            =   6480
      TabIndex        =   2
      Top             =   1320
      Width           =   2415
   End
   Begin VB.OptionButton Option2 
      Caption         =   "1975国际椭球体"
      Height          =   615
      Left            =   3840
      TabIndex        =   1
      Top             =   1440
      Width           =   2295
   End
   Begin VB.OptionButton Option1 
      Caption         =   "克拉索夫斯基椭球体"
      Height          =   615
      Left            =   840
      TabIndex        =   0
      Top             =   1440
      Width           =   2535
   End
   Begin VB.Label Label10 
      Caption         =   "===>"
      Height          =   375
      Left            =   4800
      TabIndex        =   23
      Top             =   5520
      Width           =   615
   End
   Begin VB.Label Label9 
      Caption         =   "实测斜距S:"
      Height          =   375
      Left            =   4920
      TabIndex        =   20
      Top             =   4680
      Width           =   1695
   End
   Begin VB.Label Label8 
      Caption         =   "该地区的高程异常:"
      Height          =   375
      Left            =   1320
      TabIndex        =   18
      Top             =   4680
      Width           =   1815
   End
   Begin VB.Label Label7 
      Caption         =   "正常高H"
      Height          =   375
      Left            =   7800
      TabIndex        =   17
      Top             =   2280
      Width           =   855
   End
   Begin VB.Label Label6 
      Caption         =   "大地纬度B"
      Height          =   615
      Left            =   5760
      TabIndex        =   16
      Top             =   2280
      Width           =   855
   End
   Begin VB.Label Label5 
      Caption         =   "Y"
      Height          =   495
      Left            =   3720
      TabIndex        =   15
      Top             =   2280
      Width           =   735
   End
   Begin VB.Label Label4 
      Caption         =   "X"
      Height          =   375
      Left            =   1800
      TabIndex        =   14
      Top             =   2280
      Width           =   1215
   End
   Begin VB.Label Label3 
      Caption         =   "待求点 2"
      Height          =   375
      Left            =   360
      TabIndex        =   13
      Top             =   3720
      Width           =   735
   End
   Begin VB.Label Label2 
      Caption         =   "已知点 1"
      Height          =   255
      Left            =   360
      TabIndex        =   12
      Top             =   3000
      Width           =   735
   End
   Begin VB.Label Label1 
      Caption         =   "斜距改化"
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   24
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   615
      Left            =   3840
      TabIndex        =   3
      Top             =   480
      Width           =   3255
   End
End
Attribute VB_Name = "FormConver"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a As Double
Dim b_b As Double
Dim c As Double
Dim AA As Double
Dim ee As Double
Dim e_e As Double
Const Pi = 3.14159265358979
Const p = 206264.806247096

Public Function AngleToRadian(angle As Double) As Double                '角度化弧度
    Dim d As Integer
    Dim f As Integer
    Dim m As Double
    angle = angle + 0.0000000001
    d = Int(Abs(angle)) * Sgn(angle)
    f = Int(Abs((angle - d) * 100)) * Sgn((angle - d) * 100)
    m = ((angle - d) * 100 - f) * 100
'Print d
'Print f
'Print m
    AngleToRadian = (CDbl(m) / 3600 + CDbl(f) / 60 + CDbl(d)) * Pi / 180
'AngleToRadian = Sgn(angle) * AngleToRadian
'Print AngleToRadian
End Function


Public Function GetV(b As Double) As Double   '其中B为弧度
    GetV = Sqr(1 + e_e * Cos(b) * Cos(b))
'Print B
'Print e_e
'Print Sqr(1 + e_e * Cos(B) * Cos(B))
End Function

Public Function GetM(b As Double) As Double    '其中B为弧度
    Dim V As Double
    V = GetV(b)
    GetM = c / (V * V * V)
End Function

Public Function GetN(b As Double) As Double     '其中B为弧度
    Dim V As Double
    V = GetV(b)
    GetN = c / V
End Function


Public Function RadianToAngle(radian As Double) As Double              '弧度化角度
    Dim angle As Double
    Dim d As Double
    Dim f As Double
    Dim m As Double
    Do While (radian > (2 * Pi))
    radian = radian - 2 * Pi
    Loop
    'Do While (radian < 0)
    'radian = radian + 2 * PI
    'Loop
    angle = radian * 180 / Pi
    d = Int(Abs(angle)) * Sgn(angle)
    f = Int(Abs((angle - d) * 60)) * Sgn((angle - d) * 60)
    m = ((angle - d) * 60 - f) * 60
    RadianToAngle = CDbl(d) + CDbl(f) / 100 + m / 10000
    'RadianToAngle = Sgn(radian) * RadianToAngle
End Function



Private Sub b1_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub Command1_Click()
    If (e_e = 0) Then
        MsgBox ("请选择椭球体的类型")
    Else
        Dim r_d, r_s, r_r, r_n, r_m, r_rf As Double
        r_n = GetN((AngleToRadian(b1) + AngleToRadian(b2)) / 2)
        r_m = GetM((AngleToRadian(b1) + AngleToRadian(b2)) / 2)
        r_r = getr(b1.Text, b2.Text, x1.Text, x2.Text, y1.Text - 500000, y2.Text - 500000, Val(r_n))
        r_h1 = Val(h1.Text) + Val(dh.Text)
        r_h2 = Val(h2.Text) + Val(dh.Text)
        r_dh = r_h2 - r_h1
        r_ss = Val(s.Text)
        tem1 = 1 - r_dh * r_dh / (r_ss * r_ss)
        tem2 = (1 + h1 / r_r) * (1 + h2 / r_r)
        tem = Sqr(tem1 / tem2)
        tem3 = r_ss * r_ss * r_ss / (24 * r_r * r_r)
        r_s = r_ss * tem + tem3
        r_rf = Sqr(r_m * r_n)
        r_d = stod(Val(r_s), y1.Text - 500000, y2.Text - 500000, Val(r_rf))
        final_d.Text = Round(r_d, 4)
    End If
End Sub
Private Function getr(b1 As Double, b2 As Double, x1 As Double, x2 As Double, y1 As Double, y2 As Double, n As Double) As Double
    Dim temp_a, temp_atn, temp_bm As Double
    temp_atn = Atn((y2 - y1) / (x2 - x1))
    temp_bm = (AngleToRadian(b1) + AngleToRadian(b2)) / 2
    temp_a = Cos(b1) * Cos(b1) * Cos(temp_atn) * Cos(temp_atn)
    getr = n / (1 + e_e * temp_a)
End Function



Private Function stod(s As Double, y1 As Double, y2 As Double, r As Double)
    Dim ym, dy As Double
    ym = (y1 + y2) / 2
    dy = y2 - y1
    stod = s * (1 + ym * ym / (2 * r * r) + dy * dy / (24 * r * r) + ym * ym * ym * ym / (24 * r * r * r * r))
End Function
Private Sub dh_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub h1_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub h2_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub Option1_Click()
    a = 6378245
    b_b = 6356863.01877305
    c = 6399698.90178271
    AA = 1 / 298.3
    ee = 0.006693421622966
    e_e = 0.006738525414683
End Sub

Private Sub Option2_Click()
    a = 6378140
    b_b = 6356755.28815753
    c = 6399596.65198801
    AA = 1 / 298.257
    ee = 0.006694384999588
    e_e = 0.006739501819473
End Sub

Private Sub Option3_Click()
    a = 6378137
    b_b = 6356752.3142
    c = 6399593.6258
    AA = 1 / 298.257223563
    ee = 0.0066943799013
    e_e = 0.00673949674227
End Sub



Private Sub check()
    Select Case KeyAscii
      Case Asc("-") '允许负数
            If Text_B1.SelStart = 0 Then
              If Left(Text_B1.Text, 1) = "-" Then
                  KeyAscii = 0
                  Beep
              End If
            Else
              KeyAscii = 0
              Beep
            End If
        Case 8
              '无变化,退格键不屏蔽
        Case Asc(" ") '32
            If Text_B1.SelLength = 0 Then
                KeyAscii = 0
            End If
        Case Asc(".") '46 '允许小数点
            If InStr(Text_B1.Text, ".") Then
                KeyAscii = 0
            End If
        Case Is < Asc(0) '48
              KeyAscii = 0
        Case Is > Asc(9) '57
              KeyAscii = 0
  End Select
End Sub

Private Sub s_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub x1_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub x2_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub y1_KeyPress(KeyAscii As Integer)
    Call check
End Sub

Private Sub y2_KeyPress(KeyAscii As Integer)
    Call check
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -