空间直接坐标系(XYZ)转经纬度(BLH)
创始人
2024-03-19 21:22:19
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;

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

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

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...