高斯投影坐标正反算 Dim bf#, j%, Wf#, Vf#, Nf#, Mf#, c#, tf#, etaf#, dh%, ik% x = Val(Text7.Text) y_ = Val(Text8.Text) e = Sqr((a * a - b * b) / (a * a)) m0 = a * (1 - e * e) m2 = e * e * m0 * 3 / 2 m4 = e * e * m2 * 5 / 4 m6 = m4 * e * e * 7 / 6 m8 = e * e * m6 * 9 / 8
a0 = m0 + m2 / 2 + m4 * 3 / 8 + m6 * 5 / 16 + m8 * 35 / 128 a2 = m2 / 2 + m4 / 2 + m6 * 15 / 32 + m8 * 7 / 16 a4 = m4 / 8 + m6 * 3 / 16 + m8 * 7 / 32 a6 = m6 / 32 + m8 / 16 a8 = m8 / 128 bf = x / a0 For j = 1 To 10
bf = (x + a2 / 2 * Sin(2 * bf) - a4 * Sin(4 * bf) / 4 + a6 * Sin(6 * bf) / 6 - a8 * Sin(8 * bf) / 8) / a0 Next j
e1 = Sqr(a * a - b * b) / b
Vf = Sqr(1 + e1 * e1 * Cos(bf) * Cos(bf)) Wf = Sqr(1 - e * e * Sin(bf) * Sin(bf))
- 6 -
高斯投影坐标正反算 Nf = a / Wf c = a * a / b Mf = c / Vf ^ 3 tf = Tan(bf)
e1 = Sqr((a * a - b * b) / (b * b)) etaf = Sqr(e1 * e1 * Cos(bf) * Cos(bf)) ik = Int(y_ / 1000000) y = y_ - ik * 1000000 - 500000
b_ = bf - tf * y * y / (2 * Mf * Nf) + tf * (5 + 3 * tf * tf + etaf * etaf - 9 * etaf * etaf * tf * tf) * y * y * y * y / (24 * Mf * Nf * Nf * Nf) + tf * (61 + 90 * tf * tf + 45 * tf * tf * tf * tf) * y * y * y * y * y * y / (720 * Mf * Nf * Nf * Nf * Nf * Nf)
l = y / (Nf * Cos(bf)) - (1 + 2 * tf * tf + etaf * etaf) * y * y * y / (6 * Nf * Nf * Nf * Cos(bf)) + (5 + 28 * tf * tf + 24 * tf * tf * tf * tf + 6 * etaf * etaf + 8 * etaf * etaf * tf * tf) * y * y * y * y * y / (120 * Nf * Nf * Nf * Nf * Nf * Cos(bf)) dh = Val(Text9.Text) If dh = 6 Then l0 = 6 * ik - 3 Else
If dh = 3 Then l0 = 3 * ik
- 7 -
高斯投影坐标正反算 Else
MsgBox \End If End If
l_ = l0 * 3.14159 / 180 + l sec1 = l_ * 206265 deg1 = Int(sec1 / 3600)
min1 = Int((sec1 - deg1 * 3600) / 60) sec1 = sec1 - deg1 * 3600 - min1 * 60 sec2 = b_ * 206265 deg2 = Int(sec2 / 3600)
min2 = Int((sec2 - deg2 * 3600) / 60) sec2 = sec2 - deg2 * 3600 - min2 * 60 Text1 = deg1 Text2 = min1
Text3 = Round(sec1, 5) Text4 = deg2 Text5 = min2
Text6 = Round(sec2, 5) End Sub
Private Sub Command3_Click()
- 8 -
高斯投影坐标正反算 End End Sub
Private Sub Command4_Click() Text1.Text = \Text2.Text = \Text3.Text = \Text4.Text = \Text5.Text = \Text6.Text = \Text7.Text = \Text8.Text = \Text9.Text = \Text10.Text = \End Sub
Private Sub Option1_Click() a = 6378245
b = 6356863.01877305 End Sub
Private Sub Option2_Click()
- 9 -
高斯投影坐标正反算 a = 6378140
b = 6356755.28815753 End Sub
Private Sub Option3_Click() a = 6378137 b = 6356752.3142 End Sub
Private Sub Option4_Click() a = 6378137 b = 6356752.3141 End Sub
Private Sub Option5_Click() a = Val(InputBox(\b = Val(InputBox(\End Sub
- 10 -