GNSS 坐标转换

GNSS计算主要涉及三个坐标系,地心地固坐标系,地理坐标系和站心坐标系。这里主要介绍一下三个坐标的含义和转换公式。

地心地固坐标系如图X,Y,Z表示 (ECEF坐标系),以地心O为坐标原点,Z轴指向协议地球北极,X轴指向参考子午面与地球赤道的交点,也叫地球坐标系。一般GNSS坐标计算都在地心地固坐标系下进行的。由于地球是椭圆形,有WGS-84和CGC2000等多种标准

地理坐标系则通过经度(longitude),纬度(latitude)和高度(altitude)来表示地球的位置,也叫经纬高坐标系(LLA坐标系)。

站心坐标系以用户所在位置P为坐标原点,三个轴分别指向东向,北向和天向,也叫东北天坐标系(enu坐标系)。站心坐标系的天向方向和地理坐标系的高度方向是一致的。站心坐标系用在惯性导航和卫星俯仰角计算中较多。

参数

WGS-84

CGC200

基准椭球体的长半径a

6378137.0 m

6378137.0 m

基准椭球体的极扁率f

1/298.257223565

1/298.257223563

地球自转角速度We

7.2921151467*1e-5

7.2921151467*1e-5

地球引力和地球质量的乘积GM

3986004.418*1e8

3986004.418*1e8

光速

2.99792458*1e8 m/s

2.99792458*1e8 m/s

LLA坐标系转ECEF坐标系

LLA坐标系下的(lon,lat,alt)转换为ECEF坐标系下点(X,Y,Z)

$$\begin{cases} X=(N+alt)cos(lat)cos(lon)\ Y=(N+alt)cos(lat)sin(lon)\ Z=(N(1-e^2)+alt)sin(lat) \end{cases}$$

其中e为椭球偏心率,N为基准椭球体的曲率半径 $$\begin{cases} e^2=\frac{a^2-b^2}{a^2}\ N=\frac{a}{\sqrt{1-e^2sin^2lat}} \end{cases}$$

由于WGS-84下极扁率$f=\frac{a-b}{a}$,偏心率e和极扁率f之间的关系: $$e^2=f(2-f)$$

坐标转换公式也可以为 $$\begin{cases} X=(N+alt)cos(lat)cos(lon)\ Y=(N+alt)cos(lat)sin(lon)\ Z=(N(1-f)^2+alt)sin(lat) \end{cases}$$

$$N=\frac{a}{\sqrt{1-f(2-f)sin^2lat}}$$

python实现

def lla2ecef(lat,lon,alt):

WGS84_A = 6378137.0

WGS84_f = 1/298.257223565

WGS84_E2 = WGS84_f*(2-WGS84_f)

deg2rad = math.pi/180.0

rad2deg = 180.0/math.pi

lat *= deg2rad

lon *= deg2rad

N = WGS84_A/(math.sqrt(1-WGS84_E2*math.sin(lat)*math.sin(lat)))

x = (N+alt)*math.cos(lat)*math.cos(lon)

y = (N+alt)*math.cos(lat)*math.sin(lon)

z = (N*(1-WGS84_f)*(1-WGS84_f)+alt)*math.sin(lat)

return [x,y,z]

ECEF坐标系转LLA坐标系

ECEF坐标系下点(X,Y,Z)转换为LLA坐标系下的(lon,lat,alt)

$$lon=arctan(\frac{y}{x})$$ $$alt=\frac{p}{cos(lat)-N}$$ $$lat=arctan\bigg[\frac{z}{p}\bigg(1-e^2\frac{N}{N+alt}\bigg)^{-1}\bigg]$$ $$p=\sqrt{x^2+y^2}$$ 一开始lon是未知的,可以假设为0,经过几次迭代之后就能收敛

ECEF坐标系转enu坐标系

用户所在坐标点$P_0=(x_0,y_0,z_0)$,,计算点$P=(x,y,z)$在以点$P_{0}$为坐标原点的enu坐标系位置$(e,n,u)$这里需要用到LLA坐标系的数据,$P_0$的LLA坐标点为$LLA_0=(lon_0,lat_0,alt_0)$

$$ \begin{gathered} \left[ \begin{array}{ccc} \Delta{x}\\Delta{y}\\Delta{z} \end{array} \right]= \left[ \begin{array}{ccc} x\y\z\end{array}\right]- \left[ \begin{array}{ccc} x_0\y_0\z_0\end{array}\right] \end{gathered} $$

$$ \begin{gathered} \left[ \begin{array}{ccc} e\n\u \end{array} \right]=S\cdot \left[ \begin{array}{ccc} \Delta{x}\\Delta{y}\\Delta{z} \end{array} \right] \end{gathered}= \left[ \begin{array}{ccc} -sin(lon_0) & cos(lon_0) & 0 \ -sin(lat_0)cos(lon_0) & -sin(lat_0)sin(lon_0) & cos(lat_0) \ cos(lat_0)cos(lon_0) & cos(lat_0)sin(lon_0) & sin(lat_0) \end{array} \right]\cdot \left[ \begin{array}{ccc} \Delta{x}\\Delta{y}\\Delta{z} \end{array} \right] $$

即坐标变换矩阵$S=\left[ \begin{array}{ccc} -sin(lon_0) & cos(lon_0) & 0 \ -sin(lat_0)cos(lon_0) & -sin(lat_0)sin(lon_0) & cos(lat_0) \ cos(lat_0)cos(lon_0) & cos(lat_0)sin(lon_0) & sin(lat_0) \end{array} \right]$

enu坐标系转ECEF坐标系

