空间直接坐标系(XYZ)转经纬度(BLH)
创始人
2024-04-17 12:15:35
0

本章首先介绍空间直角坐标系与大地坐标系,然后列出XYZ转换BLH的公式,最后基于C语言完成该部分代码设计。

参考书籍:

董大男,陈俊平,王解先等,GNSS高精度定位原理,科学出版社

黄丁发,熊永良,周乐韬等,GPS卫星导航定位技术与方法,科学出版社。

公式原理 

空间直角坐标系

空间直角坐标系原点位于参考椭球的中心,Z轴指向参考椭球的北极,X轴指向首子午面与赤道的交点,Y轴位于赤道面上,且按右手坐标系与X轴呈90°夹角。某点在空间中坐标可用该店在次坐标系的各个坐标轴上的投影来表示。(如下图所示)

空间直角坐标系

大地坐标系

空间大地坐标系是采用大地经纬度和大地高来描述空间位置的(下图)。维度是指P点的法线与赤道面的夹角,用B(-90°~ 90°)表示,向北为正称为北纬,向男为负称为南纬。经度是指P点的参考椭球子午面与起始子午面的二面角,用L表示(-180°~180°),由起始子午面起算,向东为正称为东京,向西为负称为西经。大地高是空间点沿该法线到椭球面的距离,用H表示,向上为正,向下为负。

空间大地坐标系

XYZ转BLH

空间直角坐标系(X,Y,Z)与大地坐标系 (B,L,H)关系如下:

式中:N为某点P的卯酉圈半径;(B,L,H)为P点的大地坐标系,卯酉圈半径N公式如下:

式中:a为椭球长半轴,b为椭球短半轴,e=\frac{\sqrt{a^{2}+b^{2}}}{a}为第一离心率,B为大地维度。不难看出,大地维度是关于自身的函数,需要迭代求解。计算方式如下:

初始迭代时,设:

 于是:

当ΔH<0.001m,B的经度保证在0.001秒即可停止迭代。

关于上述代码的详细推导过程,请参考charlee44博主的大地经纬度坐标与地心地固坐标的的转换

 

程序设计

#define a  6378137.0//长半轴
#define f  (1 / 298.257222101)//扁率
#define b  (a - a * f)//短半轴
#define e2  (f*(2-f))//第一偏心率平方//经纬度转换(弧度)
BLH XYZtoLB(double X, double Y, double Z)
{BLH res = { 0 };double B = 0.0, N = 0.0, H = 0.0, R0, R1, deltaH, deltaB;R0 = sqrt(pow(X, 2) + pow(Y, 2));R1 = sqrt(pow(X, 2) + pow(Y, 2) + pow(Z, 2));//经度直接求解res.L = atan2(Y, X);//迭代求大地维度和大地高N = a;H = R1 - sqrt(a * b);B = atan2(Z * (N + H), R0 * (N * (1 - e2) + H));do{deltaH = N;//判断收敛所用deltaB = B;N = a / sqrt(1 - e2 * pow(sin(B), 2));H = R0 / cos(B) - N;B = atan2(Z * (N + H), R0 * (N * (1 - e2) + H));} while (fabs(deltaH - H) > 0.001 && fabs(deltaB - B) > 1.0e-9);res.B = B;res.H = H;return res;
}

其中,BLH为用于传参的结构体,代码如下:

//经纬度函数传参
typedef struct BLH
{double B;//维度double L;//经度double H;//高
}BLH;

代码部分与上述公式部分对应,代码并不复杂按公式来即可,求出测站的经纬度后,即可求出卫星的高度角、方位角,从而进行定权、误差改正等内容。

卫星高度角、方位角求解可参考我的博客:求解卫星高度角、方位角

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...