劉智敏,黃超,竇世標,張海平,馮彥同
(1.山東科技大學 測繪學院,青島 266590;2.山東省高校海洋測繪重點實驗室(山東科技大學),青島 266590;3.山東省國土測繪院,濟南 250102)
IGS產品批量、定時、自動下載軟件設計與實現
劉智敏1,2,黃超1,竇世標1,張海平3,馮彥同3
(1.山東科技大學 測繪學院,青島 266590;2.山東省高校海洋測繪重點實驗室(山東科技大學),青島 266590;3.山東省國土測繪院,濟南 250102)
摘要:隨著全球GNSS的發展以及IGS自身的不斷完善,IGS產品精度不斷提高、應用更加廣泛,廣大用戶對IGS產品的要求也在不斷增長,下載日益頻繁。IGS通過文件傳輸協議服務實現IGS產品的發布,人工下載步驟煩瑣,費時費力且容易出錯,文中利用C#語言開發了IGS產品的下載軟件,實現了相關文件的批量、定時、自動下載,有助于減輕工作人員的負擔,提高工作效率,而且能夠在文件發布后及時下載,減少錯誤發生的概率。通過對2015年9月份不同發布周期、不同類型文件的下載,證實了本軟件進行IGS產品下載的可行性。
關鍵詞:IGS產品;定時下載;FTP服務
0引言
隨著Internet的日益普及以及全球導航衛星系統(GNSS)的不斷發展,越來越多的GNSS信息可以從網上獲得,例如GNSS觀測數據以及相應的精密星歷、廣播星歷等進行數據處理所需的文件。這些文件有的按年更新,有的按周更新,有的按天更新,且不同的文件有不同的下載地址,人工下載步驟煩瑣,開發GNSS相關文件的批量、定時、自動下載軟件有助于減輕工作人員的負擔,提高工作效率,而且能夠在文件發布后及時下載,減少錯誤發生的概率,在需要進行連續處理長期數據的工作中具有重要意義。
關于GNSS文件批量下載,國內已經進行了很多研究與開發。李建虎基于shell腳本實現了IGS站數據的自動下載,但是shell腳本是基于Linux平臺終端下運行,不存在可視化的界面,普通用戶使用起來存在不便[1];李峰、陽凡林等利用C#語言實現了Bernese5.0的GPS數據的自動下載,該軟件主要針對Bernese5.0,普適性不強,用戶無法重新配置獲得自己需要的其他IGS產品[2];為了提高IGS產品批量下載的自動化程度、方便性和普適性,作者在Windows系統下開發了基于C#語言的IGS產品自動下載軟件。
1IGS產品介紹
為了能夠提供最高質量的GNSS數據和產品以支持地球科學研究,同時加強國際間的研究合作,國際大地測量協會(IAG)于1993年成立了國際地球動力學服務機構(IGS),于1994年1月正式運作,1999年將名稱簡化為國際GPS服務(IGS),并于2005年3月最終改為國際GNSS服務(IGS)[3]。IGS產品包括各IGS跟蹤站的GNSS觀測資料,以及各IGS分析中心和協調分析中心提交的產品數據,為大地測量和地球動力學研究服務[4]。IGS的最終產品包括最終衛星軌道/鐘差、地球自轉參數、IGS站坐標和速度、地心變化以及對流層和電離層產品,這些產品的精度、產品之間的一致性和連續性是用戶進行高精度導航/定位的基礎保障[5]。目前,IGS所產生的各項數據以及產品日益精確,應用也越來越廣泛。
IGS通過文件傳輸協議(FTP)服務實現IGS產品的發布,FTP服務采用典型的客戶機和服務器(C/S)工作模式,主要功能包括兩種:文件的下載和文件的上載,本程序應用的是FTP服務的文件下載功能。通常用戶登錄IGS服務器都采用的是Anonymous(匿名)賬戶,這類用戶在FTP服務器中沒有指定賬戶,只允許下載文件而不能上載文件,本程序使用的就是匿名的登錄方式[6]。
IGS的FTP服務器上存放著海量的GNSS觀測資料和最終產品,自IGS組織建立以來,GNSS相關數據的存儲與分發就采用了一套高效的組織方式,其文件的名稱和格式以及下載地址都具有一定的規則以方便查詢和下載[7]。表1示出了常用的GNSS文件的命名方式以及下載地址,其中$gpsweek代表4位GPS周,$dow代表1位GPS周內天數,$year代表2位年份,$doy代表3位年積日,$month代表2位月份,$station代表IGS站點名,文件的命名規則是程序中對文件設置和判斷的主要依據。