$S$为单位正交矩阵 $$\mathbf{S}^{-1}=\mathbf{S}^\mathrm{T}$$ 反之 $$ \begin{gathered} \left[ \begin{array}{ccc} \Delta{x}\\Delta{y}\\Delta{z}\end{array} \right]=S^{-1}\cdot\left[ \begin{array}{ccc} e\n\u\end{array} \right]= \mathbf{S}^\mathrm{T}\cdot\left[ \begin{array}{ccc} e\n\u\end{array} \right] \end{gathered} $$

LLA坐标系转enu坐标系

上述可以看到,从LLA坐标系转换到enu坐标系有较多计算量,在考虑地球偏心率$e$很小的前提下,可以做一定的近似公式计算

$$ \left[ \begin{array}{ccc} \Delta e\ \Delta n \ \Delta u \end{array} \right]= \left[\begin{array}{ccc} a\cdot cos(lat)\cdot \Delta lon & 0 & 0 \ 0 & a \cdot \Delta lat & 0 \ 0 & 0 & \Delta alt \end{array}

\right] $$

东北天到ecef的变换_GNSS学习笔记-坐标转换相关推荐

  1. python坐标系转换_GNSS学习笔记-坐标转换

    GNSS 坐标转换 GNSS计算主要涉及三个坐标系,地心地固坐标系,地理坐标系和站心坐标系.这里主要介绍一下三个坐标的含义和转换公式. 地心地固坐标系如图X,Y,Z表示 (ECEF坐标系),以地心O为 ...

  2. 图像处理——DCT变换的学习笔记

    1 DCT变换的学习笔记 DCT变换是一种可逆的变化,也就是说:DCT变换是一种一一映射:

  3. 关于TF变换的学习笔记(二)

    第二篇学习TF变换的笔记,主要是根据这篇文章学习的.文章写的很好,推荐阅读. 一.TF简介 TF简介:机器人系统通常具有许多随时间变化的坐标系,例如世界坐标系.基座坐标系.夹持器坐标系.头部坐标系等. ...

  4. 交交变换电路学习笔记

    交交变换电路 1.定义 2.交交变换电路的种类 3.控制方式 3.1交流调压电路的控制方式 3.2 交交调频电路的控制方式 4.交交变换电路的应用 1.定义 将一种形式的交流变换为另一种形式的交流的电 ...

  5. 希尔伯特变换_学习笔记1-傅里叶变换1

    最终目标是解微分方程.第一章首先介绍了一般意义下的傅里叶变换,之后逐渐将傅里叶变换的概念抽象化,将变换的定义域进行拓展.最后少量介绍傅里叶变换在偏微分方程中的应用.习题解答是自己写的,有的不会,有的不 ...

  6. OpenGL学习笔记——坐标转换

    因为OpenGL中的坐标转换有些复杂,所以做一篇笔记记录一下. 文章目录 一.简介 二.代码实现 2.1简单的测试 2.2旋转测试 三.小结 一.简介 学习OpenGL一段时间之后,数据的坐标转换将会 ...

  7. 【学习笔记】超简单的快速数论变换(NTT)(FFT的优化)(含全套证明)

    整理的算法模板合集: ACM模板 目录 一.前置知识 二.快速数论变换(NTT) 三.NTT证明(和FFT的关系) 四.NTT模板 数组形式的实现 vector形式的实现 点我看多项式全家桶(●^◡_ ...

  8. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  9. 离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习

    离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习 说在前边 最近复习\(DSP\)的时候,发现了一个号称专门针对离散实序列的变换,经分析总运算量为普通\(FFT\)的几乎一半,而且完全没有复数. ...

最新文章

  1. 达摩院首席数据库科学家李飞飞:云原生新战场,我们如何把握先机?
  2. MySQL3次导入报错解决!
  3. 【原】概率论——第一章第1节
  4. JPA EntityManager详解
  5. 更换ubuntu的root的默认python版本
  6. Vue之$nextTick属性
  7. ECCV 2020 论文大盘点-人体形状与姿态估计篇
  8. matlab2c使用c++实现matlab函数系列教程-factorial函数
  9. gradle脚本源码查看环境搭建
  10. 类文件Android 代码混淆 以及 反编译 的实现类文件
  11. 勤哲Excel服务器2017
  12. 用flash做古诗动画_《古诗三首》Flash动画课件
  13. 台式机计算机在哪里看,IT教程:台式电脑主板型号在哪里看
  14. as3.0点击获取TLF文本的实例名
  15. python模拟app发送请求失败_如何使用Tensorflow解决Python Chatbot App的运行会话失败问题...
  16. VUE制作谷歌浏览器多类型截屏、抓取信息的插件
  17. PDF 格式的文件编辑难度非常大, 相比 DOCX 格式,它存在的意义是什么?
  18. 一篇会改变身处职场的你思维的一篇文章
  19. 韩版机泛泰A850去除漫游时拨号选择框
  20. 区块链溯源是如何实现的?

热门文章

  1. (转)iOS Wow体验 - 第五章 - 利用iOS技术特性打造最佳体验
  2. 微软系统修复工具(试用版)
  3. 计算机系统结构——概述
  4. ABB机器人之LOADDATA
  5. office2016打开PPT出现解决VBE6EXT.OLB不能被加载问题的解决办法
  6. html突出显示,javascript-记住html页面中突出显示的文本(向html页面添加注释)
  7. c语言float输出分数,c语言同一题目求解结果用float和int输出值差1.
  8. C++ STL中set底层实现方式
  9. c语言用数组写密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序...
  10. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波4 - 分段线性变换 - 对比度拉伸