以下是我使用的内容:GPS(WGS 84)和笛卡尔坐标中的经度是相同的。
所需纬度由WGS 84椭球参数转换为半长轴6378137米,
平坦度倒数为298.257223563。
我附上了一个VB代码我写道:Imports System.Math
'Input GPSLatitude is WGS84 Latitude,h is altitude above the WGS 84 ellipsoid
Public Function GetSphericalLatitude(ByVal GPSLatitude As Double, ByVal h As Double) As Double
Dim A As Double = 6378137 'semi-major axis
Dim f As Double = 1 / 298.257223563 '1/f Reciprocal of flattening
Dim e2 As Double = f * (2 - f)
Dim Rc As Double = A / (Sqrt(1 - e2 * (Sin(GPSLatitude * PI / 180) ^ 2)))
Dim p As Double = (Rc + h) * Cos(GPSLatitude * PI / 180)
Dim z As Double = (Rc * (1 - e2) + h) * Sin(GPSLatitude * PI / 180)
Dim r As Double = Sqrt(p ^ 2 + z ^ 2)
Dim SphericalLatitude As Double = Asin(z / r) * 180 / PI
Return SphericalLatitude
End Function
请注意h是否高度高于WGS 84 ellipsoid.
通常GPS会给我们H以上MSL高度。这个MSL高度必须转换为高度h上WGS 84 ellipsoid通过使用位势模型EGM96 (Lemoine等人,1998年).
这是通过插值一个网格的大地水准面高度文件的空间分辨率为15弧分钟。
或者如果你有某种水平专业人士 GPS有高度H (MSL,高于平均海平面的高度)和UNDULATION之间的关系geoid而ellipsoid (m)被选中的人基准输出从内部桌子。你可以h = H(msl) + undulation
通过笛卡尔坐标到XYZ:x = R * cos(lat) * cos(lon)
y = R * cos(lat) * sin(lon)
z = R *sin(lat)