表1 常用的IGS產品的命名方式以及下載地址
2自動下載程序設計
2.1軟件的設計流程及啟動
本軟件的主要功能為實現IGS產品的定時下載和指定下載,下載指定目錄下的文件并對用戶輸入的地址進行判斷,對下載失敗的文件實現重復下載,實現下載后文件的解壓及存放,最后生成當天的下載日志,軟件的設計流程如圖1所示。

圖1 軟件設計流程圖
該軟件設計功能之一為方便用戶及時下載數據,為了防止用戶啟動計算機或者服務器后不能及時啟動軟件導致文件下載失敗,同時又不影響正常工作,將軟件設置為開機自動啟動并自動隱藏窗口。軟件的自動啟動通過修改注冊表啟動項實現,具體命令如下:
RegistryKey hklm=Registry.LocalMachine;
RegistryKey software=hklm.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");
software.SetValue("自動下載服務",(object)AppPath);
添加開機自動啟動后,開啟計算機后在狀態欄就會出現自動下載軟件的快速啟動圖標,同時為快速啟動圖標添加停止服務、開啟服務、退出等選項,方便用戶在不打開軟件界面的情況下快捷地執行相應的操作。
2.2文件的配置與存放
不同的IGS產品下載地址、命名格式、更新周期等各不相同,這就需要用戶根據需要對下載的文件進行必要的了解后,分別進行配置。由于每個文件的發布都有或多或少的延遲,用戶在配置完文件之后還要根據自身需要對數據的下載日期以及文件每天的下載時間來進行設置。有些文件沒有嚴格規律的發布周期,進行下載時會遇到文件還沒發布的情況,這就需要將沒能成功下載到的文件記錄到待下載列表中,進行下一次下載時自動讀取該列表并進行下載。
文件下載后存放到以年積日命名的文件夾中,并自動完成解壓,在下載大量數據時,可以通過配置服務器后直接完成下載數據的入庫。
2.3下載指定日期數據
用戶安裝該軟件之后,軟件正常運行的情況下能完成對應日期所有文件的下載,但是軟件、計算機等運行異常等情況下文件下載失敗,或者用戶需要一段較長時間內所有的某種文件進行分析,以上功能難以滿足要求。針對以上不足,增加下載指定日期文件功能,實現下載單天或者連續幾天的文件。
2.4生成日志文件
每天的下載任務完成后生成對應的日志文件,文件按照下載日期對應的年月日來命名,方便用戶更加直觀地查看對應日期下載文件的狀態信息。
3自動下載程序實現
IGS產品自動下載軟件通過C#語言編寫,開發在Visual Studio 2010下進行,開發框架為NET Framework 4.0。C#非常適合界面的開發,而且對于大批量文件的編輯、處理和存儲路徑的選擇擁有極為便利的方法[8]。軟件采用了程序模塊化設計的思想,每個模塊都具有高內聚性,模塊間通過參數進行交互,模塊化的設計降低了程序執行出錯率和代碼占有空間,提高了程序可靠性和代碼復用率及可維護性,延長了程序生命周期,并且能夠非常方便的對程序進行升級,軟件的主界面如圖2所示[9]。

