计算卫星高度角、方位角

news2024/9/21 14:31:43

    最小二乘定权、电离层对流层改正,都需要卫星的高度角、方位角。本章将介绍求解完卫星的地固坐标系的位置后,如何求解卫星的高度角、方位角。

    卫星位置求解请参考之前的博客:卫星位置解算原理与程序设计

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

目录

公式原理

程序设计(C语言)


公式原理

    站心坐标系也称NEU坐标系或东北高坐标系,在地球上任一点观测卫星时,最直观和最方便的办法是知道卫星所在的瞬时位置的方位和仰角。因此,需将卫星的地固坐标系转化成站心坐标系。 

    站心直角坐标系是以测站为坐标原点的左手坐标系,其N轴指向过该测站的子午线,北向为正;U轴重合与该点上WGS84椭球法线,向外为正;E轴位于该点的切平面,东向为正,如下图所示: 

站心直角坐标系

     站心坐标系常用极坐标表示(方位角A、高度角h、向径r),如下图所示:

站心极坐标系
​​​​

    建立以已知测站点\left ( X_{r} ,Y_{r},Z_{r}\right )为原点的站心直角坐标系,则卫星在该坐标系的坐标为:

式中:X_{s}为卫星在地固系中的坐标向量;X_{r}为测站在地固坐标系中的坐标向量;X_{L}为卫星在站心坐标系中的坐标向量;R为旋转矩阵,即: 

 式中:B,L为测站的大地维度和大地精度。

    卫星从站心直角坐标系转换到站心极坐标系的公式为:

式中:r为卫星向径,A为卫星方位角,h为卫星的高度角

    卫星从站心极坐标系转到站心直角坐标系的公式为:

程序设计(C语言)

根据上述公式,求解卫星的站心极坐标需要8个参数:卫星地固坐标系xyz,测站地固坐标系xyz,以及测站经纬度BL(B表示维度,L表示经度)。

#define PI 3.141592653589793

//计算卫星高度角(弧度)
RAH satrah(double Xr, double Yr, double Zr, double Xs, double Ys, double Zs, double Lr, double Br)
{
	RAH rah = { 0 };
	int i;
	double** R, ** X, ** res;
	R = (double**)malloc(sizeof(double*) * 3);
	X = (double**)malloc(sizeof(double*) * 3);
	res = (double**)malloc(sizeof(double*) * 3);
	if (R)
	{
		for (i = 0; i < 3; i++)
		{
			R[i] = (double*)malloc(sizeof(double) * 3);
			X[i] = (double*)malloc(sizeof(double) * 1);
			res[i] = (double*)malloc(sizeof(double) * 3);
		}
	}
	//构建旋转矩阵R
	R[0][0] = -sin(Lr);
	R[0][1] = cos(Lr);
	R[0][2] = 0;
	R[1][0] = -sin(Br) * cos(Lr);
	R[1][1] = -sin(Br) * sin(Lr);
	R[1][2] = cos(Br);
	R[2][0] = cos(Br) * cos(Lr);
	R[2][1] = cos(Br) * sin(Lr);
	R[2][2] = sin(Br);
	//构建X向量
	X[0][0] = Xs - Xr;
	X[1][0] = Ys - Yr;
	X[2][0] = Zs - Zr;
	res = Matrix_Mul(R, X);
	rah.h = atan2(res[2][0],sqrt(pow(res[0][0], 2) + pow(res[1][0], 2)));
	if (rah.h < 0)
		rah.h += PI / 2;
	rah.A = atan2(res[1][0], res[0][0]);
	if (rah.A < 0)
		rah.A += 2*PI;
	if (rah.A > 2 * PI)
		rah.A -= 2*PI;
	rah.r = sqrt(pow(res[0][0], 2) + pow(res[1][0], 2) + pow(res[2][0], 2));
	free(R);
	free(X);
	free(res);
	return rah;
}

1)RAH为用于传参的结构体,代码如下:

//卫星极坐标函数传参
typedef struct RAH
{
	double r;
	double A;
	double h;
}RAH;

