GNSS 数据信息批量检查脚本

在进行大量的 GNSS 数据处理之前(尤其不是自己观测的数据),我们通常首先需要检查各站点的数据完备性和核对观测信息的正确性等。从而得知缺失数据的站点,并及时掌握观测条件(如所使用的接收机类型、天线类型、先验坐标、天线高等)的变更情况等。

本文介绍 Pinot 中相关的两个脚本:sitecheck.py 与 metacheck.py。

脚本功能

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

  • sitecheck.py:检查站点的数据缺失状况;
  • metacheck.py:检查站点信息的变更状况。

参数说明

sitecheck.py

脚本 sitecheck.py 用于检查站点的观测数据(RINEX O-文件或 D-文件)的缺失状况,其中待检查的站点列表需要通过一个配置文件指定。该脚本可接受以下参数:

1
$ python sitecheck.py <directory> [<directory> ...] -yr <year> -doy <doy> -cfg <config.yml> [-r] [-v] [-h]

参数释义:

  • <directory>:输入文件夹的路径,该项默认为程序运行的当前路径;
  • -yr <year>:数据观测日期的年,该项是必要的;
  • -doy <doy>:数据观测日期的年积日,该项是必要的;
  • -cfg <config.yml>:包含站点名的配置文件路径。该配置文件使用 YAML 语言编写,默认为当前目录中的 _sites.yml 文件;
  • -r--recursive:搜索文件时是否搜索子文件夹的内容,不加该参数时默认为不搜索;
  • -v--version:显示版本信息;
  • -h--help:显示帮助。

metacheck.py

脚本 metacheck.py 用于检查站点观测信息的变更或缺失状况,如接收机类型、天线类型、先验坐标等。该脚本可接受的参数如下:

1
$ python metacheck.py <file> [<file> ...] -cfg <config.yml> -thd <threshold> -out <type> [-r] [-v] [-h]

参数释义:

  • <file>:要处理的文件名,可由通配符指定;
  • -cfg <config.yml>:包含站点信息的配置文件路径。该配置文件使用 YAML 语言编写,默认为当前目录中的 _sitesinfo.yml 文件;
  • -thd <threshold>:先验坐标允许变化的阈值,默认值为10m;
  • -out <type>:信息输出的方式。该参数有两个选项:列表(默认)或表格。列表输出方式以 listl 指定,表格方式以 tablet 指定;
  • -r--recursive:指定用 “**/” 的通配符前缀表示递归搜索子文件夹的内容,不加该参数默认为不递归;
  • -v--version:显示版本信息;
  • -h--help:显示帮助。

输出示例

sitecheck.py

脚本 sitecheck.py 在检查完成后,将输出缺失数据的站点名:

Start processing: ../rinex2, ../rinex3 …
Observation files not found at 2017, 42 for: anqi, wuch, wuhn, zqrs

metacheck.py

前文已经提到,metacheck.py 脚本的输出信息有两种形式:列表和表格,采用 -out 参数指定。该参数为 llist 或未指定时为列表;为 ttable 时为表格形式。

列表模式

列表模式将不同的项目上下对齐,突出不同点,适合在检查观测信息变化时使用。一个列表模式的输出样例如下:

15d\chan0270.15d has differences:
delta in cfg file: 0.0000 0.0000 0.0000
delta in obs file: 0.2500 0.0000 0.0000

16o\bjfs0010.16o has differences:
receiver in cfg file: TRIMBLE NETR8
receiver in obs file: TRIMBLE NETR9

表格模式

表格形式的输出信息便于使用 Excel 等程序做进一步处理。一个表格形式的输出消息如下:

1
2
3
file            type       in cfgfile                   in obsfile
bjfs2220.17d receiver TRIMBLE NETR8 TRIMBLE NETR9
chan2220.17d delta 0.0000 0.0000 0.0000 0.2500 0.0000 0.0000

配置文件

sitecheck.py

sitecheck.py 脚本的配置文件非常简单,只需以数组的形式列出要进行检查的站点列表。一个配置文件示例为:

1
2
3
4
5
- bjfs
- chan
- shao
- suwn
- wuhn

metacheck.py

metacheck.py 的配置文件中保存各站点的观测信息,配置文件中的站点名,需使用小写字母。该脚本亦可使用 unificate.py 脚本的配置文件。下面是一个配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
bjfs:
receiver: "TRIMBLE NETR8"
antenna: "TRM59900.00 SCIS"
position: "-2148744.8407 4426642.9605 4044657.8518"
delta: "0.0465 0.0000 0.0000"

chan:
receiver: "ASHTECH UZ-12"
antenna: "ASH701945E_M NONE"
position: "-2674431.9143 3757145.2969 4391528.8732"
delta: "0.0000 0.0000 0.0000"

使用示例

检查 rinex/ 文件夹及其下的子文件夹,其中配置文件为当年目录中的 _sites.yml,观测日期为 2016 年第 36 年积日:

1
$ python sitecheck.py rinex/ -yr 2016 -doy 36 -cfg _sites.yml -r

处理 rinex/ 文件夹中观测年为 2016 年的观测文件,其中配置文件为当前目录中的 _sitesinfo.yml,将最终的检查结果以表格方式输出到屏幕:

1
$ python metacheck.py rinex/*.16[odOD] -cfg _sitesinfo.yml -out t 

处理 rinex/ 文件夹及其子文件夹中观测年为 2016 年,年积日为 042 至 045 的 RINEX O-文件,并将先验坐标允许变化的阈值设置为15m,其中配置文件为当前目录中的 _sitesinfo.yml,将最终的检查成果以列表方式输出到当前路径下的 result.txt 文件中:

1
$ python metacheck.py rinex/**/*04[2-5]0.16[oO] -thd 15 -cfg _sitesinfo.yml -r > result.txt

下载地址

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

修改记录

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