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 第一次编程的总结相关推荐

  1. 利用广播星历计算卫星在ECEF下的坐标

    #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <ma ...

  2. 用Java编程卫星坐标_2 分钟掌握卫星星座图

    话不多说,助您 2 分钟掌握卫星星座图,知晓原理,并能绘制 效果 基础 什么是卫星星座? 详细科普不在本文浪费时间了,完全不懂的同学瞄一下卫星星座-百度百科就可以了. 实现 储备知识 简单解释一下所需 ...

  3. GPS卫星坐标用计算机计算,GPS卫星位置的计算

    [摘 要]针对GPS卫星导航电文的特点和里边各种参数含义及用法,阐述了利用导航电文提供的数据计算卫星位置的方法,为进行基线解算时提供准确的卫星坐标数据. 0前言 全球卫星定位系统(GPS)是一个实时的 ...

  4. 【python】利用广播星历计算BDS卫星的位置

    前言 本程序为<卫星导航定位基础>大作业之二,功能为实现对广播星历文件的读取和处理,计算出北斗卫星的位置坐标,并绘制出二维和三维的卫星位置分布图.若需要对其他类型卫星数据处理,可根据本程序 ...

  5. c语言编程gps卫星坐标计算公式,C语言计算GPS卫星位置演示教学.doc

    C语言计算GPS卫星位置演示教学.doc C语言计算GPS卫星位置1 概述在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置.卫星位置的计算是根据卫星电文所提供的轨道参 ...

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

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

  7. 计算卫星高度角、方位角

    最小二乘定权.电离层对流层改正,都需要卫星的高度角.方位角.本章将介绍求解完卫星的地固坐标系的位置后,如何求解卫星的高度角.方位角. 卫星位置求解请参考之前的博客:卫星位置解算原理与程序设计 参考书籍 ...

  8. 基于MATLAB计算卫星位置

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

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

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

  10. python读取导航电文并计算卫星位置

    python简单计算卫星位置 前言 一.思路 总的可分为两个部分:获取导航参数和计算卫星位置. ①获取导航参数:首先讲导航星历中的数据切片,存入csv文件中,再读取csv文件的数据并赋值给各参数 ②计 ...

最新文章

  1. 【USACO training】Chapter 1 入门
  2. Jupyter Notebook教程
  3. C# 给word文档添加水印
  4. JavaScript 刷新当前页面
  5. Hibernate初始化创建SessionFactory,Session,关闭SessonFactory,session
  6. 动易模板——制作前的准备工作
  7. 关于Shine-hale
  8. Xlua hotfix C#案例
  9. PhpStorm 2019 for mac(PHP集成开发工具) 2019.1.3中文激活版
  10. qt使用鼠标事件获取鼠标在QLabel和Ui界面中的点击位置
  11. IOS下localstorage不起作用提示
  12. vlookup函数和vlookup函数与数据有效性
  13. C语言练习题之函数部分
  14. 为什么人人都应该玩儿点儿DIY?
  15. SAS:数据合并简介
  16. matlab 果壳,万能的果壳网啊请问如何制作DNA图?万能的 – 手机爱问
  17. CVPR 2022|U2PL:使用不可靠伪标签的半监督语义分割
  18. 更换手表电池后,如何关闭压合式手表后盖--工具:两枚硬币,钳子,布或纸巾,木板
  19. pytorch自带网络_群友原创:万字长文入门 Pytorch 深度学习框架
  20. T568A标准和T568B标准

热门文章

  1. Java基础编程题:倒序输出九九乘法表
  2. 直线平面平行的判定和性质
  3. 《C程序设计语言》笔记 目录
  4. linux系统安全加固
  5. 【Scratch案例教学】scratch旋转风车 ​​​​scratch编程案例教学 scratch创意编程 少儿编程教案
  6. JAVA要不要看源码_java需要看源码吗
  7. 【电路设计】AD17使用及PCB绘制总结
  8. Windows下的发包工具xcap
  9. JAVA代码实现下载解析网易云音乐到本地电脑的demo示例
  10. mcgs组态软件中字体如果从左到右变化_在MCGS嵌入版组态软件中,可以利用大小变化来实现动画效果。( )...