好像是选择Ellipsoid那步有问题但我刚学看不出来
Imports System.MathPublic Class Form1
Dim EllipName As String
Dim a As Double
Dim b As Double
Dim f As Double
Dim e2 As Double
Dim Lontud As Double
Dim Lattud As Double
Dim Elevat As Double
Dim CoorX As Double
Dim CoorY As Double
Dim CoorZ As Double
Private Sub CEllipsoid()
If RadioButton1.Checked Then
EllipName = RadioButton1.Text
a = 6378137
b = 6356752.31414036
ElseIf RadioButton2.Checked Then
EllipName = RadioButton2.Text
a = 6378137
b = 6356752.31424518
ElseIf RadioButton3.Checked Then
EllipName = RadioButton3.Text
a = 6378140
b = 6356755.2882
ElseIf RadioButton4.Checked Then
EllipName = RadioButton4.Text
a = 6378245
b = 6356863.0187
Else EllipName = "未选择椭球"
End If
End Sub
Shared Function CRad(ByVal DMS As Double) As Double
Dim ValuSign As Integer
Dim DD As Integer
Dim MM As Integer
Dim SS As Single
ValuSign = Sign(DMS)
DMS = ValuSign * DMS
DD = Int(DMS)
MM = Int((DMS - DD) * 100)
SS = ((DMS - DD) * 100 - MM) * 100
Return (DD + MM / 60 + SS / 3600) * PI / 180 * ValuSign
End Function
Private Sub LBH()
Lontud = CRad(Val(TextBox2.Text))
Lattud = CRad(Val(TextBox3.Text))
Elevat = Val(TextBox4.Text)
End Sub
Private Sub CalcuLBHtoXYZ()
Dim W As Double
Dim N As Double
f = (a - b) / a
e2 = (a * a - b * b) / (a ^ 2)
W = Sqrt(1 - e2 * Sin(Lattud) * Sin(Lattud))
N = a / W
CoorX = (N + Elevat) * Cos(Lattud) * Cos(Lontud) CoorY = (N + Elevat) * Cos(Lattud) * Sin(Lontud) CoorZ = (N * (1 - e2) + Elevat) * Sin(Lattud)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Text = vbCrLf & String.Format("Ellipsoid Name : {0}", EllipName) & vbCrLf
TextBox1.Text &= String.Format(" a = {0}", a) & vbCrLf
TextBox1.Text &= String.Format(" b = {0}", b) & vbCrLf & vbCrLf
TextBox1.Text &= String.Format(" f = 1/{0:f9}", 1 / f) & vbCrLf
TextBox1.Text &= String.Format(" e^2 = {0}", e2) & vbCrLf & vbCrLf
TextBox1.Text &= String.Format(" L = {0}", Lontud) & vbCrLf
TextBox1.Text &= String.Format(" B = {0}", Lattud) & vbCrLf
TextBox1.Text &= String.Format(" H = {0} m", Elevat) & vbCrLf & vbCrLf
TextBox1.Text &= String.Format(" X = {0:f3} m", CoorX) & vbCrLf
TextBox1.Text &= String.Format(" Y = {0:f3} m", CoorY) & vbCrLf
TextBox1.Text &= String.Format(" Z = {0:f3} m", CoorZ) & vbCrLf
End Sub
End Class