圖2 軟件主界面
圖2示出了未進行下載服務時的界面,此時“開始服務”的按鍵是灰色的,狀態欄顯示為“數據下載服務空閑”,當下載進行時狀態欄顯示為“數據下載服務正在下載數據…”,方便查看軟件運行狀態。下載數據列表中的信息設計為用戶根據需要自主添加、編輯或者刪除。主界面右側的“添加”和“編輯”對應下載數據設置窗體,圖3所示的即為下載精密星歷(*.sp3)時需要進行的相關設置,文本框有多個選項供用戶選擇,根據IGS產品的命名規則,主要設置有年積日、GPS周、兩位年份、周內天數等,每個選項兩側加入了“$”以便進行區分,在進行程序設計時通過讀取文本框中的選項獲得每個文件的下載地址、文件名等信息。用戶對下載數據進行一次編輯后,數據信息都會記錄到下載數據列表“datadown”中,以后每次下載都從該數據列表進行讀取,無需重復編輯。由于通常用戶登錄IGS服務器都采用的是匿名賬戶,所以這里用戶名和密碼無需進行讀取,但考慮到軟件的普適性,增加了輸入用戶名和密碼的功能。
選中下載數據列表中的任意一條數據信息都可以對該信息執行編輯或者刪除,用戶作出修改后,下載數據列表“datadown”中的信息也會相應地修改,從而在以后的文件下載中按照用戶修改后的設置執行。

圖3 編輯下載數據窗體
不同的IGS產品更新周期不同,都有或多或少的延后,例如,IGS及其分析中心提供的高精度衛星鐘差改正信息一般要13天后才能獲取[10]。用戶在進行不同的數據處理時所需要的準備文件也不同,用戶可以根據解算需要靈活設置下載數據的日期和每天的數據下載時間,例如,如圖2所示,主界面設置的為下載7天前的數據,軟件運行時就會將當前日期減去7得到所需下載數據對應的日期,在程序中再轉換為相應的年份、年積日、GPS周等信息。當天的下載任務完成后可能會存在下載失敗的情況,往往是由于網絡狀況不好或者當天的文件并沒有發布等原因造成,此時將下載失敗的文件信息保存到數據列表“waitdown”中,這樣在進行下一次的數據下載時首先嘗試下載前一天沒成功下載的數據,如果下載完成,則從待下載表“waitdown”中刪除,否則下一次繼續下載。有些IGS站的數據由于某些特殊原因缺少某天或幾天的數據,使得程序無法完成對這些文件的下載,這類連續下載多次都沒有成功的文件將從待下載列表“waitdown”中刪除[1]。此外,準備文件中有一部分文件是每天更新的而有些文件更新周期較長,例如,地球自轉參數文件(*.erp)為每周更新,差分碼偏差(*.DCB)為每月更新,軟件為每天執行一次,此類文件如果每天下載必然會造成重復而且影響下載的效率,用戶只需在進行下載數據設置時根據文件的發布周期設置下載周期,保證在每個發布周期內只下載一次[11]。
2.3中已經介紹,為了增加軟件的靈活性,在程序設計時增加了下載指定日期數據的功能,此時用戶可以使用主界面的“下載指定日期數據”,根據用戶選擇的日期立刻完成主界面下載數據列表中對應文件的下載,文件存放于當前路徑下以年積日命名的文件夾中并完成解壓。
4下載實例
為了對軟件的運行情況進行測試,對2015年9月份表1中列出的文件進行了下載實驗,其中包括了bjfs、chan、daej、shao、suwn、wuhn共6個IGS站的實測數據,下載13個文件。程序中固定設置,按周更新的文件在每周的周日下載上周數據,按月更新的文件在下個月的“第一天”下載上月數據;界面設置為每天的18點定時下載15天前的數據。
由于下載天數較多,選擇有代表性的兩天2015年9月16日和9月21日的結果來進行檢驗,圖4示出了下載日志,下載的文件所對應日期分別為2015年9月1日和9月6日。從下載日志中可以看出:9月1日完成了按月發布文件(*.DCB)的下載,9月6日(周天)完成了按周發布文件的下載(*.erp);這兩天shao、suwn和wuhn三個IGS站的觀測數據部分沒有成功下載,手動登錄后發現是由于文件沒有公布;圖5中前面的多行信息是之前幾天沒有下載成功,從待下載列表“waitdown”中讀取后重新下載的文件信息,下載失敗也是由于IGS站的觀測文件沒有公布導致。

