分别用精密星历和广播星历计算卫星坐标 -- 对 GNSS 第一次编程的总结
2019/9/24
最近上GNSS 課,老師布置了編寫(xiě)讀取廣播星歷和精密星歷來(lái)計(jì)算衛(wèi)星坐標(biāo)的作業(yè),這篇文章對(duì)其進(jìn)行一個(gè)簡(jiǎn)單的總結(jié)。
星歷下載:https://blog.csdn.net/Gou_Hailong/article/details/100809806
一、用到的知識(shí)點(diǎn)
1、旋轉(zhuǎn)矩陣
百度百科
2、拉格朗日插值
百度百科
3、RINEX 也就是廣播星歷的數(shù)據(jù)格式
參考博客
4、SP3
(圖片來(lái)源于百度文庫(kù))
參考博客
二、要注意的問(wèn)題
1、用 actan2 函數(shù)
2、XXDXX字符串轉(zhuǎn)double 用函數(shù)
double st2d(char *str) { //將"aDb"格式數(shù)字轉(zhuǎn)換為doubledouble f;char *pEnd;f = strtod(str, &pEnd);f *= pow(10, strtod(pEnd + 1, NULL));return f; }3、截取子串的函數(shù)
char st[85] = "";//求子串用到 char *substr(char *buf, int pos, int len) { //求子串memset(st, '\0', sizeof(st));return strncpy(st, buf + pos, len); }4、調(diào)試過(guò)程中如果出現(xiàn) stack overflow 問(wèn)題,
解決方案:屬性->鏈接器->系統(tǒng)->堆棧保留大小 改的大一些
5、調(diào)用 strcpy、strcat 等函數(shù)時(shí)會(huì)提示 _CRT_SECURE_NO_WARNINGS 警告,原因是這些函數(shù)不安全,可能會(huì)造成內(nèi)存泄露等。
解決方案1:
在頭部加宏定義:
解決方案2:
在項(xiàng)目 -> 屬性 -> C/C++ -> 預(yù)處理器 -> 預(yù)處理器定中添加 _CRT_SECURE_NO_WARNINGS 這個(gè)預(yù)定義。
2020/5/12
應(yīng)某些朋友的請(qǐng)求,終于抽出時(shí)間來(lái)介紹自己當(dāng)時(shí)所做的工作,詳見(jiàn)如下:
三、算法原理
由于時(shí)間太久,再看代碼的話(huà),不免有些生疏(我是誰(shuí),我在哪,這是我寫(xiě)的嗎?)還好教材比較詳細(xì),就不費(fèi)功夫自己整理遼。
總結(jié):用廣播星歷計(jì)算衛(wèi)星位置比較復(fù)雜,用精密星歷計(jì)算衛(wèi)星位置就用到了拉格朗日內(nèi)插而已。
聲明:上圖出自教材《GPS測(cè)量與數(shù)據(jù)處理》(李征航 黃勁松 編著 第三版)武漢大學(xué)出版社 P75始 此圖出于方便自己和他人學(xué)習(xí)查閱之目的,如有侵權(quán),請(qǐng)聯(lián)系作者刪除!
四、源碼簡(jiǎn)介
當(dāng)時(shí)在完成編程作業(yè)的時(shí)候用的是C語(yǔ)言,后來(lái)學(xué)了fortran 感覺(jué)星歷文件就是設(shè)計(jì)的用fortran 讀的。所以,最近又寫(xiě)了fortran 的版本(沒(méi)寫(xiě)完)
1.C語(yǔ)言版本
程序結(jié)構(gòu)框架:
此程序自帶了算例文件(路徑data/8.28)是2019/8/28日的廣播星歷和精密星歷文件。程序輸出(路徑data/out)
輸出文件可用matlab 等軟件進(jìn)行繪圖。
廣播星歷結(jié)構(gòu)體:
精密星歷結(jié)構(gòu)體:
感興趣的朋友可以下載:
https://download.csdn.net/download/Gou_Hailong/12413077
勞動(dòng)所得,賺點(diǎn)積分嘛。(無(wú)積分者接受有償提供源碼,嘿嘿嘿)如果使用中遇到問(wèn)題歡迎私信我或聯(lián)系我的qq,但是我水平有限,可能解決不了您的問(wèn)題,但是我會(huì)盡力的!
值得注意的一點(diǎn)是:此程序要配置Egien 庫(kù):
1.Fortran版本(只實(shí)現(xiàn)了讀文件)
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總結(jié)
以上是生活随笔為你收集整理的分别用精密星历和广播星历计算卫星坐标 -- 对 GNSS 第一次编程的总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端学习(2155):htmlwebpa
- 下一篇: 工作33:page值不能修改