徐 園,楊 力,陳明劍,李 超
(1.信息工程大學測繪學院,河南 鄭州450052;2.93942部隊,陜西 咸陽712000;3.61082部隊,北京100083)
實時精密單點定位技術中最主要的的兩個步驟是減小衛(wèi)星軌道誤差和衛(wèi)星鐘差。由于廣播星歷精度低,達不到精密單點定位的要求。因此,如何實時獲取高精度的衛(wèi)星軌道和衛(wèi)星鐘差是實時精密單點定位的基礎。目前,國際上能提供實時精密軌道和精密鐘差產品的商業(yè)機構主要有美國噴氣推進實驗室(JPL)、加拿大自然資源部(NRCan[2])和歐洲空間局(ESA)。IGS已經提供實時的預報產品(IGU),它的軌道預報精度同IGS最終軌道相差無幾??梢钥紤]利用超快速精密星歷IGU,并通過IGU估計精密衛(wèi)星鐘差來實現實時精密單點定位[3]。隨著科技的發(fā)展,大部分手機和掌上智能設備都集成了GPS模塊和網絡模塊可以實現隨時上網和定位導航功能,通過網絡實時獲取存儲在網絡服務器中的IGU是實現基于網絡的實時精密單點定位的的基礎。當前網絡覆蓋范圍最大的是GPRS,幾乎覆蓋全國,但是GPRS在離基站比較遠的情況下網絡狀態(tài)并不好,這種情況下斷點續(xù)傳就顯得尤為重要。為了實現多個下載任務的并行處理,最好將下載功能放到線程中去運行。
IGS數據文件包括觀測值文件、廣播星歷文件、氣象數據文件、精密星歷文件等。其中觀測值文件、廣播星歷文件和氣象數據文件均采用Rinex格式。精密星歷文件格式有三類;分別為SP1、SP3和SP3C(SP3擴展的一種)[4],常用的精密星歷文件的擴展名是以.sp3為后綴。Rinex格式文件和SP3格式文件命名規(guī)則如表1。
表1 Rinex格式文件和SP3格式文件的命名規(guī)則
IGS的所有數據文件均以Z格式壓縮存放在IGS的FTP服務器上,并定時更新。這些數據通過超文本協(xié)議(HTTP)在網頁上可以訪問到。所有的觀測文件分別以年、年積日存放在Rinex路徑下,而所有的精密星歷文件以GPS周存放在Products路徑下。文件壓縮存放的樹形結構如圖1所示。
圖1 IGS數據文件在FTP服務器上的存儲結構樹圖
通過分析IGS數據文件的文件名和文件在FTP服務器中存放的結構,可以得到預下載數據文件的URL,從而實現程序自動下載所需要的IGS數據文件。
在Internet互聯(lián)網應用程序支持上,Microsoft提供了Win32Internet API函數支持,此類型的API是由WININET.DLL動態(tài)鏈接函數庫所提供的。Win32Internet API(即 WinInet)幫助實現對gopher、FTP和 HTTP等常用Internet協(xié)議的訪問。使用WinInet可以在較高編程級別上編寫Internet客戶端應用程序,且無須處理 WinSock、TCP/IP和特定Internet協(xié)議的細節(jié)問題。WinInet為所有這三種協(xié)議提供了一組一致的函數,并采用常用的Win32API接口。使用WinInet API下載過程如圖2所示。
實際使用過程中發(fā)現幾個問題。
1)網絡狀況不穩(wěn)定時,文件沒有完全下載,但系統(tǒng)仍然報告文件下載成功。
2)網絡狀況不穩(wěn)定時,文件傳輸過程中斷,任務調度系統(tǒng)的文件傳輸任務被阻塞掛起,造成以后的文件無法下載,只能重新啟動任務調度系統(tǒng)才行。
3)Win32Internet API中未提供支持斷點續(xù)傳的函數,如果需要實現此功能,必須在Winsock級別進行編程,程序員需要了解很多的FTP協(xié)議、HTTP協(xié)議及編程細節(jié)。
圖2 使用WinInet下載過程圖
Indy是一個基于Delphi平臺開放且封裝了大多數網絡協(xié)議的組件包。Indy可以通過阻塞方式編寫斷點續(xù)傳的相關程序,采用與Unix系統(tǒng)上等同的阻塞編程模式進行。可以簡單方便的處理程序的運行流程。利用Indy組件包實現多線程斷點續(xù)傳需要Indy控件中的三個主要組件分別是TIdFTP、TIdHTTP和TIdThreadComponent。其中TIdFTP組件用來實現在FTP協(xié)議下的斷點續(xù)傳,而TIdHTTP組件是實現在HTTP協(xié)議下的斷點續(xù)傳,另外TIdThreadComponent組件是一個線程管理的組件。下載程序主要流程設計如圖3所示。
圖3 使用Indy控件下載流程圖
在FTP協(xié)議和HTTP協(xié)議下實現斷點續(xù)傳的主要代碼分別如下(所有代碼均在C++Builder 2007環(huán)境下編譯通過):
void Tfrm_DataDown::FtpDownload(AnsiString aURL,AnsiString filename,bool bResume,TIdFTP*sFTP)//FTP協(xié)議下的下載函數
{
┊//省略部分代碼
GetFTPParams(aURL,sName,sPass,sHost,sPort,
sDir);//通過 URL獲取包括用戶名、密碼、主
機名、端、口、路徑在內的網上文件相關信息。
if(sFTP->Connected()) sFTP->Disconnect();
//如果連接,則斷開連接
sFTP->Username=sName;//賦予用戶名
sFTP->Password=sPass;//賦予用戶密碼
sFTP->Host=sHost;//賦予主機地址
sFTP->Port= StrToInt(sPort);//賦予端口地址
sFTP->Connect();//連接FTP
sFTP->ChangeDir(sDir);
BytesToTransfer=sFTP->Size(filename);
try
{
if(bResume)//如果定義斷點續(xù)傳
{
tStream->Position=tStream->Size;//獲
取已下載文件流的位置
sFTP->Get(filename,tStream,true);//繼續(xù)
下載未完成部分
}
else//未定義斷點續(xù)傳
{
sFTP->Get(filename,tStream,false);//重新下載文件
}
}
┊
//省略部分代碼
}void Tfrm_DataDown::HttpDownload(AnsiString aURL,AnsiString filename,bool bResume,TIdHTTP*sHTTP)//HTTP協(xié)議下的下載函數{
┊//省略部分代碼
{
sHTTP->Request->ContentRangeStart=
tStream->Size-1;//開始下載的位置
tStream->Position=tStream->Size-1;//獲
取已下載文件大小
sHTTP->Head(aURL);
sHTTP->Request->ContentRangeEnd=
sHTTP->Response->ContentLength;
}
Else
sHTTP->Request->ContentRangeStart=
0;//重新下載
try
{
sHTTP->Get(aURL,tStream);//下載文件
}
┊//省略部分代碼
}
至于下載過程的一些細節(jié)問題,例如進度條顯示、下載信息、下載速率等可以在TIdFTP、TIdHTTP組件的相應響應事件 OnWork、On-WorkBegin、OnWorkEnd和OnStatus中添加相應代碼來實現。通過反復試驗,該程序可以下載IGS FTP服務器上的數據文件,也可以采用HTTP協(xié)議通過IGS網頁上的鏈接下載相關的IGS數據文件,同時支持多個下載任務并行和斷點續(xù)傳下載。如圖4所示。
圖4 IGS數據文件下載圖
精密單點定位技術已經愈發(fā)成熟并在高精度測量領域中發(fā)揮著越來越重要的作用。實時精密單點定位技術近幾年也已經興起,隨著科技的發(fā)展,內置GPS模塊的智能手機和掌上智能設備的普及率越來越高,與此同時移動網絡的覆蓋范圍越來越廣,不久就能實現全球網絡的無縫覆蓋。本身集成Indy控件的幾個較新版本的開發(fā)平臺如Embarcadero RAD Studio XE1、Embarcadero RAD Studio XE2等已支持市場上大部分掌上智能操作系統(tǒng)的開發(fā)。因此,設計并實現基于Indy控件的IGS數據文件的下載程序是有必要的,它是通過一部手機或掌上智能設備進行實時精密單點定位的一種有效途徑。
[1]MUELLERSCHOEN R J,BERTIGER W I,LOU GH M F,et al.Results of an internet-based dualfrequency global dif-ferential GPS system [C]∥Proceedings of IAIN World Congress.San Diego,CA,June 2000.
[2]COLLINS P,LAHAYE F,KOUBA J,et al.Realtime WADGPS corrections from undifferenced carrier phase[C]∥Proceedings of ION-N TM-2001.California:ION,2001.
[3]李 黎,匡翠林,朱建軍,等.基于IGU預報軌道實時估計精密衛(wèi)星鐘差[J].大地測量與地球動力學,2011,31(2):111-115.
[4]趙桂儒,徐 平,吳培稚.IGS服務數據下載軟件的研制[J].地震地磁觀測與研究,2007,28(3):104-109.