• 大地坐标系(WGS-84)、地心地固坐标系(ECEF)与东北天坐标系(ENU)的相互转换C语言代码分享
千次阅读
2020-12-19 12:53:41

//ECEF ---> WGS84

//pcg为WGS-84坐标系结构体指针，pcc为ECEF坐标系结构体指针

void ECEFToWGS(PWGS pcg, PECEF pcc)

{

double B0, R, N;

double B_, L_;

double X = pcc->x;

double Y = pcc->y;

double Z = pcc->z;

R = sqrt(X * X + Y * Y);

B0 = atan2(Z, R);

while (1)

{

N = dSemiMajorAxis / sqrt(1.0 - e2 * sin(B0) * sin(B0));

B_ = atan2(Z + N * e2 * sin(B0), R);

if (fabs(B_ - B0) < 1.0e-10)

break;

B0 = B_;

}

L_ = atan2(Y, X);

pcg->height = R / cos(B_) - N;

//弧度转换成经纬度

pcg->latitude = B_ * 180 / M_PI;

pcg->longitude = L_ * 180 / M_PI;

}

//ECEF ---> ENU

//pcc为ECEF坐标系结构体指针，center为东北天坐标原点的指针，pct为东北天坐标系结构体指针

//坐标原点center要用GPS采到的第一个点的数据

void ECEFToENU(PECEF pcc, PWGS center, PENU pct)

{

double dX, dY, dZ;

PECEF Geodetic;

Geodetic = (PECEF)malloc(sizeof(ECEF));

WGSToECEF(center, Geodetic);

dX = pcc->x - Geodetic->x;

dY = pcc->y - Geodetic->y;

dZ = pcc->z - Geodetic->z;

double B, L, H;

B = center->latitude;

L = center->longitude;

H = center->height;

pct->easting = -sin(L) * dX + cos(L) * dY; //X轴

pct->northing = -sin(B) * cos(L) * dX - sin(B) * sin(L) *

dY + cos(B) * dZ; //Y轴

pct->upping = cos(B) * cos(L) * dX + cos(B) * sin(L) * dY +

sin(B) * dZ; //Z轴

free(Geodetic);

}

//ENU ---> ECEF

//pcc为ECEF坐标系结构体指针，center为东北天坐标原点的指针，pct为东北天坐标系结构体指针

//坐标原点center要用GPS采到的第一个点的数据

void ENUToECEF(PECEF pcc, PWGS center, PENU pct)

{

PECEF Geodetic;

Geodetic = (PECEF)malloc(sizeof(ECEF));

WGSToECEF(center, Geodetic);

double B, L, H;

B = center->latitude;

L = center->longitude;

H = center->height;

pcc->x = -sin(B) * cos(L) * pct->northing - sin(L) *

pct->easting + cos(B) * cos(L) * pct->upping +

Geodetic->x;

pcc->y = -sin(B) * sin(L) * pct->northing + cos(L) *

pct->easting + cos(B) * sin(L) * pct->upping +

Geodetic->y;

pcc->z = cos(B) * pct->northing + sin(B) *

pct->upping + Geodetic->z;

free(Geodetic);

}

更多相关内容
• 基本概念1.1欧拉角1.2左乘右乘1.3东北天坐标系1.4载体坐标系1.5捷联惯性导航系统2. 通过ECEF转换到参考点附近的ENU坐标系上3. 东北天坐标系到载体坐标系 1. 基本概念 1.1欧拉角 欧拉旋转定理指出：任何一个旋转都...

### 1. 基本概念

#### 1.1欧拉角

欧拉旋转定理指出：任何一个旋转都可以用三个旋转的参数来表示。

1. 三个旋转角的组合方式（是xyz还是yzx还是zxy）

为了方便，我们用x指代只绕x轴的旋转，用y指代只绕y轴进行的旋转。在描述欧拉角的时候可以有以下方式：xyz， yzx，zxy 或者是反向顺序 zyx xzy yxz，共六种。

1. 旋转角度的参考坐标系统（旋转是相对于固定的坐标系还是相对于自身的坐标系）

在描述这3个旋转角的时候，可以是相对于某个固定的坐标系统（称为extrinsic rotations），也可以是相对于物体自身的坐标系统（称为intrinsic rotations）

