GNSS学习笔记--坐标转换
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}}\]
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]
\]
GNSS学习笔记--坐标转换的更多相关文章
- ArcGIS案例学习笔记-中国2000坐标转换实例
ArcGIS案例学习笔记-中国2000坐标转换实例 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:西安1980.中国2000.WGS84(GPS)等任意坐标系 ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- 【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现
批处理是使GPU进行高效绘制的一种技术手段,也是整个渲染流程中最核心的技术,到目前为止我们并没有使用到这种技术手段,下面我们看看我们现在的渲染机制. 先想一想我们最开始是怎么向GPU绘制一幅图像的,可 ...
- 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)
本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder 微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...
- ArcGIS案例学习笔记1_1
ArcGIS案例学习笔记1_1 联系方式:谢老师,135_4855_4328, xiexiaokui#qq.com 时间:第一天上午 准备 0.U盘复制ArcGIS培训*** 1.练习数据不要放到桌面 ...
- 孙鑫视频VC++深入详解学习笔记
孙鑫视频VC++深入详解学习笔记 VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Le ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 学习目标 理解为什么需要法线贴图: 学习法线贴图如 ...
- OpenLayers 6 学习笔记
这个是真的学习笔记!不是教程 转载请声明:https://www.cnblogs.com/onsummer/p/12159366.html 基于openlayers 6.x api不太好查,就基于腾讯 ...
- Tensorflow学习笔记No.11
图像定位 图像定位是指在图像中将我们需要识别的部分使用定位框进行定位标记,本次主要讲述如何使用tensorflow2.0实现简单的图像定位任务. 我所使用的定位方法是训练神经网络使它输出定位框的四个顶 ...
随机推荐
- 腾讯云服务器ubuntu18.04部署禅道系统
踩了不少坑,记录一下. 基于ubuntu18.04 一开始按照网上的攻略下载安装包 ZenTaoPMS.9.8.3.zbox_64.tar.gz,通过FileZilla传到linux的/opt下面,解 ...
- mysql windows 安装5.7
E:\MySQL\MySQLServer57\bin>net start mysqlMySQL 服务无法启动. 解决办法: 手动在安装目录创建文件 my.ini [mysql] # 设置mysq ...
- java之递归
什么是递归 递归:指在当前方法内调用自己的这种现象. 递归的分类: 递归分为两种,直接递归和间接递归. 直接递归称为方法自身调用自己. 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法 ...
- fprintf()函数
fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid,format,variables) 按指定的格式将变量的值输出到屏幕或指定文件 fid ...
- Codeforces Round #590 D. Distinct Characters Queries
CF上给的标签是数据结构.但给的题解里的方法是很巧的暴力,用vector<set>维护每个字母出现的下标,每次修改加下标,擦下标.每次询问对每个字母分别lower_bound查找区间内是否 ...
- doc 如何在指定的位置打印字符和颜色
编程:在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串weclome to masm! B8000H~BFFFFH共32KB 的空间,为80*25彩色字符模式的显示缓冲区. 在80*25彩色字符模式 ...
- IT兄弟连 HTML5教程 HTML5文字版面和编辑标签 小结及试题
小结 HTML标签包含结构标签和基础标签,基础标签是在页面制作最常使用的一些标签.基础标签包含标题标签(<h1>~<h6>).换行标签(<br>).段落标签(< ...
- SpringBoot源码学习系列之@PropertySource不支持yaml读取原因
然后,为什么@PropertySource注解默认不支持?可以简单跟一下源码 @PropertySource源码: 根据注释,默认使用DefaultPropertySourceFactory类作为资源 ...
- Linux平台 Oracle 19c RAC安装Part3:DB配置
Linux平台 Oracle 19c RAC安装Part3:DB配置 四.DB(Database)配置 4.1 解压DB的安装包 4.2 DB软件配置 4.3 ASMCA创建磁盘组 4.4 DBCA建 ...
- PHPStorm 配置本地 WebServer 运行 PHP
目标:PHPStorm 2018.2 通过配置运行 PHP 代码无需安装其它 Web Server File -> Settings菜单找到PHP,设置 CLI Interpreter PHP的 ...