空间直接坐标系(XYZ)转经纬度(BLH)

news2024/11/17 11:25:39

本章首先介绍空间直角坐标系与大地坐标系,然后列出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;

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图扑软件荣获第七届“创客中国”中小企业创新创业大赛优胜奖

2022 年 11 月 17 日,由工业和信息化部、财政部共同主办的第七届“创客中国”中小企业创新创业大赛全国总决赛在浙江杭州落下帷幕。 本次《第七届“创客中国”中小企业创新创业大赛》举办目的,意在加大优质中小企业梯度培育力度,进一步提升中…

高新技术企业如何规划

如何提高申报高企的成功率,应该是很多企业关心的一个问题。 2022年高新技术企业申报已经结束,今年第三批申报的企业结果也将公示,有客户会问,历年来你们申报高企通过率这么高,是怎么做到的? 那么现在呢&a…

《痞子衡嵌入式半月刊》 第 66 期

痞子衡嵌入式半月刊: 第 66 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢…

Spring 框架下如何调用kafka

1、Spring 项目代码结构如下: 2、数据库资源配置文件如下: #sql配置文件 spring.datasource.driver-class-namecom.microsoft.sqlserver.jdbc.SQLServerDriver #.19為測試地址,.13為正式地址 spring.datasource.urljdbc:sqlserver://172.12.…

[ 红队知识库 ] 常见防火墙(WAF)拦截页面

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu交叉编译Arm Linux环境下的身份证读卡器so库操作步骤

1、配置环境变量 ①将gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar解压至/home/eastcoms/ sudo或者root运行命令 :sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar -C /home/eastcoms .tar用 -xvf .gz用 -zxvf .bz2用 -jxvf …

easypoi导入案例

文章目录easypoi导入案例一、依赖二、导出模板1、excel模板实体类(同下)2、具体实现类3、easypoi工具类中的方法4、自定义样式类三、导入校验1、excel模板实体类2、具体实现类3、自定义信号导入校验类easypoi导入案例 一、依赖 <dependency><groupId>cn.afterturn…

第7 部分 HDLC 和PPP

路由器经常用于构建广域网&#xff0c;广域网链路的封装和以太网上的封装有着非常大的差别。常见的广域网封装有HDLC&#xff0c;PPP 和Frame-relay 等&#xff0c;本次介绍HDLC 和PPP。相对而言&#xff0c;PPP 比HDLC 有较多的功能。 7.1 HDLC 和PPP 简介 7.1.1 HDLC 介绍 H…

批处理及有状态等应用类型在 K8S 上应该如何配置?

众所周知, Kubernetes(K8S)更适合运行无状态应用, 但是除了无状态应用. 我们还会有很多其他应用类型, 如: 有状态应用, 批处理, 监控代理(每台主机上都得跑), 更复杂的应用(如:hadoop 生态...). 那么这些应用可以在 K8S 上运行么? 如何配置? 其实, K8S 针对这些都有对应的不…

操作系统:存储器管理 练习题(带有详细答案解析)

文章目录1.存储器的层次结构2.程序的装入和链接2.1.程序的装入2.2.程序的链接3.连续分配存储管理方式3.1.单一连续分配3.2.固定分区分配3.3.动态分区分配3.4.基于顺序搜索的动态分区分配算法3.5.基于索引搜索的动态分区分配算法3.6.动态可重定位分区分配4.对换4.1.多道程序环境…

SBT 树原理和实战

一 基本概念 SBT&#xff08;Size Balanced Tree&#xff0c;节点大小平衡树&#xff09;是一种自平衡二叉查找树&#xff0c;通过子树的大小来保持平衡。与红黑树、AVL 树等自平衡二叉查找树相比&#xff0c;SBT更易于实现。SBT 可以在 O (logn) 时间内完成所有二叉搜索树的相…

【考研】操作系统复习冲刺(2023年408)

前言 本文内容主要源自于王道讲解的学习笔记总结。梳理《操作系统》考点&#xff08;以理论为重点&#xff09;&#xff0c;并对重点内容划下横线和加粗标注&#xff0c;方便考研复习。 可搭配以下链接一起学习&#xff1a; 【考研复习】《操作系统原理》孟庆昌等编著课后习…

数字IC手撕代码-同步FIFO

前言&#xff1a; 本专栏旨在记录高频笔面试手撕代码题&#xff0c;以备数字前端秋招&#xff0c;本专栏所有文章提供原理分析、代码及波形&#xff0c;所有代码均经过本人验证。 目录如下&#xff1a; 1.数字IC手撕代码-分频器&#xff08;任意偶数分频&#xff09; 2.数字…

磁环选型攻略及EMC整改技巧

磁环选型攻略及EMC整改技巧 今天跟大家分享一下磁环选型及应用相关的知识&#xff0c;希望对你有帮助。 本文将从以下四个方面对磁环进行阐述。 一、磁环的应用场景 首先我们来看几张图片 图1 显示屏VGA线 图2 适配器连接线 图3 USB通信线 这三根线都是我们生活中常见的供电…

简单个人网页设计作业 静态HTML个人博客主页——HTML+CSS+JavaScript 明星鹿晗(7页)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

ping回显间隔长或第一个包很久才显示是怎么回事?

问题现象 在ping某些域名的时候&#xff0c;第一个回显十几秒才出现&#xff0c;但时延time正常&#xff0c;第二个包开始回显频率正常且最终统计结果为不丢包&#xff1b;或是每一个回显均间隔数秒才显示&#xff0c;但时延time又都是正常的&#xff0c;且统计结果为不丢包。…

U-Net 模型改进和应用场景研究性综述

U-Net综述1 文章介绍2 U-Net介绍3 结构改进4 非结构改进4.1 预处理——数据增强4.2 训练——数据归一化4.3 训练——激活函数4.4 训练——损失函数4.5 结构改进总结5 U-Net应用场景5.1 视网膜血管分割5.2 肺结节分割5.3 肝脏和肝脏肿瘤分割5.4 脑肿瘤分割5.5 不同应用场景总结6…

[附源码]计算机毕业设计基于Springboot校刊投稿系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vue学习:模板语法

容器里面的模板&#xff1a;对应的模板语法 {{xxx}}:插值语法 指令语法&#xff1a; v-bind&#xff1a;vue指令 绑定 后面的数据会变成属性或者方法 <h1>指令语法</h1><!-- v-bind会将"xxx"里面的内容当成表达式执行 --><a v-bind:href&quo…

这些 MySQL 最朴素的监控方式!用完爱不释手!

对于当前数据库的监控方式有很多&#xff0c;分为数据库自带、商用、开源三大类&#xff0c;每一种都有各自的特色&#xff1b;而对于 mysql 数据库由于其有很高的社区活跃度&#xff0c;监控方式更是多种多样&#xff0c;不管哪种监控方式最核心的就是监控数据&#xff0c;获取…