1. 使用旋转角度是左手系还是右手系

旋转角度是正还是负，如果是右手系，那么符合右手定则决定正负，左手系则符合左手定则决定正负。

1. 三个旋转角的记法

图 旋转的记法

#### 1.2左乘右乘

左乘还是右乘

左乘——相对于固定坐标系进行变换，（固定坐标系—我们上面提到的固定x轴旋转……，这里的固定，其实我们已经暗暗地定义了一个坐标系，这个坐标系我们潜意识认为它是不变的，这也就是世界坐标系。除了平时我们假设了固定坐标系就是我们认识的世界坐标系，其他情况是我们需要将坐标系1变换到坐标系2，这时，我们的坐标系2可以设为该固定坐标系）

V’ = R * V = Rz * Ry * Rx V，变换顺序是先绕x转，再绕y转，最后绕z转。
右乘——相对于自身坐标系进行变换，每变一次下一次需要以新坐标系为标准进行变换。比如第一次变换后，原x轴的位置变为y轴，那么下一次绕y轴的变换，就会绕之前的x轴变换。

参考 https://blog.csdn.net/silence1214/article/details/8634664

#### 1.3东北天坐标系

1. 姿态角范围

(1) 俯仰角(-90 ~ 90deg)；
(2) 横滚角(-180 ~ 180deg)；
(3) 航向角(-180 ~ 180deg，可转换为0~360deg)；

2. 轴向

X轴向东：绕此轴旋转决定俯仰角；
Y轴向北：绕此轴旋转决定横滚角；
Z轴向上：绕此轴旋转决定航向角。

#### 1.4载体坐标系

右手坐标系（正负符合右手定则）：

  X轴向右：绕此轴旋转决定俯仰角；
Y轴向前，速度的方向：绕此轴旋转决定横滚角；
Z轴向上：绕此轴旋转决定航向角。


#### 1.5捷联惯性导航系统

将惯性测量器件直接固连在载体上，再将其输出通过数学平台（又称捷联矩阵之转换到导航坐标系的参量），进行导航解算。系统的惯性测量器件为角速率陀螺仪和加速度计，它们固连在载体上，测得的都是载体坐标系下的物理量。

### 2. 通过ECEF转换到参考点附近的ENU坐标系上

推导过程参考：导航中坐标系及坐标转换

使用ECEF坐标系下求解三维度距离，并在参考点附近进行转换

• 1.参考点P=[lat,lon,height],经纬度

图转换过程

### 3. 东北天坐标系到载体坐标系

• 使用右手定则确定正负
• 转换使用右乘矩阵（矩阵左乘）的方式，即旋转时是绕载体自己的轴进行旋转，动态
• 旋转顺序为 Z -> X -> Y ，第一次绕 Z 轴旋转，称为航向角 Yaw，第二次 X 绕 轴旋转，称为俯仰角 Pitch，
第三次绕 Y 轴旋转，称为翻滚角 Roll

各轴正向的旋转矩阵，如下图所示：

图 旋转矩阵

因为偏航角的正方向与定义的方向相反，故矩阵有所变化，指导过程如下，以下为手写计算图：

图推导过程

展开全文
• GPS坐标WGS84到东北天坐标系ENU简述一、从WGS-84坐标系到ECEF坐标系1.先将经纬度坐标转为弧度坐标2.转ECEF坐标二、 通过ECEF转换到参考点附近的ENU坐标系上1.在参考点P2=[lat,lon,height]P_2=[lat,lon,height]P2​=...

# 简述

由于东北天坐标系是站心系，随着坐标原点，相对坐标在变化，因此需要确定站心的参考坐标值，即想要转换WGS-84坐标系 P 1 P_1 到东北天坐标系时，需要给出东北天坐标系坐标原点所在的位置的WGS-84坐标值 P 2 P_2 .
基本思路是首先将2个WGS84坐标系转换到地心地固坐标系ECEF中，计算两个参考坐标之间的差，而后在指定的参考点附近进行展开。

## 一、从WGS-84坐标系到ECEF坐标系

### 2.转ECEF坐标

WGS坐标为 P = [ l a t , l o n , h e i g h t ] P=[lat,lon,height] ,ECEF坐标为 E = [ x , y , z ] E=[x,y,z]