2)Matrix_Mul为自行编写的矩阵乘法函数,具体代码请见C语言矩阵乘法

3)atan2为四象限反正切函数(atan,atan2并不相同),三角函数单位均为弧度

4)高度角h范围在0~90°;若高度角h<0,h=h+pi

5)方位角A范围在0~360°;若A<0,A=A+2pi;若A>2pi,A=A-2pi

6)务必释放内存!

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

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

相关文章

读<算法图解><笔记摘录>

从很多途径当中,看到过这本书的知识点,是一本很有趣的算法入门书籍,最近花费了几天的时间将其阅读完,总想着总结一下这本书的算法知识点,分享给大家,也让自己掌握地更加踏实一点. 算法:一组完成任何任务的指令 算法这玩意,在保证满足条件,并且不浪费内存的情况下,要尽可能速度…

18.定位元素练习-淘宝网

注意&#xff1a; 如果一个盒子定位元素属性既有left又有right,则会执行left属性。 既有top又有bottom&#xff0c;会执行top <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compa…

五子棋游戏AI智能算法设计

五子棋游戏C语言AI智能算法设计 近来发现编制五子棋游戏很有趣&#xff0c;尤其是AI智能算法很烧脑。网上介绍有什么贪心算法&#xff0c;剪枝算法&#xff0c;博弈树算法等等&#xff0c;不一而足。 对于人机对战的电脑智能应子算法&#xff0c;参阅很多五子棋书籍棋谱和五…

有序Map集合:LinkedHashMap和TreeMap该如何选用

文章目录前言一、为什么HashMap是无序的二、LinkedHashMap如何保证有序性三、TreeMap的底层原理四、LinkedHashMap和TreeMap比较总结前言 为什么HashMap是无序的&#xff1f;有序的Map集合有哪些&#xff1f;LinkedHashMap和TreeMap都是有序的Map集合&#xff0c;他们有什么区…

智能优化算法期末复习(更新ing)

目录 一、GA遗传算法 二、ACO蚁群算法 三、PSO粒子群算法 四、SA模拟退火算法 五、ABC人工蜂群算法 六、综合 一、GA遗传算法 1.运算流程 2.遗传算法适应值分配策略&#xff08;基于目标函数的直接分配、基于排名的分配&#xff09; 3.遗传算法在二进制问题&#xff08;如0…

Windows OpenGL ES 图像绿幕抠图

目录 一.OpenGL ES 图像绿幕抠图 1.原始图片2.效果演示 二.OpenGL ES 图像绿幕抠图源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础…

Java开发必须掌握的运维知识 (十)-- Docker集群自动化部署管理:Kubernetes快速入门

一、什么是Kubernetes Kubernetes(K8S)是Google在2014年发布的一个开源项目&#xff0c;用于自动化容器化应用程序的部署、扩展和管理。 Kubernetes通常结合docker容器工作&#xff0c;并且整合多个运行着docker容器的主机集群。 Kubernetes官网地址 二、Kubernetes相关特性 …

JavaWeb_第3章_HTTPTomcatServlet

JavaWeb_第3章_HTTP&Tomcat&Servlet 文章目录JavaWeb_第3章_HTTP&Tomcat&Servlet1&#xff0c;Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器1.3 Web核心课程安排2, HT…

vue中,页面布局之使用vue-splitpane实现窗格的拆分和调节,类似于flex布局

vue中&#xff0c;页面布局之使用vue-splitpane实现窗格的拆分和调节&#xff0c;类似于flex布局 1、基本介绍 npm地址&#xff1a;https://www.npmjs.com/package/vue-splitpane 安包 npm install vue-splitpane注册 main.js import splitPane from vue-splitpane // 注…

土豆清洗去皮机设计

目 录 摘 要 I Abstract II 1绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.2.1国内外现状 2 1.2.2国外研究现状 2 1.3 发展趋势 3 1.4研究内容及方法 4 2毛刷式土豆清洗去皮机总体设计 5 2.1毛刷式土豆清洗去皮机的构造及工作原理 5 2.2 土豆擦皮机的相关计算 6 2.2.1设计…

