劉智敏,黃超,竇世標(biāo),張海平,馮彥同
(1.山東科技大學(xué) 測(cè)繪學(xué)院,青島 266590;2.山東省高校海洋測(cè)繪重點(diǎn)實(shí)驗(yàn)室(山東科技大學(xué)),青島 266590;3.山東省國土測(cè)繪院,濟(jì)南 250102)
IGS產(chǎn)品批量、定時(shí)、自動(dòng)下載軟件設(shè)計(jì)與實(shí)現(xiàn)
劉智敏1,2,黃超1,竇世標(biāo)1,張海平3,馮彥同3
(1.山東科技大學(xué) 測(cè)繪學(xué)院,青島 266590;2.山東省高校海洋測(cè)繪重點(diǎn)實(shí)驗(yàn)室(山東科技大學(xué)),青島 266590;3.山東省國土測(cè)繪院,濟(jì)南 250102)
摘要:隨著全球GNSS的發(fā)展以及IGS自身的不斷完善,IGS產(chǎn)品精度不斷提高、應(yīng)用更加廣泛,廣大用戶對(duì)IGS產(chǎn)品的要求也在不斷增長,下載日益頻繁。IGS通過文件傳輸協(xié)議服務(wù)實(shí)現(xiàn)IGS產(chǎn)品的發(fā)布,人工下載步驟煩瑣,費(fèi)時(shí)費(fèi)力且容易出錯(cuò),文中利用C#語言開發(fā)了IGS產(chǎn)品的下載軟件,實(shí)現(xiàn)了相關(guān)文件的批量、定時(shí)、自動(dòng)下載,有助于減輕工作人員的負(fù)擔(dān),提高工作效率,而且能夠在文件發(fā)布后及時(shí)下載,減少錯(cuò)誤發(fā)生的概率。通過對(duì)2015年9月份不同發(fā)布周期、不同類型文件的下載,證實(shí)了本軟件進(jìn)行IGS產(chǎn)品下載的可行性。
關(guān)鍵詞:IGS產(chǎn)品;定時(shí)下載;FTP服務(wù)
0引言
隨著Internet的日益普及以及全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)的不斷發(fā)展,越來越多的GNSS信息可以從網(wǎng)上獲得,例如GNSS觀測(cè)數(shù)據(jù)以及相應(yīng)的精密星歷、廣播星歷等進(jìn)行數(shù)據(jù)處理所需的文件。這些文件有的按年更新,有的按周更新,有的按天更新,且不同的文件有不同的下載地址,人工下載步驟煩瑣,開發(fā)GNSS相關(guān)文件的批量、定時(shí)、自動(dòng)下載軟件有助于減輕工作人員的負(fù)擔(dān),提高工作效率,而且能夠在文件發(fā)布后及時(shí)下載,減少錯(cuò)誤發(fā)生的概率,在需要進(jìn)行連續(xù)處理長期數(shù)據(jù)的工作中具有重要意義。
關(guān)于GNSS文件批量下載,國內(nèi)已經(jīng)進(jìn)行了很多研究與開發(fā)。李建虎基于shell腳本實(shí)現(xiàn)了IGS站數(shù)據(jù)的自動(dòng)下載,但是shell腳本是基于Linux平臺(tái)終端下運(yùn)行,不存在可視化的界面,普通用戶使用起來存在不便[1];李峰、陽凡林等利用C#語言實(shí)現(xiàn)了Bernese5.0的GPS數(shù)據(jù)的自動(dòng)下載,該軟件主要針對(duì)Bernese5.0,普適性不強(qiáng),用戶無法重新配置獲得自己需要的其他IGS產(chǎn)品[2];為了提高IGS產(chǎn)品批量下載的自動(dòng)化程度、方便性和普適性,作者在Windows系統(tǒng)下開發(fā)了基于C#語言的IGS產(chǎn)品自動(dòng)下載軟件。
1IGS產(chǎn)品介紹
為了能夠提供最高質(zhì)量的GNSS數(shù)據(jù)和產(chǎn)品以支持地球科學(xué)研究,同時(shí)加強(qiáng)國際間的研究合作,國際大地測(cè)量協(xié)會(huì)(IAG)于1993年成立了國際地球動(dòng)力學(xué)服務(wù)機(jī)構(gòu)(IGS),于1994年1月正式運(yùn)作,1999年將名稱簡化為國際GPS服務(wù)(IGS),并于2005年3月最終改為國際GNSS服務(wù)(IGS)[3]。IGS產(chǎn)品包括各IGS跟蹤站的GNSS觀測(cè)資料,以及各IGS分析中心和協(xié)調(diào)分析中心提交的產(chǎn)品數(shù)據(jù),為大地測(cè)量和地球動(dòng)力學(xué)研究服務(wù)[4]。IGS的最終產(chǎn)品包括最終衛(wèi)星軌道/鐘差、地球自轉(zhuǎn)參數(shù)、IGS站坐標(biāo)和速度、地心變化以及對(duì)流層和電離層產(chǎn)品,這些產(chǎn)品的精度、產(chǎn)品之間的一致性和連續(xù)性是用戶進(jìn)行高精度導(dǎo)航/定位的基礎(chǔ)保障[5]。目前,IGS所產(chǎn)生的各項(xiàng)數(shù)據(jù)以及產(chǎn)品日益精確,應(yīng)用也越來越廣泛。
IGS通過文件傳輸協(xié)議(FTP)服務(wù)實(shí)現(xiàn)IGS產(chǎn)品的發(fā)布,FTP服務(wù)采用典型的客戶機(jī)和服務(wù)器(C/S)工作模式,主要功能包括兩種:文件的下載和文件的上載,本程序應(yīng)用的是FTP服務(wù)的文件下載功能。通常用戶登錄IGS服務(wù)器都采用的是Anonymous(匿名)賬戶,這類用戶在FTP服務(wù)器中沒有指定賬戶,只允許下載文件而不能上載文件,本程序使用的就是匿名的登錄方式[6]。
IGS的FTP服務(wù)器上存放著海量的GNSS觀測(cè)資料和最終產(chǎn)品,自IGS組織建立以來,GNSS相關(guān)數(shù)據(jù)的存儲(chǔ)與分發(fā)就采用了一套高效的組織方式,其文件的名稱和格式以及下載地址都具有一定的規(guī)則以方便查詢和下載[7]。表1示出了常用的GNSS文件的命名方式以及下載地址,其中$gpsweek代表4位GPS周,$dow代表1位GPS周內(nèi)天數(shù),$year代表2位年份,$doy代表3位年積日,$month代表2位月份,$station代表IGS站點(diǎn)名,文件的命名規(guī)則是程序中對(duì)文件設(shè)置和判斷的主要依據(jù)。
表1 常用的IGS產(chǎn)品的命名方式以及下載地址
2自動(dòng)下載程序設(shè)計(jì)
2.1軟件的設(shè)計(jì)流程及啟動(dòng)
本軟件的主要功能為實(shí)現(xiàn)IGS產(chǎn)品的定時(shí)下載和指定下載,下載指定目錄下的文件并對(duì)用戶輸入的地址進(jìn)行判斷,對(duì)下載失敗的文件實(shí)現(xiàn)重復(fù)下載,實(shí)現(xiàn)下載后文件的解壓及存放,最后生成當(dāng)天的下載日志,軟件的設(shè)計(jì)流程如圖1所示。
圖1 軟件設(shè)計(jì)流程圖
該軟件設(shè)計(jì)功能之一為方便用戶及時(shí)下載數(shù)據(jù),為了防止用戶啟動(dòng)計(jì)算機(jī)或者服務(wù)器后不能及時(shí)啟動(dòng)軟件導(dǎo)致文件下載失敗,同時(shí)又不影響正常工作,將軟件設(shè)置為開機(jī)自動(dòng)啟動(dòng)并自動(dòng)隱藏窗口。軟件的自動(dòng)啟動(dòng)通過修改注冊(cè)表啟動(dòng)項(xiàng)實(shí)現(xiàn),具體命令如下:
RegistryKey hklm=Registry.LocalMachine;
RegistryKey software=hklm.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");
software.SetValue("自動(dòng)下載服務(wù)",(object)AppPath);
添加開機(jī)自動(dòng)啟動(dòng)后,開啟計(jì)算機(jī)后在狀態(tài)欄就會(huì)出現(xiàn)自動(dòng)下載軟件的快速啟動(dòng)圖標(biāo),同時(shí)為快速啟動(dòng)圖標(biāo)添加停止服務(wù)、開啟服務(wù)、退出等選項(xiàng),方便用戶在不打開軟件界面的情況下快捷地執(zhí)行相應(yīng)的操作。
2.2文件的配置與存放
不同的IGS產(chǎn)品下載地址、命名格式、更新周期等各不相同,這就需要用戶根據(jù)需要對(duì)下載的文件進(jìn)行必要的了解后,分別進(jìn)行配置。由于每個(gè)文件的發(fā)布都有或多或少的延遲,用戶在配置完文件之后還要根據(jù)自身需要對(duì)數(shù)據(jù)的下載日期以及文件每天的下載時(shí)間來進(jìn)行設(shè)置。有些文件沒有嚴(yán)格規(guī)律的發(fā)布周期,進(jìn)行下載時(shí)會(huì)遇到文件還沒發(fā)布的情況,這就需要將沒能成功下載到的文件記錄到待下載列表中,進(jìn)行下一次下載時(shí)自動(dòng)讀取該列表并進(jìn)行下載。
文件下載后存放到以年積日命名的文件夾中,并自動(dòng)完成解壓,在下載大量數(shù)據(jù)時(shí),可以通過配置服務(wù)器后直接完成下載數(shù)據(jù)的入庫。
2.3下載指定日期數(shù)據(jù)
用戶安裝該軟件之后,軟件正常運(yùn)行的情況下能完成對(duì)應(yīng)日期所有文件的下載,但是軟件、計(jì)算機(jī)等運(yùn)行異常等情況下文件下載失敗,或者用戶需要一段較長時(shí)間內(nèi)所有的某種文件進(jìn)行分析,以上功能難以滿足要求。針對(duì)以上不足,增加下載指定日期文件功能,實(shí)現(xiàn)下載單天或者連續(xù)幾天的文件。
2.4生成日志文件
每天的下載任務(wù)完成后生成對(duì)應(yīng)的日志文件,文件按照下載日期對(duì)應(yīng)的年月日來命名,方便用戶更加直觀地查看對(duì)應(yīng)日期下載文件的狀態(tài)信息。
3自動(dòng)下載程序?qū)崿F(xiàn)
IGS產(chǎn)品自動(dòng)下載軟件通過C#語言編寫,開發(fā)在Visual Studio 2010下進(jìn)行,開發(fā)框架為NET Framework 4.0。C#非常適合界面的開發(fā),而且對(duì)于大批量文件的編輯、處理和存儲(chǔ)路徑的選擇擁有極為便利的方法[8]。軟件采用了程序模塊化設(shè)計(jì)的思想,每個(gè)模塊都具有高內(nèi)聚性,模塊間通過參數(shù)進(jìn)行交互,模塊化的設(shè)計(jì)降低了程序執(zhí)行出錯(cuò)率和代碼占有空間,提高了程序可靠性和代碼復(fù)用率及可維護(hù)性,延長了程序生命周期,并且能夠非常方便的對(duì)程序進(jìn)行升級(jí),軟件的主界面如圖2所示[9]。
圖2 軟件主界面
圖2示出了未進(jìn)行下載服務(wù)時(shí)的界面,此時(shí)“開始服務(wù)”的按鍵是灰色的,狀態(tài)欄顯示為“數(shù)據(jù)下載服務(wù)空閑”,當(dāng)下載進(jìn)行時(shí)狀態(tài)欄顯示為“數(shù)據(jù)下載服務(wù)正在下載數(shù)據(jù)…”,方便查看軟件運(yùn)行狀態(tài)。下載數(shù)據(jù)列表中的信息設(shè)計(jì)為用戶根據(jù)需要自主添加、編輯或者刪除。主界面右側(cè)的“添加”和“編輯”對(duì)應(yīng)下載數(shù)據(jù)設(shè)置窗體,圖3所示的即為下載精密星歷(*.sp3)時(shí)需要進(jìn)行的相關(guān)設(shè)置,文本框有多個(gè)選項(xiàng)供用戶選擇,根據(jù)IGS產(chǎn)品的命名規(guī)則,主要設(shè)置有年積日、GPS周、兩位年份、周內(nèi)天數(shù)等,每個(gè)選項(xiàng)兩側(cè)加入了“$”以便進(jìn)行區(qū)分,在進(jìn)行程序設(shè)計(jì)時(shí)通過讀取文本框中的選項(xiàng)獲得每個(gè)文件的下載地址、文件名等信息。用戶對(duì)下載數(shù)據(jù)進(jìn)行一次編輯后,數(shù)據(jù)信息都會(huì)記錄到下載數(shù)據(jù)列表“datadown”中,以后每次下載都從該數(shù)據(jù)列表進(jìn)行讀取,無需重復(fù)編輯。由于通常用戶登錄IGS服務(wù)器都采用的是匿名賬戶,所以這里用戶名和密碼無需進(jìn)行讀取,但考慮到軟件的普適性,增加了輸入用戶名和密碼的功能。
選中下載數(shù)據(jù)列表中的任意一條數(shù)據(jù)信息都可以對(duì)該信息執(zhí)行編輯或者刪除,用戶作出修改后,下載數(shù)據(jù)列表“datadown”中的信息也會(huì)相應(yīng)地修改,從而在以后的文件下載中按照用戶修改后的設(shè)置執(zhí)行。
圖3 編輯下載數(shù)據(jù)窗體
不同的IGS產(chǎn)品更新周期不同,都有或多或少的延后,例如,IGS及其分析中心提供的高精度衛(wèi)星鐘差改正信息一般要13天后才能獲取[10]。用戶在進(jìn)行不同的數(shù)據(jù)處理時(shí)所需要的準(zhǔn)備文件也不同,用戶可以根據(jù)解算需要靈活設(shè)置下載數(shù)據(jù)的日期和每天的數(shù)據(jù)下載時(shí)間,例如,如圖2所示,主界面設(shè)置的為下載7天前的數(shù)據(jù),軟件運(yùn)行時(shí)就會(huì)將當(dāng)前日期減去7得到所需下載數(shù)據(jù)對(duì)應(yīng)的日期,在程序中再轉(zhuǎn)換為相應(yīng)的年份、年積日、GPS周等信息。當(dāng)天的下載任務(wù)完成后可能會(huì)存在下載失敗的情況,往往是由于網(wǎng)絡(luò)狀況不好或者當(dāng)天的文件并沒有發(fā)布等原因造成,此時(shí)將下載失敗的文件信息保存到數(shù)據(jù)列表“waitdown”中,這樣在進(jìn)行下一次的數(shù)據(jù)下載時(shí)首先嘗試下載前一天沒成功下載的數(shù)據(jù),如果下載完成,則從待下載表“waitdown”中刪除,否則下一次繼續(xù)下載。有些IGS站的數(shù)據(jù)由于某些特殊原因缺少某天或幾天的數(shù)據(jù),使得程序無法完成對(duì)這些文件的下載,這類連續(xù)下載多次都沒有成功的文件將從待下載列表“waitdown”中刪除[1]。此外,準(zhǔn)備文件中有一部分文件是每天更新的而有些文件更新周期較長,例如,地球自轉(zhuǎn)參數(shù)文件(*.erp)為每周更新,差分碼偏差(*.DCB)為每月更新,軟件為每天執(zhí)行一次,此類文件如果每天下載必然會(huì)造成重復(fù)而且影響下載的效率,用戶只需在進(jìn)行下載數(shù)據(jù)設(shè)置時(shí)根據(jù)文件的發(fā)布周期設(shè)置下載周期,保證在每個(gè)發(fā)布周期內(nèi)只下載一次[11]。
2.3中已經(jīng)介紹,為了增加軟件的靈活性,在程序設(shè)計(jì)時(shí)增加了下載指定日期數(shù)據(jù)的功能,此時(shí)用戶可以使用主界面的“下載指定日期數(shù)據(jù)”,根據(jù)用戶選擇的日期立刻完成主界面下載數(shù)據(jù)列表中對(duì)應(yīng)文件的下載,文件存放于當(dāng)前路徑下以年積日命名的文件夾中并完成解壓。
4下載實(shí)例
為了對(duì)軟件的運(yùn)行情況進(jìn)行測(cè)試,對(duì)2015年9月份表1中列出的文件進(jìn)行了下載實(shí)驗(yàn),其中包括了bjfs、chan、daej、shao、suwn、wuhn共6個(gè)IGS站的實(shí)測(cè)數(shù)據(jù),下載13個(gè)文件。程序中固定設(shè)置,按周更新的文件在每周的周日下載上周數(shù)據(jù),按月更新的文件在下個(gè)月的“第一天”下載上月數(shù)據(jù);界面設(shè)置為每天的18點(diǎn)定時(shí)下載15天前的數(shù)據(jù)。
由于下載天數(shù)較多,選擇有代表性的兩天2015年9月16日和9月21日的結(jié)果來進(jìn)行檢驗(yàn),圖4示出了下載日志,下載的文件所對(duì)應(yīng)日期分別為2015年9月1日和9月6日。從下載日志中可以看出:9月1日完成了按月發(fā)布文件(*.DCB)的下載,9月6日(周天)完成了按周發(fā)布文件的下載(*.erp);這兩天shao、suwn和wuhn三個(gè)IGS站的觀測(cè)數(shù)據(jù)部分沒有成功下載,手動(dòng)登錄后發(fā)現(xiàn)是由于文件沒有公布;圖5中前面的多行信息是之前幾天沒有下載成功,從待下載列表“waitdown”中讀取后重新下載的文件信息,下載失敗也是由于IGS站的觀測(cè)文件沒有公布導(dǎo)致。
圖4 2015年9月16日下載日志和 2015年9月22日下載日志
5結(jié)束語
針對(duì)傳統(tǒng)IGS產(chǎn)品下載方式操作繁瑣且效率低下的缺點(diǎn),以及目前已有下載方法的不足,在Windows操作系統(tǒng)下,利用C#語言,根據(jù)IGS產(chǎn)品在FTP服務(wù)器上存放的規(guī)律性,設(shè)計(jì)完成了IGS產(chǎn)品的批量、自動(dòng)、定時(shí)下載軟件。軟件適合下載需要連續(xù)且及時(shí)更新的文件,在一次設(shè)置之后不需再進(jìn)行任何操作,可以為CORS數(shù)據(jù)處理中心等部門提供相關(guān)服務(wù)。軟件界面快捷、便于用戶操作,可以減少相關(guān)人員的工作量和失誤率,同時(shí)考慮了多種用戶的需要,功能靈活,具有很強(qiáng)的普適性和擴(kuò)展性。
IGS產(chǎn)品自動(dòng)下載軟件實(shí)現(xiàn)了文件的批量、自動(dòng)、定時(shí)下載,但是要成為一個(gè)功能全面的工具還有很多功能需要完善,例如,對(duì)于不同文件每個(gè)周期內(nèi)的下載時(shí)間還沒有實(shí)現(xiàn)用戶自定義,文件下載失敗原因沒能在日志中體現(xiàn)出來,需要在后續(xù)工作中不斷改進(jìn)。
參考文獻(xiàn)
[1] 李建虎.Shell程序自動(dòng)下載IGS站數(shù)據(jù)的實(shí)現(xiàn)[J].測(cè)繪信息與工程,2009,34(1):9-11.
[2] 李峰,陽凡林,李云偉,等.基于Bernese5.0的GPS數(shù)據(jù)的自動(dòng)下載與處理[J].礦山測(cè)量,2010(6):27-30.
[3] DOW J M,NEILAN R E,RIZOS C. The international GNSS service in a changing landscape of global navigation satellite systems[J].Journal of Geodesy,2009,83(3):191-198.
[4] 李征航,黃勁松.GPS測(cè)量與數(shù)據(jù)處理[M].2版.武漢:武漢大學(xué)出版社,2010.
[5] 魏娜,施闖,李敏,等.IGS產(chǎn)品的一致性分析及評(píng)價(jià)[J].武漢大學(xué)學(xué)報(bào)·信息科學(xué)版,2010,34(11):1363-1367.
[6] 朱琳,張慧君,李孝輝.基于Lab Windows/CVI的IGS實(shí)時(shí)數(shù)據(jù)自動(dòng)下載軟件開發(fā)[J].宇航計(jì)測(cè)技術(shù),2012,32(3):25-30.
[7] 匡翠林,謝榮安,王艷濤,等.IGS數(shù)據(jù)批量自動(dòng)下載軟件設(shè)計(jì)與實(shí)現(xiàn)[J].工程勘察,2013(7):72-75.
[8] 張凱華,郭金運(yùn),胡志博,等.Fortran與C#混合編程在衛(wèi)星測(cè)高中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(5):48-52.
[9] 周峰,王征,李永.C#典型模塊開發(fā)[M].北京:中國鐵道出版社,2010.
[10]潘紹林,張顯云,杜寧,等.基于灰色系統(tǒng)模型的IGS精密鐘差預(yù)報(bào)[J].測(cè)繪工程,2015,24(4):20-24.
[11]蔣澤斌,陳義.基于Bash的GAMIT準(zhǔn)備文件自動(dòng)下載[J].測(cè)繪與空間地理信息,2014,37(11):50-52.
劉智敏(1975-) 女,河北唐山人,博士,副教授,主要從事GNSS定位理論技術(shù)及其應(yīng)用。
黃超(1991-) 男,山東濰坊人,碩士生,主要從事GNSS數(shù)據(jù)處理研究。
竇世標(biāo)(1990-) 男,山東菏澤人,碩士生,主要從事GNSS數(shù)據(jù)處理研究。
張海平(1977-) 男,山東五蓮人,主要從事CORS管理工作。
馮彥同(1986-) 男,碩士生,主要從事網(wǎng)絡(luò)RTK算法、GNSS數(shù)據(jù)處理及其理論研究。
Software Design and Implementation for IGS Products Batch, Timing and Automatic Download
LIU Zhimin1,2,HUANG Chao1,DOU Shibiao1,ZHANG Haiping3,FENG Yantong3
(1.GeomaticsCollege,ShandongUniversityofScienceandTechnology,Qingdao266590,China;2.KeyLaboratoryofGeomaticsandDigitalTechnology,Qingdao266590,China;3.ShandongProvincialInstituteofLandSurveyingandMapping,2301JingshiRoad,Jinan250102,China)
Abstract: With the development of GNSS and the continuous improvement of IGS, IGS products are more precise and widely used. Users’ requirements are also growing, and downloading GNSS products happened frequently. IGS via File Transfer Protocol service release their products. Artificial download is cumbersome, time-consuming and error-prone. In this paper, a software is designed to download products of IGS by using C#, achieving batch timing and automatic downloading. It helps to reduce the burden of the staff, improve work efficiency, download the file timely and reduce the probability of errors occurring. By successfully downloading files of different types and cycles that released in September 2015, it can be confirmed the feasibility of this software on downloading IGS products.
Keywords:IGS products; timing download; FTP service
doi:10.13442/j.gnss.1008-9268.2016.02.022
收稿日期:2015-11-03
中圖分類號(hào):P228.4
文獻(xiàn)標(biāo)志碼:B
文章編號(hào):1008-9268(2016)02-0110-05
作者簡介
資助項(xiàng)目: 國家自然科學(xué)基金(批準(zhǔn)號(hào):41374009); 青島博士后基金(基于CORS的精密定位算法關(guān)鍵問題研究); 山東省高校海洋測(cè)繪重點(diǎn)實(shí)驗(yàn)室開放基金(編號(hào):2013B04)
聯(lián)系人: 黃超 E-mail: ch_huangchao@163.com