GNSS 数据批量整理脚本

组织保存大量的 GNSS 数据文件时,IGS 的数据存放方式是一个不错的借鉴。但数据的分类整理亦是非常枯燥繁琐的工作。并且,限于目前的 GAMIT/GLOBK 程序所能处理的数据在 99 个站点以内,因此在处理大量的数据时常常需要对观测网进行子网划分操作。这也同样需要按照子网划分方案对观测数据进行整理。

本文将介绍 Pinot 中所涉及的两个 GNSS 数据整理脚本:orderfile.py 和 subnet.py。

脚本功能

本文所涉及的两个脚本及其功能如下:

  • orderfile.py:以 IGS 的方式整理 GNSS 观测文件;
  • subnet.py:以配置文件的指定方式整理文件。

参数说明

orderfile.py

该脚本的使用方式为:

1
$ python orderfile.py <file> [<file> ...] -out <directory> [-k] [-r] [-v] [-h]

参数释义:

  • <file>:要处理的文件名,可由通配符指定;
  • -out <directory>:文件的输出路径,若该文件夹不存在将自动创建。该项默认为当前路径的 daily 文件夹;
  • -k--keep:整理文件时是否保留源文件。即以拷贝的方式整理还是以剪切的方式整理,默认为剪切方式;
  • -r--recursive:指定用 “**/” 的通配符前缀表示递归搜索子文件夹的内容,不加该参数默认为不递归;
  • -v--version:显示版本信息;
  • -h--help:显示帮助。

subnet.py

subnet.py 脚本可以按照配置对数据进行整理,这主要用于数据的子网划分操作。该脚本可接受的参数为:

1
$ python subnet.py <file> [<file> ...] -out <directory> -cfg <config> [-r] [-v] [-h]

参数释义:

  • <file>:要处理的文件名,可由通配符指定;
  • -out <directory>:子网划分结果的输出路径,默认为当前路径下的 subnets 文件夹;
  • -cfg <config>:子网划分配置文件路径。该配置文件使用 YAML 语言编写,默认为当前目录中的 _subnet.yml 文件;
  • -r--recursive:指定用 “**/” 的通配符前缀表示递归搜索子文件夹的内容,不加该参数默认为不递归;
  • -v--version:显示版本信息;
  • -h--help:显示帮助。

配置文件

只有 subnet.py 脚本需要配置文件,该配置文件使用 YAML 格式编写。

配置文件示例

配置文件中的站点名,需使用小写字母。下面是一个配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
net1:
- bjfs
- chan
- daej
net2:
- bjfs
- wuhn
- kunm
net3:
- bjfs
- urum
- lhaz

使用示例

以剪切的方式整理 data/ 目录内的所有 RINEX 文件并递归搜索其子文件夹的内容,将处理成果输出到当前目录的 daily 文件夹:

1
$ python orderfile.py data\**\* -out daily -r

以拷贝的方式整理 2016、2017 两个文件夹并递归搜索其子文件夹的内容,将处理成果输出到当前目录的 daily 文件夹:

1
$ python orderfile.py 201[67]\**\* -out daily -r -k

处理 rinex/ 文件夹中观测年为 2016 年的观测文件,其中配置文件使用当前目录中的 _subnet.yml,将最终的划分成果输入到当前路径的 nets 文件夹:

1
$ python subnet.py rinex\*.16[odOD] rinex\*.crx rinex\*.rnx -out nets -cfg _subnet.yml

处理 rinex/ 文件夹及其子文件夹中观测年为 2016 年,年积日为 042 至 045 的 RINEX O-文件,其中配置文件使用当年目录中的 _subnet.yml,将最终的划分成果输入到当前路径的 nets 文件夹:

1
$ python subnet.py rinex\**\*04[2-5]0.16[oO] -out nets -cfg _subnet.yml -r

下载地址

该脚本及同一工具包的其他脚本均放在 Github 网站上:purpleskyfall/pinot

修改记录

  • 2017-09-17,orderfile.py 0.2.0,subnet.py 0.4.0:
    • 去掉 -dir-glob 参数,使用位置参数指定输入文件;
    • 支持多个输入文件或通配符;
    • 支持 RINEX 3 格式的文件。
  • 2017-09-17,orderfile.py 0.2.1,subnet.py 0.4.1:
    • 优化在 UNIX/Linux 中的输出信息显示。