圖4 2015年9月16日下載日志和 2015年9月22日下載日志
5結束語
針對傳統IGS產品下載方式操作繁瑣且效率低下的缺點,以及目前已有下載方法的不足,在Windows操作系統下,利用C#語言,根據IGS產品在FTP服務器上存放的規律性,設計完成了IGS產品的批量、自動、定時下載軟件。軟件適合下載需要連續且及時更新的文件,在一次設置之后不需再進行任何操作,可以為CORS數據處理中心等部門提供相關服務。軟件界面快捷、便于用戶操作,可以減少相關人員的工作量和失誤率,同時考慮了多種用戶的需要,功能靈活,具有很強的普適性和擴展性。
IGS產品自動下載軟件實現了文件的批量、自動、定時下載,但是要成為一個功能全面的工具還有很多功能需要完善,例如,對于不同文件每個周期內的下載時間還沒有實現用戶自定義,文件下載失敗原因沒能在日志中體現出來,需要在后續工作中不斷改進。
參考文獻
[1] 李建虎.Shell程序自動下載IGS站數據的實現[J].測繪信息與工程,2009,34(1):9-11.
[2] 李峰,陽凡林,李云偉,等.基于Bernese5.0的GPS數據的自動下載與處理[J].礦山測量,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測量與數據處理[M].2版.武漢:武漢大學出版社,2010.
[5] 魏娜,施闖,李敏,等.IGS產品的一致性分析及評價[J].武漢大學學報·信息科學版,2010,34(11):1363-1367.
[6] 朱琳,張慧君,李孝輝.基于Lab Windows/CVI的IGS實時數據自動下載軟件開發[J].宇航計測技術,2012,32(3):25-30.
[7] 匡翠林,謝榮安,王艷濤,等.IGS數據批量自動下載軟件設計與實現[J].工程勘察,2013(7):72-75.
[8] 張凱華,郭金運,胡志博,等.Fortran與C#混合編程在衛星測高中的應用[J].計算機技術與發展,2014,24(5):48-52.
[9] 周峰,王征,李永.C#典型模塊開發[M].北京:中國鐵道出版社,2010.
[10]潘紹林,張顯云,杜寧,等.基于灰色系統模型的IGS精密鐘差預報[J].測繪工程,2015,24(4):20-24.
[11]蔣澤斌,陳義.基于Bash的GAMIT準備文件自動下載[J].測繪與空間地理信息,2014,37(11):50-52.
劉智敏(1975-) 女,河北唐山人,博士,副教授,主要從事GNSS定位理論技術及其應用。
黃超(1991-) 男,山東濰坊人,碩士生,主要從事GNSS數據處理研究。
竇世標(1990-) 男,山東菏澤人,碩士生,主要從事GNSS數據處理研究。
張海平(1977-) 男,山東五蓮人,主要從事CORS管理工作。
馮彥同(1986-) 男,碩士生,主要從事網絡RTK算法、GNSS數據處理及其理論研究。
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
中圖分類號:P228.4
文獻標志碼:B
文章編號:1008-9268(2016)02-0110-05
作者簡介
資助項目: 國家自然科學基金(批準號:41374009); 青島博士后基金(基于CORS的精密定位算法關鍵問題研究); 山東省高校海洋測繪重點實驗室開放基金(編號:2013B04)
聯系人: 黃超 E-mail: ch_huangchao@163.com