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

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

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

目录

公式原理

程序设计(C语言)


卫星方位角的计算需要测站的经纬度,该部分内容与代码请参考:空间直角坐标系与大地坐标系的转换https://blog.csdn.net/why1472587/article/details/128190538?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128190538%22%2C%22source%22%3A%22why1472587%22%7D

公式原理

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

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

站心直角坐标系

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

站心极坐标系
​​​​

建立以已知测站点为原点的站心直角坐标系,则卫星在该坐标系的坐标为:

式中:为卫星在地固系中的坐标向量;为测站在地固坐标系中的坐标向量;为卫星在站心坐标系中的坐标向量;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);}}//构建旋转矩阵RR[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)务必释放内存!

计算卫星高度角、方位角相关推荐

  1. 计算卫星高度角和方位角

    谁能想到我算了无数次,查了无数次,最后翻墙谷歌听了印度老师的讲座才找到计算的方法,学术无止境,学术无国界. 一般我们可以从遥感图想说明中得到图像中心点的卫星天顶角和卫星方位角,由此计算出卫星星下点的经 ...

  2. 基于MATLAB计算卫星位置

    matlab卫星定位 认识星历文件观测文件及位置计算 星历文件 观测文件 matlab面对对象卫星位置计算 卫星高度角方位角计算(待更新...) 认识星历文件观测文件及位置计算 初学者,欢迎指正批评. ...

  3. RTKLIB——求卫星高度角与方位角(geodist,satazel)

    本文代码选自RTKLIB_2.4.2版本,文中所有代码均在rtkcmn.c源文件中,宏定义在头文件中. 文章目录 原函数 `宏定义` `工具`函数 `geodist`函数 `satazel`函数 示例 ...

  4. 根据卫星的方位角和仰角画卫星星空图(QT实现)

    作者:haomingHu email:hhm_master@163.com 需求:在0183格式中,根据GNGSV中的卫星仰角和方位角去绘制卫星星空图 如图: 目标:实现一个卫星的映射 名词解释: 方 ...

  5. 什么是卫星天线方位角、仰角和极化角

    什么是卫星天线方位角.仰角和极化角 1 .方位角:通常我们通过计算软件或在资料中得到的结果应该是以正南方向为标准,将卫星天线的指向偏东或偏西调整一个角度,该角度即是所谓的方位角.至于到底是偏东还是偏西 ...

  6. android地图方位角_Android获取经纬度、计算距离、方位角

    最近在Android上做GPS的东西,获取经纬度.计算距离.方位角,感觉在搞GIS样.当然,玩笑了,玩玩而已,稍微总结一下. 经度指示南北方向,纵向. 纬度指示东西方向,横向. 获取经纬度 使用GPS ...

  7. 已知两点经纬度 计算距离和方位角(MATLAB实现)

    本文将参考文件:http://www.movable-type.co.uk/scripts/latlong-vincenty.html 当中的计算公式和java代码用MATLAB语言实现,然后进行了实 ...

  8. 基于卫星星历计算卫星在CGCS2000大地坐标系中的坐标

    目录 一.北斗系统概述 1.空间星座 2.坐标系统 3.时间系统 二.实验目的 三.实验内容 四.实验过程 五.实验结果 一.北斗系统概述 1.空间星座 北斗卫星导航系统简称北斗系统,英文缩写为 BD ...

  9. 用c++根据轨道六根数计算卫星位置

    轨道六根数是描述卫星轨道的一组参数,包括: 轨道长半径(a):卫星轨道的半径,表示卫星到地球中心的平均距离. 轨道偏心率(e):卫星轨道的偏心率,表示轨道的椭圆程度. 轨道倾角(i):卫星轨道与地球赤 ...

最新文章

  1. 右边菜单_Excel – 如何始终显示下拉菜单右边的小箭头?
  2. VTK:BackfaceCulling背面剔除用法实战
  3. Ucenter会员同步通讯登录原理(转)
  4. java无符号 uuid,java实现无符号数转换、字符串补齐、md5、uuid、随机数示例
  5. 第一章MCS-51单片机结构,单片机原理、接口及应用
  6. C#通过接口与线程通信(捕获线程状态)介绍
  7. Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)...
  8. 面向对象三种模型之间的关系
  9. mysql 修改字段长度 合并语句_mysql中利用sql语句修改字段名称,字段长度等操作...
  10. 【linux】nohup运行守护进程
  11. 为了躲开违规电动车,我一下子撞电线杆上了
  12. 使用Redis计数器防止并发请求
  13. CentOS 6.0 下 VNC 配置方法
  14. 查找单词出现次数(功能加强)
  15. java左手画圆右手画方_左手画圆、右手画方,双手齐用同时养护、开发你的左右大脑!...
  16. 抖音 Android 基础技术大揭秘!
  17. dismiss和remove_Dialog的dismiss和cancel 区别 (转)
  18. 2022最新网盘系统源码仿蓝奏
  19. oracle 自动填充,jQuery 实现自动填充邮箱功能(带下拉提示)
  20. 如何写一个自动投票工具

热门文章

  1. 插件式换肤框架搭建 - 资源加载源码分析
  2. linux开机卡在usb,UUI v1.9.7.3 轻松制作 Linux 版 USB 开机随身碟、记忆卡(Universal USB Installer)...
  3. LeetCode 1052 爱生气的书店老板 HERODING的LeetCode之路
  4. 电网负荷调度三维组态软件V2.0
  5. 淘宝京东商品长链接缩短为腾讯,新浪短链接的接口有哪些?
  6. 4.20 视频面试字节_光大银行_神策
  7. RationalDMIS 7.1 量块程序 2020
  8. 计算机与投影仪的记录,投影仪和电脑的连接及PPT播放
  9. SQL Server over()
  10. IT培训机构如何选择