在處理GPS數(shù)據(jù)O文件時(shí),有時(shí)會(huì)遇到同一個(gè)接收機(jī)一天內(nèi)的觀測(cè)數(shù)據(jù)分成了多個(gè)O文件芥炭,如每個(gè)小時(shí)一個(gè)O文件漓库,這在處理的時(shí)候會(huì)很不方便≡膀穑可以使用teqc軟件對(duì)多個(gè)觀測(cè)文件進(jìn)行合并渺蒿,但是注意,合并的O文件觀測(cè)時(shí)間要是連續(xù)的彪薛。
使用快捷鍵windows+R打開“運(yùn)行窗口”茂装,然后輸入“cmd”打開系統(tǒng)“命令行”窗口
在命令行窗口使用cd命令進(jìn)入數(shù)據(jù)文件夾,此時(shí)要合并的數(shù)據(jù)和teqc軟件都在該文件夾下善延。也可以將teqc.exe放在“C:\Windows\System32”路徑下少态,一勞永逸,不用每次都復(fù)制到數(shù)據(jù)文件夾里易遣。
1 單個(gè)站點(diǎn)觀測(cè)文件合并
輸入命令
teqc file1 file2>file3
即可把file1和file2合并為file3彼妻,如果有多個(gè)文件需要合并,并且這些文件命名方式有一定規(guī)律豆茫,可以使用*代替文件名變化部分侨歉,對(duì)O文件進(jìn)行批量合并
teqc file*.16o>myfile.16o
這樣就把所有符合file*.16o
命名格式的文件全部合并為myfile.16o
注意,如果合并文件的名稱符合前面的表達(dá)式揩魂,如命名為file0230.16o
幽邓,則可能會(huì)失敗,可以將合并文件命名為file0230.txt
火脉,合并之后再將文件后綴名修改為.16o
牵舵。
2 多個(gè)站點(diǎn)觀測(cè)文件批量合并
前面的方法在處理大量站點(diǎn)數(shù)據(jù)時(shí)并不方便柒啤。問了解決這個(gè)問題,可以用Python棋枕,MATLAB或者C++獲取所有站點(diǎn)的名稱白修,然后批量輸出合并命令到文本文件中,后綴名為.bat
重斑,雙擊該文件即可批量執(zhí)行合并命令兵睛。bat文件末尾加入對(duì)當(dāng)前文件中所有txt文件都重命名為.**o
的語(yǔ)句即可獲得合并的RINEX格式文件。下面的用MATLAB作為示例:
clc;clear;
datatype='*.08o';
path='...\IGS\20080625\';
D=dir([path,datatype]);
fileID=fopen([path,'RINEX_files_splice.bat'],'w');
for iFile=1:length(D)
FileNames{iFile}=D(iFile).name(1:7);
end
StationNames=unique(FileNames);
% output splice commands for every GNSS station
for iStation=1:length(StationNames)
fprintf(fileID,'%s\n',['teqc ',StationNames{iStation},datatype,'>',StationNames{iStation},'0.txt']);
end
% rename splice files as RINEX files
fprintf(fileID,'%s\n',['ren ','*.txt ',datatype]);
fprintf(fileID,'%s\n','pause');
fclose(fileID);fclose all;
還有一種更簡(jiǎn)單的批量處理方法窥浪,就是直接在MATLAB中使用system()
語(yǔ)句運(yùn)行cmd命令祖很,無(wú)需生成.bat文件以及運(yùn)行。
datatype=['*.',YearStr(3:4),'o'];
D=dir([MainPath,datatype]);
cnt=1;
for iFile=1:length(D)
if isstrprop(D(iFile).name(8),'alpha')% check if the 8th character is letter
FileNames{cnt}=D(iFile).name(1:7);
cnt=cnt+1;
end
end
StationNames=unique(FileNames);
%output splice commands for every GNSS station
for iStation=1:length(StationNames)
system(['teqc ',MainPath,StationNames{iStation},datatype,' > ',...
MainPath,StationNames{iStation},'0.',YearStr(3:4),'o','.txt'],'-echo');
end
TEQC對(duì)于衛(wèi)星系統(tǒng)的衛(wèi)星號(hào)有最大值的限制漾脂,超出這個(gè)最大值就會(huì)讀取失敗假颇。由于各個(gè)衛(wèi)星系統(tǒng)還在不斷更新,衛(wèi)星號(hào)會(huì)超出最大值限制骨稿,導(dǎo)致TEQC有時(shí)不能識(shí)別某些衛(wèi)星號(hào)笨鸡,進(jìn)而導(dǎo)致文件拼接失敗。如下圖所示這時(shí)可以通過更改衛(wèi)星號(hào)最大值來(lái)擴(kuò)展衛(wèi)星編號(hào)讀取范圍坦冠。以Glonass系統(tǒng)為例形耗,在TEQC help中可以看到
-n_GLONASS # set maximum expected GLONASS SV slot #, 0 < # <= 64 (default = 24)
如果數(shù)據(jù)中有超出24的衛(wèi)星號(hào),則會(huì)報(bào)錯(cuò)辙浑。通過-n_GLONASS # 語(yǔ)句可以重置最大衛(wèi)星號(hào)激涤。則上面的拼接文件的命令可以改寫為:
teqc -n_GLONASS 30 file*.16o>myfile.16o