x = a ∗ c o s ( l o n ） 1 + ( 1 − e 2 ) ∗ ( t a n ( l a t ) ) 2 + h e i g h t ∗ c o s ( l o n ) ∗ c o s ( l a t ) x=\frac{a*cos(lon）}{\sqrt{1+(1-e^2)*(tan(lat))^2}} +height*cos(lon)*cos(lat)
y = a ∗ s i n ( l o n ） 1 + ( 1 − e 2 ) ∗ ( t a n ( l a t ) ) 2 + h e i g h t ∗ s i n ( l o n ) ∗ s i n ( l a t ) y=\frac{a*sin(lon）}{\sqrt{1+(1-e^2)*(tan(lat))^2}} +height*sin(lon)*sin(lat)
z = a ∗ ( 1 − e 2 ) ∗ s i n ( l a t ） 1 − e 2 ∗ ( s i n ( l a t ) ) 2 + h e i g h t ∗ s i n ( l a t ) z=\frac{a*(1-e^2)*sin(lat）}{\sqrt{1-e^2*(sin(lat))^2}} +height*sin(lat)

经过此步骤后获得地心地固坐标系下的坐标 E 1 , E 2 E_1,E_2

#  ENU坐标系转换至WGS84坐标系，输入ENU坐标x,y,z和参考点经纬高，输出WGS84坐标
def enu2llh( enu,  orgllh):
for item in range(2):
orgllh[item]=orgllh[item]*PI/180

xyz=enu2xyz(enu, orgllh)
result=xyz2llh(xyz)

for item in range(2):
result[item]=result[item]*180/PI
return result

#  WGS84坐标系转换至ECEF坐标系，输入经纬高，输出ECEF坐标x,y,z

def llh2xyz(llh):

lat = llh[0]
lon = llh[1]
height = llh[2]

slat = np.sin(lat)
clat = np.cos(lat)
slon = np.sin(lon)
clon = np.cos(lon)

t2lat = (np.tan(lat))*(np.tan(lat))
tmp = 1 - e * e
tmpden = np.sqrt(1 + tmp * t2lat)
tmp2 = np.sqrt(1 - e * e*slat*slat)

x = (a*clon) / tmpden + height * clon*clat
y = (a*slon) / tmpden + height * slon*slat
z = (a*tmp*slat) / tmp2 + height * slat
return [x,y,z]


## 二、 通过ECEF转换到参考点附近的ENU坐标系上

使用ECEF坐标系下求解三维度距离，并在参考点附近进行转换

### 1.在参考点 P 2 = [ l a t , l o n , h e i g h t ] P_2=[lat,lon,height] 附近的旋转矩阵 R R

R = [ − s i n ( l o n ) , c o s ( l o n ) , 0 − s i n ( l a t ) ∗ c o s ( l o n ) , − s i n ( l a t ) ∗ s i n ( l o n ) , c o s ( l a t ) c o ( l a t ) ∗ c o s ( l o n ) , c o s ( l a t ) s i n ( l o n ) , s i n ( l a t ) ] R=\begin{bmatrix} &-sin(lon) ,& cos(lon),&0 & \\ &-sin(lat)*cos(lon) ,&-sin(lat)*sin(lon) ,&cos(lat) & \\ & co(lat)*cos(lon) ,&cos(lat)sin(lon), &sin(lat) & \end{bmatrix}

### 2.旋转到ENU上得到坐标 N = [ E , N , U ] N=[E ,N ,U]

N = [ E N U ] = R ∗ Δ x = R ∗ [ x 1 − x 2 y 1 − y 2 z 1 − z 2 ] N=\begin{bmatrix} &E &\\ &N&\\ &U & \end{bmatrix}=R* \Delta x=R*\begin{bmatrix} &x_1-x_2 &\\ &y_1-y_2 &\\ &z_1-z_2 & \end{bmatrix}

#  ECEF坐标系转换至ENU坐标系，输入ECEF坐标x,y,z和参考点经纬高，输出ENU坐标
def xyz2enu( xyz,  orgllh):

lat = orgllh[0]
lon = orgllh[1]
height = orgllh[2]

slat = np.sin(lat)
clat = np.cos(lat)
slon = np.sin(lon)
clon = np.cos(lon)

tmpxyz=[0,0,0]
orgxyz=[0,0,0]
tmporg=[0,0,0]
difxyz= [0,0,0]
enu=[0,0,0]

orgxyz=llh2xyz(orgllh)

for i in range(3):
tmpxyz[i] = xyz[i]
tmporg[i] = orgxyz[i]
difxyz[i] = tmpxyz[i] - tmporg[i]

R_list = [[-slon,clon,0] , [-slat * clon,-slat * slon,clat ], [clat*clon,clat*slon,slat ] ]

for i in range(3):
enu[0] = enu[0] + R_list[0][i] * difxyz[i]
enu[1] = enu[1] + R_list[1][i] * difxyz[i]
enu[2] = enu[2] + R_list[2][i] * difxyz[i]
return enu

展开全文
• GPS经纬度坐标WGS84到东北天坐标系ENU的转换常用坐标系介绍地理坐标系 (Geographic Coordinate System, GCS)地心地固坐标系 (ECEF)当地东、北、上 (ENU) 坐标基坐标相互转化地理坐标系到地心地固坐标系 (GCS to ECEF...

# 常用坐标系介绍

## 地理坐标系 (Geographic Coordinate System, GCS)

可以说是最为广泛应用的一个地球坐标系，它给出一点的大地纬度、大地经度和大地高程而更加直观地告诉我们该点在地球中的位置，故又被称作纬经高坐标系。WGS-84坐标系的X轴指向BIH(国际时间服务机构)1984.0定义的零子午面(Greenwich)和协议地球极(CTP)赤道的交点。Z轴指向CTP方向。Y轴与X、Z轴构成右手坐标系。

一句话解释就是：把前面提到的ECEF坐标系用在GPS中，就是WGS-84坐标系。

其中：
（1）：大地纬度是过用户点P的基准椭球面法线与赤道面的夹角。纬度值在-90°到+90°之间。北半球为正，南半球为负。
（2）：大地经度是过用户点P的子午面与本初子午线之间的夹角。经度值在-180°到+180°之间。
（3）：大地高度h是过用户点P到基准椭球面的法线距离，基准椭球面以内为负，以外为正。

参考资料:地理信息系统中常用坐标系

## 地心地固坐标系 (ECEF)

在GPS中使用的被称为地球中心，地球固定(ECEF)。ECEF使用三维XYZ坐标(以米为单位)来描述GPS用户或卫星。“地球”这个词来自于坐标轴的原点(0,0,0)位于质心处(通过多年的跟踪卫星确定轨迹)。“地球固定”这个词意味着坐标轴相对于地球是固定的(也就是说，它们随地球旋转)。其 x 轴延伸通过本初子午线（经度 0 度）和赤道（0度纬度）。z 轴延伸穿过真正的北极（即与地球自转轴重合）。y 轴完成右手坐标系，穿过赤道和 90 度经度，如图 1所示

图1 ECEF直角坐标系

## 当地东、北、上 (ENU) 坐标

站心坐标系也叫东北天坐标系 ENU，用于表示以观察者为中心的其他物体
的运动规律。以站心为坐标系原点，z 轴与椭球法线重合，向上为正，y 与椭球
短半轴重合（北向），x 轴与椭球长半轴重合（东向）

# 基坐标相互转化

## 地理坐标系到地心地固坐标系 (GCS to ECEF)

这里因为地球近似为一个椭球,所以沿着椭球表面的法线方向不在 O e O_{e} M M 的连线方向,首先我们假设它的椭球表面的法线方向的反向延长线交 Z Z 轴与于点 M ′ M{'} ,设 ∣ P Q ∣ = N , ∣ P M ∣ = h |PQ|= N,|PM| = h , 在 X E C E F − E C E F − E C E F 在X_{ECEF}-_{ECEF}-_{ECEF} 基坐标系下,根据几何关系,M的坐标为
( ( N + h ) cos ⁡ ( φ ) cos ⁡ ( λ ) , ( N + h ) cos ⁡ ( φ ) sin ⁡ ( λ ) , ( N + h ) sin ⁡ ( φ ) ) − O Q ) \left((N+h)\cos \left(\varphi\right) \cos (\lambda), (N+h) \cos \left(\varphi\right) \sin (\lambda), (N+h) \sin \left(\varphi\right)\right)-OQ)

然后我们将 M M 点所在的子午圈椭圆投影到一个二维的平面上,如下图所示,(gps的高度h不是与地心在一条直线上)

首先设p点所在的子午圈的方程设为
x 2 R e 2 + z 2 R p 2 = 1 ① \tag*{①}\frac{x^{2}}{R_{e}^{2}}+\frac{z^{2}}{R_{p}^{2}}=1 椭圆的扁率定义为
f = R e − R p R e f=\frac{R_{e}-R_{p}}{R_{e}} 椭圆的离心率定义为
e = R e 2 − R p 2 R e ② e=\tag*{②}\frac{\sqrt{R_{e}^{2}-R_{p}^{2}}}{R_{e}} 由②式可得   R p = R e 1 − e 2   ③ \tag*{③}\ R_{p}=Re \sqrt{1-e^{2}}\,
将椭圆方程①两边同时对 x   x\, 求导,并结合③式,可得 2 x R e 2 + 2 z   d z / d x R e 2 ( 1 − e 2 ) = 0 \frac{2 x}{R_{e}^{2}}+\frac{2 z \mathrm{~d} z / \mathrm{d} x}{R_{e}^{2}\left(1-e^{2}\right)}=0 移项整理得 d z   d x = − ( 1 − e 2 ) x z \frac{\mathrm{d} z}{\mathrm{~d} x}=-\left(1-e^{2}\right) \frac{x}{z} 式中 d z   d x \frac{\mathrm{d} z}{\mathrm{~d} x} 表示椭圆在P点的切线的斜率,显然切线PE ⊥   \bot \, 法线PQ,所以 K P E K P Q = − 1   K_{PE} K_{PQ}=-1\, ,因为 P Q PQ 的斜率为 tan ⁡ φ   \tan \varphi \, ,则
d z   d x tan ⁡ φ = − ( 1 − e 2 ) x z tan ⁡ φ = − 1   \frac{\mathrm{d} z}{\mathrm{~d} x} \tan \varphi =-\left(1-e^{2}\right) \frac{x}{z} \tan \varphi =-1\,
整理可得 z = x ( 1 − e 2 ) tan ⁡ φ ④ \tag*{④}z=x\left(1-e^{2}\right) \tan \varphi
结合③④带入椭圆方程①中,可得到以地理纬度 φ   \varphi \, 的椭圆的参数方程 x = R e 1 − e 2 sin ⁡ 2 φ cos ⁡ φ z = R e ( 1 − e 2 ) 1 − e 2 sin ⁡ 2 φ sin ⁡ φ } ⑤ \tag*{⑤}\left.\begin{array}{l} x=\frac{R_{e}}{\sqrt{1-e^{2} \sin ^{2} \varphi}} \cos \varphi \\ z=\frac{R_{e}\left(1-e^{2}\right)}{\sqrt{1-e^{2} \sin ^{2} \varphi}} \sin \varphi \end{array}\right\}
根据子午圈投影的图可得 x = N c o s φ ⑥ \tag*{⑥} x =N cos \varphi 将⑤中的 x   x\, 带入⑥式中 N = R e 1 − e 2 sin ⁡ 2 φ N =\frac{R_{e}}{\sqrt{1-e^{2} \sin ^{2} \varphi}}
因此参数方程可以简写为 x = N cos ⁡ φ z = N ( 1 − e 2 ) sin ⁡ φ } ⑥ \tag*{⑥}\left.\begin{array}{l} x=N\cos \varphi \\ z=N\left(1-e^{2}\right) \sin \varphi \end{array}\right\}
通过上面的椭圆参数方程⑥,结合投影到 2 D 平 面 上 的 Z 轴 与 E C E F 的 Z 轴 2D平面上的Z轴与ECEF的Z轴 是同一个可得 M M 点的坐标系 z M = N ( 1 − e 2 ) sin ⁡ φ + h s i n φ = ( z_{M}=N\left(1-e^{2}\right) \sin \varphi + hsin \varphi =( ,结合之前所说的{ECEF坐标系下 P P 的坐标系为 ( ( N + h ) cos ⁡ ( φ ) cos ⁡ ( λ ) , ( N + h ) cos ⁡ ( φ ) sin ⁡ ( λ ) , ( N + h ) sin ⁡ ( φ ) ) − O Q ) \left((N+h)\cos \left(\varphi\right) \cos (\lambda), (N+h) \cos \left(\varphi\right) \sin (\lambda), (N+h) \sin \left(\varphi\right)\right)-OQ)
可以得出
x M = ( N + h ) c o s ( φ ) c o s ( λ ) x_{M} = (N+h)cos(φ)cos(λ)
y M = ( N + h ) c o s ( φ ) s i n ( λ ) y_{M} = (N+h)cos(φ)sin(λ)
z M = ( b 2 a 2 N + h ) sin ⁡ φ z_{M} =\left(\frac{b^{2}}{a^{2}} N+h\right) \sin \varphi

附上各参数的含义
φ = l a t i t u d e \varphi = latitude
λ = l o n g i t u d e \lambda = longitude
h = h e i g h t a b o v e e l l i p s o i d ( m e t e r s ) h = height above ellipsoid (meters)
N = R a d i u s o f C u r v a t u r e ( m e t e r s ) , d e f i n e d a s : a 1 − e 2 sin ⁡ 2 φ N = Radius of Curvature (meters), defined as:\frac{a}{\sqrt{1-e^{2} \sin ^{2} \varphi}} ,这里的a就是我们上面推导公式的 R e R_{e} ,详细的参考 ⑥ ⑥ 下面的推导.

WGS84 Parameters
a = 6378137 a = 6378137 (椭圆的长半轴)这里表示赤道椭圆的长半轴
b = a ( 1 − f ) = 6356752.31424518 b = a (1 -f ) = 6356752.31424518
f = 1 298.257223563   f =\frac{1}{298.257223563}\,
e = a 2 − b 2 a 2 e=\frac{\sqrt{a^{2}-b^{2}}}{a^{2}} 详细含义参照②

我们把 M M 点放大,来说说gps的高度

高度 h   , h \,, gps , 的 的 altitude,(从上面图中可知gps的测量高度是GPS天线与参考椭球面的垂直距离,WGS84椭球面在世界范围内近似大地水准面),地球的长半轴 a a 与短半轴 b b 是已知的,然后地理纬度 φ   \varphi \, 也是已知的,所以M点在 E C E F ECEF 坐标系下已知.

## 地心地固坐标系到东北天、站心坐标系 ECEF to ENU

这里采用几何意义的方式来讲这个转化关系,这里为了直观,我们在p点画ENU坐标系
因为 E a s t ( x L o c a l ) East(x Local) 的方向与M点所在的子午线(P点子午线)垂直,所以我们首先把绕着 Z E C E F Z_{ECEF} 旋转至 X E C E F X_{ECEF} E a s t ( x L o c a l ) East(x Local) 的方向一致① E C E F 坐 标 系 ECEF坐标系 绕着 Z E C E F Z_{ECEF} 逆时针旋转 ( π 2 + λ ) (\frac{π}{2} + \lambda) ,然后绕着 X E C E F X_{ECEF} 旋转至 Z E C E F Z_{ECEF} U p ( Z L o c a l ) Up(Z Local) 方向一致②绕着 X E C E F X_{ECEF} 逆时针旋转 ( π 2 − φ ) (\frac{π}{2} - \varphi) ③平移的部分就是之前LLA转到ECEF坐标系下的 M M 的坐标
R z e c e f [ ( π 2 + λ ) ] = ( cos ⁡ [ ( π 2 + λ ) ] sin ⁡ [ ( π 2 + λ ) ] 0 − sin ⁡ [ ( π 2 + λ ) ] cos ⁡ [ ( π 2 + λ ) ] 0 0 0 1 ) R_{z_{ecef}}[(\frac{π}{2} + \lambda)]=\left(\begin{array}{ccc}\cos [(\frac{π}{2} + \lambda)] & \sin [(\frac{π}{2} + \lambda)] & 0 \\ -\sin [(\frac{π}{2} + \lambda)] & \cos [(\frac{π}{2} + \lambda)] & 0 \\ 0 & 0 & 1 \end{array}\right)

R x e c e f [ ( π 2 − φ ) ] = [ 1 0 0 0 cos ⁡ [ ( π 2 − φ ) ] sin ⁡ [ ( π 2 − φ ) ] 0 − sin ⁡ [ ( π 2 − φ ) ] cos ⁡ [ ( π 2 − φ ) ] ] R_{x_{ecef}}[(\frac{π}{2} - \varphi)]=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos [(\frac{π}{2} - \varphi)] & \sin [(\frac{π}{2} - \varphi)] \\ 0 & -\sin [(\frac{π}{2} - \varphi)] & \cos [(\frac{π}{2} - \varphi)] \end{array}\right]

R x e c e f [ ( π 2 − φ ) ]   R z e c e f [ ( π 2 + λ ) ] = ( − sin ⁡ λ cos ⁡ λ 0 − cos ⁡ λ sin ⁡ φ − sin ⁡ λ sin ⁡ φ cos ⁡ φ cos ⁡ λ cos ⁡ φ sin ⁡ λ cos ⁡ φ sin ⁡ φ ) R_{x_{ecef}}[(\frac{π}{2} - \varphi)] \, R_{z_{ecef}}[(\frac{π}{2} + \lambda)] = \left(\begin{array}{ccc} -\sin \lambda & \cos \lambda & 0 \\ -\cos \lambda \sin \varphi & -\sin \lambda \sin \varphi & \cos \varphi \\ \cos \lambda \cos \varphi & \sin \lambda \cos \varphi & \sin \varphi \end{array}\right)

在车辆运动中,我们一般车辆启动假设gps天线的初始位置在 { X r , Y r , Z r } \left\{X_{r}, Y_{r}, Z_{r}\right\} ,车辆运动的位置为 { X p , Y p , Z p } \left\{X_{p}, Y_{p}, Z_{p}\right\} ,则基于启动为原点的ENU的坐标为:
[ x y z ] = [ − sin ⁡ λ cos ⁡ λ 0 − cos ⁡ λ sin ⁡ φ − sin ⁡ λ sin ⁡ φ cos ⁡ φ cos ⁡ λ cos ⁡ φ sin ⁡ λ cos ⁡ φ sin ⁡ φ ] [ X p − X r Y p − Y r Z p − Z r ] \left[\begin{array}{l} x \\ y \\ z \end{array}\right]=\left[\begin{array}{ccc} -\sin \lambda & \cos \lambda & 0 \\ -\cos \lambda \sin \varphi & -\sin \lambda \sin \varphi & \cos \varphi \\ \cos \lambda \cos \varphi & \sin \lambda \cos \varphi & \sin \varphi \end{array}\right]\left[\begin{array}{c} X_{p}-X_{r} \\ Y_{p}-Y_{r} \\ Z_{p}-Z_{r} \end{array}\right]
这里讲的也很好

## 地理坐标系到东北天、站心坐标系(GCS to ENU)

GCS和ENU之间的坐标系转换通过先转换为ECEF实现。
代码有时间再放上来吧

展开全文
• 本Matlab代码提供了地理坐标丰富的转换功能：涵盖了经纬度坐标东北天坐标；经纬度坐标转地心直角坐标；地心直角坐标东北天；地心直角坐标转经纬度的功能；代码简洁易懂，高效
• 基本思路：首先把经纬高（大地坐标系、lla、llh）转到直角坐标系（地心地固直角坐标系（ECEF）、xyz）,然后再转为局部坐标系下（东北天坐标系、以第一点作为东北天坐标系的原点） 比较好的博客： ...
• 旋转矩阵 Givens rotation 逆时针 [c−ssc]\begin{bmatrix}c &-s\\s &c\end{bmatrix}[cs​−sc​] Jacobi rotation 顺时针 [cs−sc]\begin{bmatrix}c &...右乘： 点不动，坐标系动，则
• 坐标系转换
• matlab编写的两个代码，是两个坐标系之间的相互转换，是自己写的，和网上其他代码相比更为精简，容易理解
• 导航坐标系常用的导航坐标系有北东地和东北天两种。两种坐标系的指向分别定义如下：1.1 北东地坐标系X轴：指北;Y轴：指东;Z轴：指地。1. 2 东北天坐标系X轴：指东;Y轴：指北;Z轴：指。2. 载体坐标系与导航坐标系...
• Cesium 中常用的坐标是以椭球中心为原点的地心地固坐标系，在地学问题中，我们常常使用的坐标系为三个坐标轴分别指向东方、北方、地表垂直向上方向的东北天坐标系。本文介绍了如何将二者进行相互转换。 Cesium中有个...
• 对需要用到大地坐标系、地心直角坐标系、站心坐标系、机体坐标系转换的，该文档能极大的答疑解惑，并有不同坐标系的转换方法
• 各种坐标体系之间如何转换？到底有哪些坐标体系？...互联网地图的坐标系现状地球坐标 (WGS84)国际标准，从 GPS 设备中取出的数据的坐标系国际地图提供商使用的坐标系火星坐标 (GCJ-02)也叫国测局坐标系中国标准，从...
• 参考资料： ... ECEF坐标系和ENU坐标系之间的关系如上图所示...ENU坐标：东北天坐标系下的坐标，该坐标系的原点需要指定，原点向东为x轴，原点向北为y轴，原点指向天为z轴，构成右手直角坐标系，该系下的坐标表示都是米制
• 地心地固坐标系ECEF 笛卡尔坐标(x,y,z) 三个垂直的坐标轴 ...地心地固坐标系的特点是：对于整个地球来说ECEF是一个全局参考坐标系，所以可以将分布在各地的局部坐标系的坐标转换到ECEF坐标系下。 ...
• ## 常用坐标系转换实现

千次阅读 多人点赞 2020-12-04 17:09:16
坐标系的转换Matlab实现 常用的几种导航坐标系 1. 大地坐标系，WGS84（WorldGeodeticCoordinateSystem1984） 这是为GPS全球定位系统建立的坐标系统。WGS-84坐标系的原点在地球质心，Z轴指向BIH1984.0定义的协定地球...
• 无人驾驶-坐标系转化一、坐标系概念1.1 WGS-84坐标系1.1.1 简介1.1.2 角度范围1.1.3 基本参数1.1.4 坐标系图示1.2 ECEF地心坐标系1.2.1 简介1.2.2 坐标系图解1.3 ENU东北天坐标系1.3.1 简介1.3.2 坐标系图解1.3.3 ...
• 本文主要实现的是利用python的serial库，通过串口读取组合惯导的相关数据并解析，然后将经纬度高程坐标转换为当地的北东天坐标系和utm坐标系。 组合惯导简介 组合惯导融合了卫星定位系统和基于陀螺仪的定位定向...
• 一、坐标系定义与符号约定 在捷联惯导中，涉及到多种坐标系，下面给出常用的坐标系的定义： 1）惯性坐标系（i 系）： 以地球质心为原点， 轴指向地球自转轴， 轴位 于赤道面指向空间任意点， 轴与其构成右手系...
• 日常开发中常用到八大坐标系： 1. 惯性坐标系 圆心是地球的原点，Z轴沿地轴方向朝向北极， X轴和Y轴位于赤道平面内，与Z轴满足右手法则，并且X轴和Y轴分别指向两个恒星。也就是说不随着地球的自转而发生变化。它是...
• GNSS 坐标转换GNSS计算主要涉及三个坐标系，地心地固坐标系，地理坐标系和站心坐标系。这里主要介绍一下三个坐标的含义和转换公式。地心地固坐标系如图X,Y,Z表示 (ECEF坐标系)，以地心O为坐标原点，Z轴指向协议地球...
• ENU: 世界坐标系东北天 ENU 和 UTM 的区别： ENU局部坐标系采用三维直角坐标系来描述地球表面，实际应用较为困难，因此一般使用简化后的二维投影坐标系来描述。 UTM: 在众多二维投影坐标系中，统一横轴墨卡托...
• 一、简介 ...1.3 东北天坐标系（ENU） 二、坐标系间的转换 2.1 LLA坐标系转ECEF坐标系 2.2 ECEF坐标系转LLA坐标系 2.3 ECEF坐标系转ENU坐标系 2.4 ENU坐标系转ECEF坐标系 2.5 LLA坐标系直接转ENU坐标系
• 1 坐标系定义及转换 1.1 坐标系定义 (1) ECEF坐标系 也叫地心地固直角坐标系。其原点为地球的质心，x轴延伸通过本初子午线（0度经度）和赤道（0deglatitude）的交点。 z轴延伸通过的北极（即，与地球旋转轴重合）...

...