合并多个时段GPS RINEX文件

在处理GPS数据O文件时,有时会遇到同一个接收机一天内的观测数据分成了多个O文件,如每个小时一个O文件,这在处理的时候会很不方便。可以使用teqc软件对多个观测文件进行合并,但是注意,合并的O文件观测时间要是连续的。
使用快捷键windows+R打开“运行窗口”,然后输入“cmd”打开系统“命令行”窗口


image.png

在命令行窗口使用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有时不能识别某些卫星号,进而导致文件拼接失败。如下图所示
微信图片_20200703120039.png

这时可以通过更改卫星号最大值来扩展卫星编号读取范围。以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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,437评论 0 9
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 4,043评论 7 54
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,439评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,808评论 0 10
  • 初始化git 配置git 使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名,...
    MiracleJQ阅读 1,436评论 0 0