在处理GPS数据O文件时,有时会遇到同一个接收机一天内的观测数据分成了多个O文件,如每个小时一个O文件,这在处理的时候会很不方便。可以使用teqc软件对多个观测文件进行合并,但是注意,合并的O文件观测时间要是连续的。
使用快捷键windows+R打开“运行窗口”,然后输入“cmd”打开系统“命令行”窗口
在命令行窗口使用cd命令进入数据文件夹,此时要合并的数据和teqc软件都在该文件夹下。也可以将teqc.exe放在“C:\Windows\System32”路径下,一劳永逸,不用每次都复制到数据文件夹里。
1 单个站点观测文件合并
输入命令
teqc file1 file2>file3
即可把file1和file2合并为file3,如果有多个文件需要合并,并且这些文件命名方式有一定规律,可以使用*代替文件名变化部分,对O文件进行批量合并
teqc file*.16o>myfile.16o
这样就把所有符合file*.16o
命名格式的文件全部合并为myfile.16o
注意,如果合并文件的名称符合前面的表达式,如命名为file0230.16o
,则可能会失败,可以将合并文件命名为file0230.txt
,合并之后再将文件后缀名修改为.16o
。
2 多个站点观测文件批量合并
前面的方法在处理大量站点数据时并不方便。问了解决这个问题,可以用Python,MATLAB或者C++获取所有站点的名称,然后批量输出合并命令到文本文件中,后缀名为.bat
,双击该文件即可批量执行合并命令。bat文件末尾加入对当前文件中所有txt文件都重命名为.**o
的语句即可获得合并的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;
还有一种更简单的批量处理方法,就是直接在MATLAB中使用system()
语句运行cmd命令,无需生成.bat文件以及运行。
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对于卫星系统的卫星号有最大值的限制,超出这个最大值就会读取失败。由于各个卫星系统还在不断更新,卫星号会超出最大值限制,导致TEQC有时不能识别某些卫星号,进而导致文件拼接失败。如下图所示这时可以通过更改卫星号最大值来扩展卫星编号读取范围。以Glonass系统为例,在TEQC help中可以看到
-n_GLONASS # set maximum expected GLONASS SV slot #, 0 < # <= 64 (default = 24)
如果数据中有超出24的卫星号,则会报错。通过-n_GLONASS # 语句可以重置最大卫星号。则上面的拼接文件的命令可以改写为:
teqc -n_GLONASS 30 file*.16o>myfile.16o