詳細論述了地心坐标系到站心坐标的轉換原理及其實作。
目錄
1. 概述
2. 原理
2.1. 平移
2.2. 旋轉
2.3. 總結
3. 實作
4. 參考
我在《大地經緯度坐标與地心地固坐标的的轉換》這篇文章中已經論述了地心坐标系的概念。我們知道,基于地心坐标系的坐标都是很大的值,這樣的值是不太友善進行空間計算的,是以很多時候可以選取一個站心點,将這個很大的值變換成一個較小的值。以圖形學的觀點來看,地心坐标可以看作是世界坐标,站心坐标可以看作局部坐标。
站心坐标系以一個站心點為坐标原點,當把坐标系定義為X軸指東、Y軸指北,Z軸指天,就是ENU(東北天)站心坐标系。這樣,從地心地固坐标系轉換成的站心坐标系,就會成為一個符合常人對地理位置認知的局部坐标系。同時,隻要站心點位置選的合理(通常可選取地理表達區域的中心點),表達的地理坐标都會是很小的值,非常便于空間計算。
注意站心天向(法向量)與赤道面相交不一定會經過球心
令選取的站心點為P,其大地經緯度坐标為\((B_p,L_p,H_p)\),對應的地心地固坐标系為\((X_p,Y_p,Z_p)\)。地心地固坐标系簡稱為ECEF,站心坐标系簡稱為ENU。
通過第一節的圖可以看出,ENU要轉換到ECEF,一個很明顯的圖形操作是平移變換,将站心移動到地心。根據站心點P在地心坐标系下的坐标\((X_p,Y_p,Z_p)\),可以很容易推出ENU轉到ECEF的平移矩陣:
\[T =
\begin{bmatrix}
1&0&0&X_p\\
0&1&0&Y_p\\
0&0&1&Z_p\\
0&0&0&1\\
\end{bmatrix}
\]
反推之,ECEF轉換到ENU的平移矩陣就是T的逆矩陣:
\[T^{-1} =
1&0&0&-X_p\\
0&1&0&-Y_p\\
0&0&1&-Z_p\\
另外一個需要進行的圖形變換是旋轉變換,其旋轉變換矩陣根據P點所在的經度L和緯度B确定。這個旋轉變換有點難以了解,需要一定的空間想象能力,但是可以直接給出如下結論:
當從ENU轉換到ECEF時,需要先旋轉再平移,旋轉是先繞X軸旋轉\((\frac{pi}{2}-B)\),再繞Z軸旋轉\((\frac{pi}{2}+L)\)
當從ECEF轉換到ENU時,需要先平移再旋轉,旋轉是先繞Z軸旋轉\(-(\frac{pi}{2}+L)\),再繞X軸旋轉\(-(\frac{pi}{2}-B)\)
根據我在《WebGL簡易教程(五):圖形變換(模型、視圖、投影變換)》提到的旋轉變換,繞X軸旋轉矩陣為:
\[R_x =
1&0&0&0\\
0&cosθ&-sinθ&0\\
0&sinθ&cosθ&0\\
繞Z軸旋轉矩陣為:
\[R_z =
cosθ&-sinθ&0&0\\
sinθ&cosθ&0&0\\
0&0&1&0\\
從ENU轉換到ECEF的旋轉矩陣為:
\[R = {R_z(\frac{pi}{2}+L)}\cdot{R_x(\frac{pi}{2}-B)}
\tag{1}
根據三角函數公式:
\[sin(π/2+α)=cosα\\
sin(π/2-α)=cosα\\
cos(π/2+α)=-sinα\\
cos(π/2-α)=sinα\\
有:
\[R_z(\frac{pi}{2}+L) =
-sinL&-cosL&0&0\\
cosL&-sinL&0&0\\
\tag{2}
\[R_x(\frac{pi}{2}-B) =
0&sinB&-cosB&0\\
0&cosB&sinB&0\\
\tag{3}
将(2)、(3)帶入(1)中,則有:
\[R =
-sinL&-sinBcosL&cosBcosL&0\\
cosL&-sinBsinL&cosBsinL&0\\
\tag{4}
而從ECEF轉換到ENU的旋轉矩陣為:
\[R^{-1} = {R_x(-(\frac{pi}{2}-B))} \cdot {R_z(-(\frac{pi}{2}+L))}
\tag{5}
旋轉矩陣是正交矩陣,根據正交矩陣的性質:正交矩陣的逆矩陣等于其轉置矩陣,那麼可直接得:
\[R^{-1} =
-sinL&cosL&0&0\\
-sinBcosL&-sinBsinL&cosB&0\\
cosBcosL&cosBsinL&sinB&0\\
\tag{6}
将上述公式展開,可得從ENU轉換到ECEF的圖形變換矩陣為:
\[M = T \cdot R =
而從ECEF轉換到ENU的圖形變換矩陣為:
\[M^{-1} = R^{-1} * T^{-1} =
接下來用代碼實作這個坐标轉換,選取一個站心點,以這個站心點為原點,擷取某個點在這個站心坐标系下的坐标:
這個示例先用Eigen矩陣庫,計算了坐标轉換需要的矩陣和轉換結果;然後通過osgEarth進行了驗證,兩者的結果基本一緻。運作結果如下:
站心坐标系和WGS-84地心地固坐标系互相轉換矩陣
Transformations between ECEF and ENU coordinates
GPS經緯度坐标WGS84到東北天坐标系ENU的轉換
三維旋轉矩陣;東北天坐标系(ENU);地心地固坐标系(ECEF);大地坐标系(Geodetic);經緯度對應圓弧距離