动手学深度学习(1)—— 基础知识

文章目录一、基本概念1.1 关键组件数据模型目标函数优化算法1.2 各种机器学习问题监督学习无监督学习强化学习1.3 神经网络的特点二、预备知识2.1 数据操作入门运算符广播机制索引和切片节省内存转换为其他python 对象2.2 数据预处理读取数据集处理缺失的数据2.3 线性代数标量向…

WPS通过“文档部件”的“域”设置图、表和公式的自动序列号

写文档时&#xff0c;当有多张图片、多个表格和多个公式需要编号时&#xff0c;可以通过设置自动序列号&#xff0c;实现一定程度的自动编号和任意位置插入后随时更新序号。具体操作如下 ​ 1. 图的设置 在WPS中&#xff0c;首先设置好一张图片的格式后&#xff0c;对于需要设…

【并发】J.U.C线程池

线程池 经历了Java内存模型、JUC基础之AQS、CAS、Lock、并发工具类、并发容器、阻塞队列、atomic类后&#xff0c;我们开始JUC的最后一部分&#xff1a;线程池。 线程池的优势 为什么多线程会带来性能问题 多线程的性能问题&#xff0c;分为两类&#xff0c;一类是线程本身…

从今天起真正释放创造力——亚马逊云科技re:Invent

对于开发者而言&#xff0c;成就感来自于每一次敲下代码后可实现的创造力&#xff0c;而不是把时间和精力消耗在写千篇一律又无法复用的“胶水”代码&#xff0c;或是在越来越复杂的软件栈面前&#xff0c;疲惫地写业务流程并尽量减少Bug。更加不堪的是&#xff0c;有时仅仅是因…

2022.12.4 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.方法5.实验5.1 数据集5.2 网络模型5.3 实验表现6.展望深度学习1.LSTM原理1.1 什么是LSTM&#xff1f;1.2 遗忘门&#xff08;forget gate&#xff09;1.3 输入门&#xff08;input gate&#xff09;1.4 输出门&#xff08;output gate…

Python声明式统计可视化库 altair-GitHub鉴赏官

推荐理由&#xff1a;Vega-Altair是 Python 的声明式统计可视化库。借助 Vega-Altair&#xff0c;您可以花更多时间来理解数据及其含义。Vega-Altair 的 API 简单、友好且一致&#xff0c;建立在强大的 Vega-Lite JSON 规范之上。这种优雅的简单性可以用最少的代码产生漂亮而有…

FT2004(D2000)开发实战之在线开发GPIO LED程序

一 在线开发GPIO LED程序 分析GPIO LED原理图 从飞腾FT2004原理图可知,开发板将GPIO1_A3和GPIO1_A4连接到LED上,具体如下: 开发板将GPIO1_A3和GPIO1_A4连接到LED上,因此代码初始化时需要注意以下几点: => 打开/dev/gpiochip1设备 => gpio偏移量为3和4创建led.c roo…

OpenShift 4 - 从 FreeIPA/RHIdM 向 RHSSO 同步用户和组

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.11 环境中验证 文章目录安装 FreeIPA/RHIdM在 FreeIPA/RHIdM 中添加用户和组从 FreeIPA/RHIdM 向 RHSSO 同步用户和组参考红帽 RHIdM 基于开源项目 FreeIPA&#xff0c;其内部提供…

Windows Access Token

Windows Access Token Windows Token其实叫Access Token(访问令牌)&#xff0c;它是一个描 述进程或者线程安全上下文的一个对象。不同的用户登录计算机后&#xff0c; 都会生成一个Access Token&#xff0c;这个Token在用户创建进程或者线程 时会被使用&#xff0c;不断的拷贝…

如何选择和使用腾讯云服务器的方法新手教程

本文将介绍如何选择和使用腾讯云服务器的方法新手教程。云服务器能帮助快速构建更稳定、安全的应用&#xff0c;降低开发运维的难度和整体IT成本。腾讯云CVM云服务器提供多种类型的实例、操作系统和软件包。各实例中的 CPU、内存、硬盘和带宽可以灵活调整&#xff0c;以满足应用…