分别用精密星历和广播星历计算卫星坐标 -- 对 GNSS 第一次编程的总结
2019/9/24
最近上GNSS 课,老师布置了编写读取广播星历和精密星历来计算卫星坐标的作业,这篇文章对其进行一个简单的总结。
星历下载:https://blog.csdn.net/Gou_Hailong/article/details/100809806
一、用到的知识点
1、旋转矩阵
百度百科
2、拉格朗日插值
百度百科
3、RINEX 也就是广播星历的数据格式
参考博客
4、SP3
(图片来源于百度文库)
参考博客
二、要注意的问题
1、用 actan2
函数
2、XXDXX
字符串转double
用函数
double st2d(char *str)
{ //将"aDb"格式数字转换为doubledouble f;char *pEnd;f = strtod(str, &pEnd);f *= pow(10, strtod(pEnd + 1, NULL));return f;
}
3、截取子串的函数
char st[85] = "";//求子串用到
char *substr(char *buf, int pos, int len)
{ //求子串memset(st, '\0', sizeof(st));return strncpy(st, buf + pos, len);
}
4、调试过程中如果出现 stack overflow 问题,
解决方案:属性->链接器->系统->堆栈保留大小 改的大一些
5、调用 strcpy、strcat 等函数时会提示 _CRT_SECURE_NO_WARNINGS 警告,原因是这些函数不安全,可能会造成内存泄露等。
解决方案1:
在头部加宏定义:
#define _CRT_SECURE_NO_WARNINGS
解决方案2:
在项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理器定中添加 _CRT_SECURE_NO_WARNINGS 这个预定义。
2020/5/12
应某些朋友的请求,终于抽出时间来介绍自己当时所做的工作,详见如下:
三、算法原理
由于时间太久,再看代码的话,不免有些生疏(我是谁,我在哪,这是我写的吗?)还好教材比较详细,就不费功夫自己整理辽。
总结:用广播星历计算卫星位置比较复杂,用精密星历计算卫星位置就用到了拉格朗日内插而已。
声明:上图出自教材《GPS测量与数据处理》(李征航 黄劲松 编著 第三版)武汉大学出版社
P75始 此图出于方便自己和他人学习查阅之目的,如有侵权,请联系作者删除!
四、源码简介
当时在完成编程作业的时候用的是C语言,后来学了fortran 感觉星历文件就是设计的用fortran 读的。所以,最近又写了fortran 的版本(没写完)
1.C语言版本
程序结构框架:
此程序自带了算例文件(路径data/8.28
)是2019/8/28日的广播星历和精密星历文件。程序输出(路径data/out
)
brdcxx.txt //这是用广播星历计算出来的xx号卫星的坐标
spxx.txt //这是用精密星历计算出来的xx号卫星的坐标
detxx.txt //这是两者之间的差值 广-精
//这三个文件存储的数据格式都是 sec x y z time
//其中 sec 是一天中第几秒 单位 s
// xyz 是卫星坐标 单位 m
// time 是钟改正 单位 1e-6 s
输出文件可用matlab 等软件进行绘图。
广播星历结构体:
精密星历结构体:
感兴趣的朋友可以下载:
https://download.csdn.net/download/Gou_Hailong/12413077
劳动所得,赚点积分嘛。(无积分者接受有偿提供源码,嘿嘿嘿)如果使用中遇到问题欢迎私信我或联系我的qq,但是我水平有限,可能解决不了您的问题,但是我会尽力的!
值得注意的一点是:此程序要配置Egien 库:
1.Fortran版本(只实现了读文件)
https://blog.csdn.net/Gou_Hailong/article/details/106085616
参考/引用文章
[1] 百度百科:https://baike.baidu.com/item/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E6%8F%92%E5%80%BC%E5%85%AC%E5%BC%8F/4285592?fr=aladdin
[2] 百度百科:https://baike.baidu.com/item/%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5/3265181?fr=aladdin
[3] Miaow678-CSDN博主:https://blog.csdn.net/Miaow678/article/details/83860975
[4] 灵影葬-CSDN博主:https://blog.csdn.net/liuci3234/article/details/21971241
[5] 流浪猪头拯救地球-CSDN博主:https://blog.csdn.net/Gou_Hailong/article/details/106085616
分别用精密星历和广播星历计算卫星坐标 -- 对 GNSS 第一次编程的总结相关推荐
- 利用广播星历计算卫星在ECEF下的坐标
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <ma ...
- 用Java编程卫星坐标_2 分钟掌握卫星星座图
话不多说,助您 2 分钟掌握卫星星座图,知晓原理,并能绘制 效果 基础 什么是卫星星座? 详细科普不在本文浪费时间了,完全不懂的同学瞄一下卫星星座-百度百科就可以了. 实现 储备知识 简单解释一下所需 ...
- GPS卫星坐标用计算机计算,GPS卫星位置的计算
[摘 要]针对GPS卫星导航电文的特点和里边各种参数含义及用法,阐述了利用导航电文提供的数据计算卫星位置的方法,为进行基线解算时提供准确的卫星坐标数据. 0前言 全球卫星定位系统(GPS)是一个实时的 ...
- 【python】利用广播星历计算BDS卫星的位置
前言 本程序为<卫星导航定位基础>大作业之二,功能为实现对广播星历文件的读取和处理,计算出北斗卫星的位置坐标,并绘制出二维和三维的卫星位置分布图.若需要对其他类型卫星数据处理,可根据本程序 ...
- c语言编程gps卫星坐标计算公式,C语言计算GPS卫星位置演示教学.doc
C语言计算GPS卫星位置演示教学.doc C语言计算GPS卫星位置1 概述在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置.卫星位置的计算是根据卫星电文所提供的轨道参 ...
- 基于卫星星历计算卫星在CGCS2000大地坐标系中的坐标
目录 一.北斗系统概述 1.空间星座 2.坐标系统 3.时间系统 二.实验目的 三.实验内容 四.实验过程 五.实验结果 一.北斗系统概述 1.空间星座 北斗卫星导航系统简称北斗系统,英文缩写为 BD ...
- 计算卫星高度角、方位角
最小二乘定权.电离层对流层改正,都需要卫星的高度角.方位角.本章将介绍求解完卫星的地固坐标系的位置后,如何求解卫星的高度角.方位角. 卫星位置求解请参考之前的博客:卫星位置解算原理与程序设计 参考书籍 ...
- 基于MATLAB计算卫星位置
matlab卫星定位 认识星历文件观测文件及位置计算 星历文件 观测文件 matlab面对对象卫星位置计算 卫星高度角方位角计算(待更新...) 认识星历文件观测文件及位置计算 初学者,欢迎指正批评. ...
- 用c++根据轨道六根数计算卫星位置
轨道六根数是描述卫星轨道的一组参数,包括: 轨道长半径(a):卫星轨道的半径,表示卫星到地球中心的平均距离. 轨道偏心率(e):卫星轨道的偏心率,表示轨道的椭圆程度. 轨道倾角(i):卫星轨道与地球赤 ...
- python读取导航电文并计算卫星位置
python简单计算卫星位置 前言 一.思路 总的可分为两个部分:获取导航参数和计算卫星位置. ①获取导航参数:首先讲导航星历中的数据切片,存入csv文件中,再读取csv文件的数据并赋值给各参数 ②计 ...
最新文章
- 【USACO training】Chapter 1 入门
- Jupyter Notebook教程
- C# 给word文档添加水印
- JavaScript 刷新当前页面
- Hibernate初始化创建SessionFactory,Session,关闭SessonFactory,session
- 动易模板——制作前的准备工作
- 关于Shine-hale
- Xlua hotfix C#案例
- PhpStorm 2019 for mac(PHP集成开发工具) 2019.1.3中文激活版
- qt使用鼠标事件获取鼠标在QLabel和Ui界面中的点击位置
- IOS下localstorage不起作用提示
- vlookup函数和vlookup函数与数据有效性
- C语言练习题之函数部分
- 为什么人人都应该玩儿点儿DIY?
- SAS:数据合并简介
- matlab 果壳,万能的果壳网啊请问如何制作DNA图?万能的 – 手机爱问
- CVPR 2022|U2PL:使用不可靠伪标签的半监督语义分割
- 更换手表电池后,如何关闭压合式手表后盖--工具:两枚硬币,钳子,布或纸巾,木板
- pytorch自带网络_群友原创:万字长文入门 Pytorch 深度学习框架
- T568A标准和T568B标准
热门文章
- Java基础编程题:倒序输出九九乘法表
- 直线平面平行的判定和性质
- 《C程序设计语言》笔记 目录
- linux系统安全加固
- 【Scratch案例教学】scratch旋转风车 ​​​​scratch编程案例教学 scratch创意编程 少儿编程教案
- JAVA要不要看源码_java需要看源码吗
- 【电路设计】AD17使用及PCB绘制总结
- Windows下的发包工具xcap
- JAVA代码实现下载解析网易云音乐到本地电脑的demo示例
- mcgs组态软件中字体如果从左到右变化_在MCGS嵌入版组态软件中,可以利用大小变化来实现动画效果。( )...