RINEX 与 Compact RINEX 批量转化脚本
前文 RINEX 与 Compact RINEX 格式的转换曾经介绍过使用 RNXCMP 程序包或者 GAMIT/GLOBK 软件的内置脚本将 GNSS 观测数据在标准 RINEX O-文件格式和 Compact RINEX (D-文件)之间转化的方法。但问题是,RNXCMP 程序包不善于对大量数据批量操作,而很多时候又无法使用 GAMIT/GLOBK 内置脚本。
本文介绍 Pinot 中的新增脚本:crnx2rnx.py 和 rnx2crnx.py,可实现对该情况的批量处理。
脚本功能
本文所涉及的两个脚本及其功能如下:
- crnx2rnx.py:将 Compact RINEX 转化为标准 RINEX;
- rnx2crnx.py:将标准 RINEX 转化为 Compact RINEX。
运行环境
两个脚本使用 Python 语言(Python 3.5)编写,依赖于 RNXCMP 程序包中的两个程序:crx2rnx 和 rnx2crx。要使用此脚本,需将这两个程序放入脚本执行目录或系统搜索目录内。
需注意的是:对于某些 Windows 操作系统中(如 Windows Server 2008 R2),可能会出现 “’crx2rnx/rnx2crx’ 不是内部或外部命令,也不是可运行的程序或批处理文件。” 的错误,此时需要保证运行脚本的文件夹内有 crx2rnx 或 rnx2crx 程序。
此外,最新的程序实现了进度条显示功能。该功能使用了 tqdm 模块,要安装该模块,在 “命令提示符” 窗口执行:
1 | $ pip install tqdm |
参数说明
此两个脚本的所接受的参数一致,下面以 crnx2rnx.py 为例。该脚本接受的参数如下:
1 | $ python crnx2rnx.py <file> [<file> ...] [-out <directory>] [-k] [-r] [-v] [-h] |
参数释义:
<file>
:输入的待处理文件,你可以使用文件名,也可以使用通配符;-out <directory>
:输出转化结果的文件夹。该项默认为当前目录的 rinex(或 crinex) 文件夹;-k、--keep
:转化成功后是否保留源文件,不加该参数时默认为不保留;-r
、--recursive
:指定 “**/” 的通配符前缀表示递归搜索子文件夹的内容,不加该参数默认为不递归;-v、--version
:显示版本信息;-h、--help
:显示帮助。
使用示例
将 crinex/ 文件夹内 BJFS 站和 SHAO 站的所有观测于 2016 年的 Compact RINEX 文件转化为标准 RINEX 格式,将输出保存至 rinex/ 文件夹内,转化成功后删除源文件:
1 | $ python crnx2rnx.py crinex/bjfs*.16d crinex/shao*.16d -out rinex |
将 crinex/ 文件夹及其子文件夹内所有以 .crx 为后缀名的 Compact RINEX 文件转化为标准 RINEX 格式,将输出保存至 rinex/ 文件夹内并保留源文件:
1 | $ python crnx2rnx.py crinex/**/*.crx -out rinex -r -k |
将 rinex/ 文件夹内的所有观测于 2016 年第 161 至 168 日的标准 RINEX O-文件压缩为 Compact RINEX 格式,将输出保存至 crinex/ 文件夹并保留源文件:
1 | $ python rnx2crnx.py rinex/*16[1-8]?.16o -out crinex -k |
下载地址
该脚本及同一工具包的其他脚本均放在 Github 网站上:purpleskyfall/pinot。
修改记录
- 2017-09-10,版本 0.2.0:
- 去掉
-dir
和-glob
参数,使用位置参数指定输入文件; - 支持多个输入文件或通配符;
- 支持 RINEX 3 文件名;
- 添加进度条显示;
- 添加多线程支持。
- 去掉
- 2018-03-14,版本 0.2.2:
- 优化在 UNIX/Linux 中的输出信息显示。
- 2018-03-16,版本 0.2.3:
- 适配 UNIX/Linux 操作系统。