何大林,孫高文,韓偉
轉發(fā)式測定軌系統(tǒng)衛(wèi)星地面站觀測數(shù)據(jù)質(zhì)量分析及可視化
何大林,孫高文,韓偉
(中國科學院 新疆天文臺,烏魯木齊 830011)
在轉發(fā)式的衛(wèi)星測定軌系統(tǒng)中,衛(wèi)星地面觀測站是其重要組成部分,每天不間斷產(chǎn)生大量高精度測距數(shù)據(jù)、氣象數(shù)據(jù)、時間同步等測量數(shù)據(jù),這些數(shù)據(jù)是實現(xiàn)衛(wèi)星精密測定軌的基礎。因此,地面觀測站的數(shù)據(jù)質(zhì)量及其可視化顯得尤其重要,基于此目的,采用Unix時間戳算法及vector迭代器技術,利用C++ Builder開發(fā)一套對衛(wèi)星地面站觀測數(shù)據(jù)質(zhì)量分析及其可視化的系統(tǒng)。在實際應用中表明:此套系統(tǒng)能有效統(tǒng)計、初步篩選數(shù)據(jù),發(fā)現(xiàn)在觀測過程中的數(shù)據(jù)質(zhì)量、驗證數(shù)據(jù)記錄時存在的問題,更直觀地反應各個天線系統(tǒng)的運行情況,提高了觀測系統(tǒng)及設備故障排除和維護的效率。
衛(wèi)星地面站;轉發(fā)式測定軌;Unix時間戳;Vector迭代器;可視化
世界上現(xiàn)有的四大衛(wèi)星導航系統(tǒng)分別是美國的GPS,俄羅斯的GLONASS,中國的BDS和歐盟的Galileo[1]。而轉發(fā)式衛(wèi)星導航系統(tǒng)不同于他們,高精度的原子鐘裝置在地面站,其利用位于地球同步軌道的現(xiàn)有在軌通信衛(wèi)星上的轉發(fā)器,把地面站產(chǎn)生的時間信號、軌道參數(shù)等導航電文及測距碼由地面站天線上行發(fā)射至衛(wèi)星,經(jīng)衛(wèi)星轉發(fā)器轉發(fā),再下行廣播給用戶[2],這樣用戶接收機接收到轉發(fā)的導航信息后就可以進行導航、定位、測速和授時。這樣做不僅繞過了星載原子鐘的技術限制,而且能夠提高導航定位的精度,所以地面站在轉發(fā)式衛(wèi)星導航系統(tǒng)占有舉足輕重的作用。
目前轉發(fā)式測定軌系統(tǒng)共有6個地面站,21套天線觀測系統(tǒng)[3]。這些系統(tǒng)分別接收不同站點或同一站點不同天線發(fā)射的信號,并測量時延信息。此外,同時被采集的數(shù)據(jù)還包括各個站點的鐘差數(shù)據(jù)、溫度、濕度、風向和氣壓等氣象數(shù)據(jù)[4]。通常,由于存在著設備故障、儀器調(diào)試、系統(tǒng)異常等不同的情況,導致很多被記錄的數(shù)據(jù)并不能被加以利用。對于轉發(fā)式測定軌系統(tǒng)而言,解算某一時刻觀測目標的位置信息需要依賴于多個站點的測距信息、鐘差數(shù)據(jù)和氣象數(shù)據(jù)[5]。在后期數(shù)據(jù)處理方面,這些錯誤數(shù)據(jù)將嚴重影響解算結果和效率。因此,對各類觀測數(shù)據(jù)進行采集、分析、統(tǒng)計處理等,是整體研究過程中十分重要的工作,為此,編寫一套數(shù)據(jù)質(zhì)量分析及可視化系統(tǒng)用來分析某一時間段內(nèi)、某個觀測系統(tǒng)的有效數(shù)據(jù),通過有效統(tǒng)計,進行初步篩選,便于發(fā)現(xiàn)在觀測過程中的數(shù)據(jù)質(zhì)量,驗證數(shù)據(jù)記錄時存在的問題,可視化后更加直觀地反應每一天各個天線的運行情況,提高數(shù)據(jù)有效率,方便以后的計算以及觀測系統(tǒng)和設備故障排查等各種運行維護工作。
Unix時間戳又被稱作是Unix epoch或POSIX time。Unix時間戳的計算是從1970年1月1日0時開始到現(xiàn)在所經(jīng)過的所有的秒數(shù),包括UTC的午夜和GMT的午夜,值得注意的是,我們在計算Unix時間戳的時候是不考慮閏秒的。Unix時間戳是根據(jù)國際體系ISO 8601規(guī)范中的1970-01-01 T 00:00:00 Z進行計算的。在大多數(shù)情況下,Unix時間戳把時間儲存為32位。
在Unix時間計算方法中,1 min用Unix時間戳的格式進行表達的話是60 s,不考慮閏秒,1 h用Unix時間戳的格式進行表達的話,表示為3 600 s,不考慮閏秒。1 d用Unix時間戳的格式表示的話是86 400 s,同樣地,閏秒是不在計算范圍之內(nèi)的。1周用Unix時間戳的格式進行表達的話是604 800 s,也是不考慮閏秒。1個月(30.44d)用Unix時間戳的格式進行表達的話是2629 743 s,也是不考慮閏秒的。1 a(365.24 d)用Unix時間戳的格式進行表達的話是31556 926 s,同樣地,也是不考慮閏秒的[6]。
Unix時間戳在運用時有很多方便的地方,不用考慮年、月、日等周期長短問題,利用struct tm結構體和localtime,mktime等函數(shù)可以很好的在時間戳之間轉換,但是也存在很多不方便的地方,比如說互相轉換的代碼過多,很多時候會出現(xiàn)冗贅,為簡便代碼編寫,在很多地方可以利用C++ Builder自帶的時間處理函數(shù)TDateTime。在利用TDataTime函數(shù)時每秒所增加的二分之一秒量為(1/86 400)×0.5,如圖1所示,數(shù)據(jù)在連續(xù)增加到一定程度的時候就會出現(xiàn)跳秒現(xiàn)象,這是因為TDataTime函數(shù)返回的實際是double型的數(shù)據(jù),由于計算機對雙精度浮點型數(shù)據(jù)的有限長度處理導致了這樣現(xiàn)象的產(chǎn)生,而struct tm機構體及time-t類型數(shù)據(jù)是long型,能夠避免計算機有限長度計算的問題,從而解決數(shù)據(jù)不均勻時間間隔的問題。
圖1 Unix時間戳處理實際效果圖
C++容器主要分為兩大類:順序容器和關聯(lián)容器。順序容器有:vector,list,deque和string等,是一系列元素的有序集合。關聯(lián)容器:set,multiset,map,multimap等,包含查找元素的鍵值;迭代器的作用是遍歷容器。
vector向量容器不但能像數(shù)組一樣對元素進行隨機訪問,還能在尾部插入元素,是一種簡單,高效的容器,完全可以代替數(shù)組。
值得注意的是vector容器具有自動管理的功能,對于元素的插入和刪除,可動態(tài)調(diào)整所占的內(nèi)存空間;使用vector向量容器,需要包含頭文件#include
vector容器的下標是從0開始計數(shù)的,也就是說,如果vector容器的大小是,那么元素的下標是從0~-1;對于vector容器的容量定義,可以實現(xiàn)定義一個固定的大小,事后,可以隨時調(diào)整大小,也可以事先不定義,隨時使用push_back()方法從尾部擴張元素,也可以使用insert()在某個元素位置前插入新元素。
vector容器有兩種重要的方法,begin()和end()。begin()返回的是首元素位置的迭代器;end()返回的是最后一個元素的下一元素位置的迭代器[7]。
創(chuàng)建vector對象,有3種形式:
①不指定容器的元素個數(shù),如定義一個用來存儲整型的容器:vector
②創(chuàng)建時,指定容器的大小,如定義一個用來存儲10個double類型元素的向量容器:vector
③創(chuàng)建一個具有個元素的向量容器對象,每個元素具有指定的初始值;例如vector
目前轉發(fā)式測定軌衛(wèi)星地面站觀測到的數(shù)據(jù)常出現(xiàn)的錯誤主要有以下4大類:①采集軟件記錄數(shù)據(jù)為空;②數(shù)據(jù)采集內(nèi)容重復;③數(shù)據(jù)量記錄異常;④數(shù)據(jù)采集為0。
數(shù)據(jù)的存儲及文件的存儲都是根據(jù)時間流保存,這方面的處理辦法較多,包括TDataTime,Linux時間戳等,其中TDataTime為C++ Builder自帶的一種時間流處理辦法,使用非常方便,對其處理繼承了很多的處理函數(shù)。但是由于TDataTime處理的時間單位在整數(shù)上都是按照day這樣的整天數(shù)為基數(shù),每天中就有很多1/86 400,在測試中秒連加等相關處理就會由于計算機精度的不同存在跳秒的現(xiàn)象。所以時間處理過程中是利用以整秒為單位的Linux時間戳的處理辦法,在年月日的換算過程中利用了tm結構體的自動轉換。需要注意的是由于沒有辦法給tm結構體中的成員全部賦值初始化(結構體中成員的關聯(lián)性),所以在初始化時使用了struct tm A={0}這樣的辦法,初始化完成后再進行賦值轉換,否則就會出現(xiàn)不規(guī)則的轉換。圖2為算法流程圖。
圖2 算法流程圖
此外,本系統(tǒng)還增加了服務器數(shù)據(jù)備份功能。由于數(shù)據(jù)量大并且多,一方面在時間算法中重復計算年月日等內(nèi)容嚴重影響了對數(shù)據(jù)本身的解算速度,另一方面如果用鏈表法解算也嚴重影響運算速度,對提高工作效率有限。為解決此問題,采用上文介紹的Unix時間戳算法及Vector迭代器的技術,以便在數(shù)據(jù)循環(huán)計算中提高統(tǒng)計工作效率及準確性。
部分源代碼如下:
數(shù)據(jù)篩選的判斷
if(Edit3->Text=="0")
star_ID="???";
else
star_ID=Edit3->Text;
單個站點數(shù)據(jù)文件的處理過程
for(int temp_site=0; temp_site { AnsiString site_name=Memo1->Lines->Strings[temp_site]; Memo2->Clear (); 建立TChart圖表[8] TPointSeries *series_x1=new TPointSeries (XH_tchart1); TPointSeries *series_d1=new TPointSeries (DH_tchart1); TPointSeries *series_x2=new TPointSeries (XH_tchart2); TPointSeries *series_d2=new TPointSeries (DH_tchart2); TPointSeries *series_x3=new TPointSeries (XH_tchart3); TPointSeries *series_d3=new TPointSeries (DH_tchart3); …… 單個文件的鏈表搜索起點,每個文件的間隔秒數(shù)為1 800 s。 for( int temp_long_time=start_long_time; temp_long_time temp_long_time=temp_long_time+1800) { if(Pro_int==10) Pro_int=0; else Pro_int=Pro_int+1; …… 在程序開發(fā)中由于存在數(shù)據(jù)的備份,利用NMFTP控件,在文件整體下載方面存在遞歸過程[9],代碼如下: if(DIR_TEMP[cc]=="-"&&FileExists(localdir+"\"+temp_ansif[cc])==false) { ListBox1->Items->Add(temp_ansif[cc]+"正在下載…"); NMFTP1->Download("/"+romedir+"/"+temp_ansif[cc], localdir+"\"+temp_ansif[cc]); ListBox1->Items->Add(temp_ansif[cc]+"下載完畢!"); ListBox1->ItemIndex=ListBox1->Items->Count-1; } else { //遞歸函數(shù),作用是如果是文件夾進入下一級繼續(xù)判斷文件,如果是文件繼續(xù)下載。 temp_source(NMFTP1,RemoteDir,LocalDir,ListBox1); } …… 在實際分析過程中,利用Unix時間戳算法和Vector迭代器技術,能夠避免計算機有限長度計算的問題,解決了數(shù)據(jù)不均勻時間間隔的問題。基于前文的分析,編制軟件,并在每臺數(shù)據(jù)采集計算機上安裝,對采集數(shù)據(jù)(一般24h作為一周期)進行處理。圖3是整個分析系統(tǒng)主界面,可以選擇相關參數(shù)進行設置。 圖3 分析評估軟件主界面 我們利用5號站點I1系統(tǒng)所接收的C01和Z04兩顆衛(wèi)星在2015年4月9日00時至4月10日23時2 d的數(shù)據(jù)進行測試,得到結果和報告,如圖4至圖7所示。 圖4 3個通道有效數(shù)據(jù)總量 圖5 一通道測衛(wèi)星環(huán)路數(shù)據(jù) 圖6 一通道內(nèi)部時延環(huán)路數(shù)據(jù) 圖7 數(shù)據(jù)總體分析 從5號站點I1系統(tǒng)2015年4月9日00時至4月10日23時實際結果可以看出,在有效觀測時間內(nèi)沒用空數(shù)據(jù),小環(huán)(內(nèi)部時延環(huán)路)有些溢出結果與大環(huán)(衛(wèi)星環(huán)路)相當,但是觀測時間只有大環(huán)1/5,說明此環(huán)路衰減過小,結合大環(huán)綜合考慮,需要在此環(huán)路設備接口接入衰減器或者調(diào)整軟件衰減值,大環(huán)數(shù)據(jù)比較平穩(wěn),總體數(shù)據(jù)質(zhì)量良好,由于篇幅有限其他監(jiān)測不一一列舉。 測試結果表明此套轉發(fā)式測定軌系統(tǒng)地面觀測站數(shù)據(jù)質(zhì)量分析及其可視化系統(tǒng)簡單實用,實時性強,界面友好,能夠對測定軌系統(tǒng)地面基站所有天線系統(tǒng)任意時段的有效數(shù)據(jù)進行統(tǒng)計;能夠驗證數(shù)據(jù)中存在的空、重復、無記錄與超出范圍錯誤,并精確定位錯誤出處;能夠對服務器數(shù)據(jù)進行備份。解決了影響后期數(shù)據(jù)解算結果和效率的問題??梢暬蟾庇^反映了每套天線系統(tǒng)運行情況,可以為快速排查天線系統(tǒng)故障和系統(tǒng)維護工作提供依據(jù),提高工作效率。 [1] 施滸立, 孫希延, 李志剛. 轉發(fā)式衛(wèi)星導航原理[M]. 北京: 科學出版社, 2009. [2] 黃承強. 轉發(fā)式衛(wèi)星測軌地面站設備時延標定方法[D]. 北京: 中科院科學院大學, 2015. [3] 曹芬. 基于轉發(fā)測距數(shù)據(jù)的GEO導航衛(wèi)星轉發(fā)式定軌方法研究[D]. 北京: 中國科學院大學, 2014. [4] 李志剛, 楊旭海, 施滸立, 等. 轉發(fā)器式衛(wèi)星軌道測定新方法[J]. 中國科學G輯: 物理學 力學 天文學, 2008, 38(12): 1711-1722. [5] 李志剛, 楊旭海, 李偉超, 等. 轉發(fā)器式衛(wèi)星測軌方法[J]. 時問頻率學報, 2006, 29(2): 81-89. [6] 孫勝. unix時間戳是什么[EB/OL]. (2015-11-04)[2017-03-20]. http://www.xuexila.com/diannao/weihu/taishiji/310303.html. [7] Istvh. C++容器: 順序容器, 關聯(lián)容器[EB/OL]. (2009-09-29)[2017-03-11]. http://blog.chinaunix.net/uid-22002972-id-1805606.html. [8] 陸衛(wèi)忠, 劉文亮. C++ Builder 6程序設計教程[M]. 2版. 北京: 科學出版社, 2005. [9] 余昌盛, 汪曉平, 權毓舒. C++ Builder 6數(shù)據(jù)庫系統(tǒng)開發(fā)實例導航[M]. 北京: 人民郵電出版社, 2003. Quality analysis and visualization for observation data of orbit determination stations by transfer tracking system HE Da-lin, SUN Gao-wen, HAN Wei (Xinjiang Astronomical Observatory, Chinese Academy of Sciences, Urumqi 830011, China) Satellite ground observation stations are important parts in the system of orbit determination by transfer tracking, they produce a large number of high precision ranging, meteorological and time synchronous measuring data every day, which are the basis for the realization of satellite orbit determination. Therefore, the quality and integrity of the observational data are of particularly importance. A quality analysis and visualization system was developed based on Unix timestamp and Vector iterator technique by using C++ builder. The practical application has shown that this system can be able to give effective statistics and preliminary filtering for observing data, to detect the problem of data quality in the process of observation and to verify the problem of data records. It can reveal the operation of each antenna system visually and improve the efficiency of the observation system and troubleshooting and maintenance of equipment. satellite ground station; orbit determination by transfer tracking; Unix timestamp; vector iterator; visualization TN927+.21 A 1674-0637(2017)04-0251-09 10.13875/j.issn.1674-0637.2017-04-0251-09 2017-04-18 中國科學院精密導航定位與定時技術重點實驗室開放課題 何大林,男,工程師,主要從事衛(wèi)星導航數(shù)據(jù)處理及脈沖星計時相關研究。3 實際結果
4 結論