求 大地坐标与经纬度转换vb源代码~~

现在我有一些经纬度的坐标,需要转换成大地坐标,还请vb大虾们帮帮忙,我自己找了一点代码,但是看不懂,如果能帮我改出来也不胜感激!

Public Function Distance(lon1 As Double, lat1 As Double, lon2 As Double, lat2 As Double) As Double

Dim a_2d As Double
Dim e_2d As Double
Dim h_2d As Integer
Dim DEG_2_RAD As Double
Dim RAD_2_DEG As Double

Dim x_rads As Double
Dim y_rads As Double
Dim n_2ds As Double
Dim x_2d As Double
Dim y_2d As Double
Dim z_2d As Double
Dim x_radm As Double
Dim y_radm As Double
Dim n_2dm As Double
Dim x_2d_mark As Double
Dim y_2d_mark As Double
Dim z_2d_mark As Double
Dim curdistance As Double

a_2d = 6378137
e_2d = 0.00669438
h_2d = 15
DEG_2_RAD = 0.01745329252
RAD_2_DEG = 57.2957795129

x_rads = Abs(lon1) * DEG_2_RAD
y_rads = Abs(lat1) * DEG_2_RAD

n_2ds = a_2d / Sqr(1 - e_2d * Sin(y_rads) * Sin(y_rads))

x_2d = (n_2ds + h_2d) * Cos(y_rads) * Cos(x_rads)
y_2d = (n_2ds + h_2d) * Cos(y_rads) * Sin(x_rads)
z_2d = (n_2ds * (1 - e_2d) + h_2d) * Sin(y_rads)

x_radm = Abs(lon2) * DEG_2_RAD
y_radm = Abs(lat2) * DEG_2_RAD

n_2dm = a_2d / Sqr(1 - e_2d * Sin(y_radm) * Sin(y_radm))

x_2d_mark = (n_2dm + h_2d) * Cos(y_radm) * Cos(x_radm)
y_2d_mark = (n_2dm + h_2d) * Cos(y_radm) * Sin(x_radm)
z_2d_mark = (n_2dm * (1 - e_2d) + h_2d) * Sin(y_radm)

curdistance = (x_2d_mark - x_2d) * (x_2d_mark - x_2d) + (y_2d_mark - y_2d) * (y_2d_mark - y_2d) + (z_2d_mark - z_2d) * (z_2d_mark - z_2d)
curdistance = Sqr(curdistance)

Distance = curdistance
End Function

自己搜索一下算法吧,一般人都不了解这一块的,解决不了这么专业的问题

http://blog.163.com/wangyong_yl/blog/static/561490202007101211582948/

E文好就看这里

http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-01
太专业了~~大地坐标与经纬度转换的算法是什么?