GAMIT 常见错误及解决方案
自使用 GAMIT 程序以来,一直希望做一个包含常见的错误及其解决方案的列表。有 GAMIT/GLOBK、Bernese、Panda 等科研软件使用经验的人都知道:使用这些程序做数据处理,其实就是不断解决错误的过程。因此一个包含常见错误及解决方案的列表必定能为使用者带来很多遍历。遗憾的是,平时对遇到的错误却常常无意识去做完整的整理。所以一直担心的是:此常见错误列表总是无法包含“常见错误”。
这几日像当初搭博客时一样,终于下定决心:不管最初版本能包含多少错误,先做出来再说。因此才有了这一篇博文。本篇博文可能永远不能包含所有错误的解决方案,但好在将随时保持更新。
检索说明
根据我个人的使用经验,暂且将错误类型分为三类:
- 与观测信息有关的错误;
- 与设置或表文件有关的错误;
- 与数据相关的错误。
本文列出的错误信息,仅仅是出现错误时提示的第一条“Fatal”。解决错误时,第一条错误信息通常最有用,因为后续的错误大多都是由之前的错误所引发。并且,这里给出的错误信息中,使用了具体的站点名和日期等,你遇到的错误在这些部分可能略有不同。
正如前面所说,限于个人的能力和精力,该错误列表可能永远不能包含所有可能遇到的错误。因此如果你有任何补充或建议,欢迎通过邮件联系。补充时请提供完整的错误提示、错误原因和解决方案。
与观测信息相关的错误
Error opening reference station.info file
当提示该信息时,通常是因为解算目录的 tables 文件夹内缺少 station.info 文件。
解决方案:将 GAMIT/GLOBK 安装目录的 station.info 文件或从网上下载的 station.info 文件拷贝到解算目录的 tables 文件夹内。
GDBTAB/geoc_to_geod: Failure to converge
当提示该条提示信息时,通常是因为提供的某些站点概略坐标错误。
解决方案:在 GAMIT 输出信息中从该条错误信息开始往前查找最近的一个站名,该站点即为概略坐标错误的站点。修改 lfile. 文件中该站点的概略坐标为正确值然后重新进行解算。
Geodetic height unreasonable: check p- and l-files
与上一条错误类似,该错误也是由站点概略坐标错误引起。
解决方案:在 GAMIT 输出信息中从该条错误信息开始往前查找最近的一个站名,该站点即为概略坐标错误的站点。修改 lfile. 文件中该站点的概略坐标为正确值然后重新进行解算。
No match SITE 2016 169 0 0 0 in station.info
当提示类似这样的信息时,说明 station.info 文件里没有 SITE 站点在某时段的站点信息。
解决方案:向 station.info 文件中添加缺失的信息即可,具体命令可参考站点信息文件的创建与更新。
SITE PCN-code missing for receiver type in rcvant.dat
当出现类似这样的提示信息时,通常是因为某个站点(SITE)的接收机类型不包含在 rcvant.dat 文件内,即该站点的接收机类型不受支持。
解决方案:查看对应站点的观测文件和 rcvant.dat 文件,核对其中的接收机类型。若观测文件中的接收机类型与 rcvant.dat 中的相似但不完全一致,则可能是观测文件中的接收机类型不规范,此时可以将其中的接收机类型改为 rcvant.dat 中的规范名;若观测数据的接收机类型在 rcvant.dat 中不存在,可以考虑将观测数据的接收机类型用相似的接收机代替。
Station.info missing antenna for SITE 2017 211
当出现类似这样的错误提示时,说明 station.info 文件中缺少某个站点(SITE)的天线类型。
解决方案:编辑站点在对应年积日的观测文件,加入或修改其中的天线类型信息。然后使用 sh_upd_stnfo
命令更新站点信息文件 station.info。具体可参考站点信息文件的创建与更新。
与设置或表文件相关的错误
components on grid file record not equal 44 or 84 (Name otl.grid)
该错误是由海潮模型引起的,原因是没有正确设置海潮模型。
解决方案:方案之一是在 sestbl. 文件中禁用海潮模型,在其中进行如下设置:
1 | Use otl.grid = N |
或者下载所需的海潮模型文件,并将 otl.grid 链接到模型文件。然后设置:
1 | Use otl.grid = Y |
之后重新解算即可。该部分的详细介绍可移步至:GAMIT 中的 GRID 文件简介。
Date for TAI-UTC(2457936) after stop date in leap.sec
出现类似错误的原因是参与解算的数据的观测日期晚于 leap.sec 文件的更新日期。
解决方案:下载最新的 leap.sec 文件,替换解算目录 tables/ 文件夹下的同名文件,然后重新进行解算。程序详细的更新策略可参考 GAMIT/GLOBK 更新方法。
JD= 2458017 out of range of pole/ut1 table, JDT1= …
出现类似错误的原因是参与解算的数据的观测日期晚于 pole.usno 或 ut1.usno 文件的更新日期。
解决方案:下载最新的 pole.usno 和 ut1.usno 文件,替换解算目录 tables/ 文件夹下的同名文件,然后重新进行解算。程序详细的更新策略可参考 GAMIT/GLOBK 更新方法。
Ocean loading requested no list or grid file
出现该问题的原因是没有正确链接海潮模型文件。
解决方案:下载所需的海潮模型文件,并将 otl.grid 链接到模型文件。然后设置:
1 | Use otl.list = N |
之后重新解算即可。该部分的详细介绍可移步至:GAMIT 中的 GRID 文件简介。
Site-dependent mapping function requested but no list or grid file
出现该错误的原因是缺少与设置相对应的映射函数(VMF1)。
解决方案:基线解算过程中使用的映射函数模型在 sestbl. 文件中设置。GAMIT 目前支持三种映射函数,但只有 VMF1 需要引入模型文件。所以方案一是将解算使用的映射函数修改为 GMF 或 NMF:
1 | DMap = GMF ; GMF(default)/VMF1/NMFH; GMF now invokes GPT2 if gpt.grid is available (default) |
如果你执意使用 VMF1 映射函数,方案二是下载 VMF1 的格网模型。将 tables/ 目录内的 map.grid 链接到模型文件,然后设置:
1 | DMap = VMF1 ; GMF(default)/VMF1/NMFH; GMF now invokes GPT2 if gpt.grid is available (default) |
与格网模型文件相关的详细内容可移步至:GAMIT 中的 GRID 文件简介。
SV antenna offsets for SVN G038 not found in antmod.dat
出现该错误的原因为 svs_exclude.dat 文件未更新。
解决方案:编辑项目文件夹 tables 中的 svs_exclude.dat 文件,在你要解算的年积日中将 G18 卫星排除。svs_exclude.dat 文件的格式为:
1 | <year> <doy> <PRNs> |
这里 <year>
和 <doy>
分别代表年和年积日,其后的 <PRNs>
为卫星号列表。例如,在 2019 年第 45 日排除 G04 和 G18 卫星,你可以在其中这样编辑:
1 | # Exclude G04 and G18 in 2019-02-14 |
与数据相关的错误
Beidou frequencies on x-/c-file file not C2 and C7
处理北斗数据时可能会出现此错误。错误出现的原因是:某些观测文件不包含北斗观测数据。
解决方案:如果你想查看有问题的观测文件,在 GAMIT 输出信息中从该条错误信息开始往前查找最近的一个站名,该站即为观测数据有问题的站点。但为了彻底解决该问题,你应该逐个检查输入的 RINEX 观测数据,剔除所有不含北斗观测值的文件,然后重新进行数据处理。
Error in input data file at epoch 2341
出现此类错误是因为观测数据中某个历元下的数据出现问题。
解决方案:从该错误提示开始向上查找到的第一个站名就是数据有问题的测站,使用 GFZRNX 程序对数据文件进行修复,或直接将该站点的观测文件删除,然后清空年积日文件夹后重新解算。数据文件修复方法参见本站博文:GFZRNX 配置及格式相关功能的使用。
Only one or no existing X-files
此错误一般不会单独出现,若该错误作为第一条 Fatal,那么原因可能是观测数据不合格而被程序忽略。观测数据不合格的原因可能有:
- 观测文件未采用小写字母命名;
- 观测文件不是 GAMIT/GLOBK 支持的格式;
- 观测文件的文件太小而被忽略。
解决方案:对于第三种情况,GAMIT 解算时的控制文件 process.defaults 中,将所使用的观测文件的最小值设置为 300 KB。若你的观测文件小于该值,你可以修改 tables 文件夹内的该文件然后重新解算。
sh_chksolve: Solve failed to complete normally
这个错误只遇到过一次,但从提示信息中看不出错误原因。
解决方案:清空年积日文件夹,重新运行 GAMIT 批处理命令。有时候这样可以解决该问题,推测该错误可能是由程序的 Bug 造成的。
Word to long
该错误通常在执行 sh_upd_stnfo
命令时出现。由于该命令指定 RINEX 观测文件时采用通配符,若通配符匹配到的文件太多,或文件路径太长,易触发该错误。
解决方案:调整匹配 RINEX 文件的通配符,每次使用更少的 RINEX 文件对站点信息文件进行更新。