基于Ubuntu 18.04的GAMIT/GLOBK10.71部署与数据解算测试
摘要:本文记录了在 Windows + WSL2 + Ubuntu 18.04 环境下部署 GAMIT/GLOBK 10.71 并进行 GNSS 数据处理测试的完整流程。通过 3 个 IGS 站点(BJFS、HKSL、HKWS)的单日数据,从环境准备、软件安装、表文件配置、数据下载到 GAMIT 日解算和 GLOBK 平差组合,逐步演示了 GNSS 数据处理的核心环节。重点总结了 WSL 环境下的路径挂载策略、常见编译问题解决方案、关键表文件作用以及从单日测试到多日时间序列处理的进阶路线,为 GNSS 数据处理初学者提供了一套可复现的实践参考。
最近在 Windows + WSL2 的 Ubuntu 18.04 环境中完成了 GAMIT/GLOBK 10.71 的部署,并基于 3 个 IGS 站点数据进行了单日测试。之前参考过一些 GAMIT 安装博客,发现很多教程主要集中在软件安装本身,但实际操作中还会涉及路径挂载、表文件配置、轨道文件准备、数据下载、GAMIT 日解算以及 GLOBK 平差组合等环节。
因此,这里整理一份相对完整的实践记录,供刚接触 GAMIT/GLOBK、GNSS 数据处理或测绘地球物理方向的同学参考。
一、运行环境
本次使用的环境为:
Windows WSL2 Ubuntu 18.04 GAMIT/GLOBK 10.71GAMIT/GLOBK 安装在 Ubuntu 18.04 中,示例安装目录为:
/home/user/gamit10.71并建立软链接:
~/gg ->/home/user/gamit10.71这样后续可以通过~/gg或$GG调用 GAMIT/GLOBK 的相关目录和程序。
本次配置的基本思路是:
Windows 负责文件管理 Ubuntu/WSL 负责专业计算 F 盘负责存放工程数据和结果也就是说,软件主体安装在 Ubuntu 中,但测试工程目录挂载到 Windows 的 F 盘中。
Windows 示例路径为:
F:\gamit_project\cn3_test_2026121在 WSL Ubuntu 中对应为:
/mnt/f/gamit_project/cn3_test_2026121这种方式的好处是:一方面,GAMIT/GLOBK 仍然在 Linux 环境中运行,兼容性较好;另一方面,输入数据、日志文件、q-file、h-file 和结果文档都保存在 Windows 磁盘中,后期查看、复制、压缩、备份都比较方便。
可以简单理解为:
Windows 大硬盘负责数据管理 Ubuntu 18.04 负责专业计算不过需要注意,如果是大规模连续解算,尤其涉及大量小文件读写,直接在/mnt/f这类 Windows 挂载目录下运行可能会比 Linux 原生目录慢。因此建议:
小规模测试、教学演示、结果整理:可以放在 F 盘挂载目录 长期批量计算、大规模 GNSS 网:建议放在 /home/user/... 中运行,完成后再复制回 Windows 磁盘二、安装前准备
GAMIT/GLOBK 是比较传统的 Linux/Unix 科研软件,不建议直接在 Windows 原生环境中安装。比较稳妥的路线包括:
1. Linux 实体机 2. Linux 虚拟机 3. WSL2 + Ubuntu本次采用:
WSL2 + Ubuntu 18.04安装前需要准备基础依赖:
sudoaptupdatesudoaptinstallcsh tcsh gcc gfortranmakelibx11-dev libxt-dev其中csh和tcsh很关键,因为 GAMIT/GLOBK 中大量脚本采用 csh 风格。如果缺少这些依赖,install_software、sh_setup、sh_gamit等脚本可能无法正常运行。
三、安装 GAMIT/GLOBK
示例安装包路径为:
/home/user/gamit10.71.zip解压后通常包括:
install_software gamit/globk 源码包 tables incremental_updates 测试数据示例安装目标目录为:
/home/user/gamit10.71安装过程中可能遇到几个典型问题。
第一个问题是 WSL2 内核版本较新,GAMIT 10.71 的老脚本可能无法正确识别 Linux 版本。这时需要检查Makefile.config,适当放宽 Linux 版本识别范围,使其复用已有的 Linux 编译配置。
第二个问题是老 Fortran 程序在较高优化级别下可能触发gfortran编译错误。如果在编译类似dlinpk.f这类文件时出现异常,可以尝试将优化级别从-O3或-O1降为:
-O0这类问题不一定是源码本身有语法错误,而可能是老 Fortran 代码与编译器优化选项之间的兼容性问题。
安装完成后,可检查核心命令:
whichsh_gamitwhichglobkwhichglorgwhichmakexp正常情况下会返回类似路径:
sh_gamit -> /home/user/gamit10.71/com/sh_gamit globk -> /home/user/gamit10.71/kf/bin/globk glorg -> /home/user/gamit10.71/kf/bin/glorg makexp -> /home/user/gamit10.71/gamit/bin/makexp能找到这些程序,说明 GAMIT/GLOBK 主体基本安装成功。
四、环境变量配置
安装完成后,需要配置环境变量。可以在~/.bashrc中加入:
exportGG=/home/user/gamit10.71exportHELP_DIR=$GG/helpexportPATH=$GG/com:$GG/gamit/bin:$GG/kf/bin:$PATHexportINSTITUTE=ABC其中:
GG GAMIT/GLOBK 主目录 HELP_DIR 帮助文件目录 PATH 将 GAMIT/GLOBK 命令目录加入系统搜索路径 INSTITUTE 机构或项目代号,可先使用三位占位符配置后执行:
source~/.bashrc然后测试:
whichsh_gamitwhichglobkwhichglorgwhichmakexp若能返回对应路径,说明环境变量已经生效。
五、工程目录准备
GAMIT/GLOBK 通常按项目和年份组织数据。例如处理 2026 年数据,可建立如下工程目录:
mkdir-p/mnt/f/gamit_project/cn3_test_2026121/2026cd/mnt/f/gamit_project/cn3_test_2026121/2026 sh_setup-yr2026这里工程目录位于:
/mnt/f/gamit_project/cn3_test_2026121对应 Windows 路径为:
F:\gamit_project\cn3_test_2026121运行sh_setup -yr 2026后,会生成或链接一些关键目录:
rinex/ RINEX 观测文件 brdc/ 广播星历 igs/ 精密轨道、钟差、ERP 等 gfiles/ GAMIT 轨道积分相关文件 tables/ GAMIT 核心控制表文件 gsoln/ GLOBK 结果目录 glbf/ GLOBK binary h-file figs/ 图件输出其中最关键的是:
tables/GAMIT 的很多问题不是程序本身的问题,而是tables中的控制文件没有配置正确。
六、核心表文件
GAMIT/GLOBK 的学习难点之一是表文件较多。初学阶段建议重点理解以下文件:
sites.defaults
控制哪些测站参与处理,哪些测站下载,哪些测站排除。
process.defaults
控制处理路径、采样率、数据源、轨道源、压缩删除等。
station.info
测站仪器信息表,包括接收机、天线、天线高、起止时间等。该文件非常关键,天线高或天线型号错误会直接影响解算结果。
sestbl.
GAMIT 日解算策略表,控制观测组合、对流层、电离层、潮汐、天线模型、轨道模型等。
sittbl.
测站约束表,用于控制测站坐标约束强弱。
lfile.
测站先验坐标文件。如果新站坐标误差过大,可能导致预处理或解算失败。
autcln.cmd
自动清理观测数据的控制文件,涉及周跳探测、粗差剔除、高度角、残差阈值等。
初学阶段,建议优先掌握:
sites.defaults station.info sestbl. sittbl. process.defaults七、测试数据准备
本次测试采用 3 个 IGS 站点的单日数据,测试日期为:
2026-05-01 DOY 121测试站点为:
BJFS HKSL HKWS数据源主要来自武汉大学 IGS 数据中心。
需要准备三类主要文件:
第一类是 RINEX 观测文件,放入:
rinex/例如:
bjfs1210.26o hksl1210.26o hkws1210.26o第二类是广播星历,放入:
brdc/例如:
brdc1210.26n第三类是精密轨道 SP3,放入:
igs/例如:
wum24165.sp3本次测试最终采用 WHU 精密轨道,并在 GAMIT 中使用:
-orbitwuhm八、文件下载与命名
武汉大学 IGS 数据中心可以下载 GNSS 观测文件、广播星历和精密轨道文件。为了便于控制流程,测试时可以先手动下载并放入相应目录,再使用-noftp参数避免 GAMIT 自动联网下载。
RINEX 文件放入:
/mnt/f/gamit_project/cn3_test_2026121/2026/rinex广播星历放入:
/mnt/f/gamit_project/cn3_test_2026121/2026/brdc精密轨道放入:
/mnt/f/gamit_project/cn3_test_2026121/2026/igs需要注意,不同数据中心的目录结构和命名规则并不完全相同。有些精密轨道产品下载后是长文件名,为了让 GAMIT 更容易识别,可以根据 GPS week 和 day of week 改成短文件名,例如:
wum24165.sp3其中2416表示 GPS week,5表示 day of week。
九、运行 GAMIT 日解算
准备好数据和表文件后,进入工程年份目录:
cd/mnt/f/gamit_project/cn3_test_2026121/2026目录结构大致为:
2026/ rinex/ bjfs1210.26o hksl1210.26o hkws1210.26o brdc/ brdc1210.26n igs/ wum24165.sp3 tables/ sites.defaults station.info sestbl. sittbl. process.defaults测试阶段需要检查tables/sites.defaults,确保本次只处理目标站点。
如果sestbl.中开启了本地缺失的模型,例如:
Ion model = GMAP Use otl.grid = Y但本地没有对应的 ionex 文件或海潮负荷格网,可能会导致报错。测试阶段可暂时改为:
Ion model = NONE Use otl.grid = N需要说明的是,正式高精度处理时不能随意省略这些改正。测试阶段这样做只是为了先跑通基本流程。
主解算命令示例:
sh_gamit-exptcn3w-s2026121121-orbitwuhm-noftp-presELEV-coptx k p-doptsc ao-nopngs>&sh_gamit_2026121.log参数含义如下:
-expt cn3w 实验名,后续输出文件会带该名称。 -s 2026 121 121 处理 2026 年第 121 天,即 2026 年 5 月 1 日。 -orbit wuhm 使用 WHU 精密轨道。 -noftp 不让 GAMIT 自动下载,使用本地已准备好的文件。 -pres ELEV 按高度角加权,低高度角观测权重较低。 -copt x k p 处理后压缩部分中间文件。 -dopts c ao 处理后删除部分中间文件。 -nopngs 不生成 PNG 图,减少测试阶段额外输出。十、计算完成后检查结果
GAMIT 跑完后,不应只看最后有没有报错,还要检查几个关键文件。
GAMIT.status
用于快速判断当天处理是否完成。
q-file
GAMIT 的最小二乘解算结果文件。重点关注:
postfit nrms 坐标改正 模糊度固定情况 站点残差autcln.prefit.sum和autcln.post.sum
用于查看数据清理情况,例如:
周跳 粗差 删除率 残差统计h-file
GAMIT 输出的日解结果,后续 GLOBK 平差/组合需要使用。
如果只是流程测试,能够生成 q-file 和 h-file,通常说明 GAMIT 主流程已经跑通。
十一、GLOBK 平差与组合
GAMIT 可以理解为单日或单批数据解算,GLOBK 则用于后续多日、多网、多解的组合和平差。
首先可执行:
sh_glred-cmd该命令会准备标准的:
globk.cmd glorg.cmd然后执行:
sh_glred-s20261212026121-exptcn3w-optH G T>&sh_glred.log其中:
-opt H 将 GAMIT h-file 转换为 GLOBK binary h-file。 -opt G 运行 globk/glorg,进行组合和平差。 -opt T 生成时间序列相关结果。GLOBK 常见输出包括:
*.org *.prt *.pos *.vel *.glx如果后续处理连续多日数据,就可以进一步分析站点重复性、时间序列和速度场。
十二、文件下载、GAMIT 计算与 GLOBK 平差的关系
可以简单理解为:
文件下载 准备 RINEX、广播星历、精密轨道、ERP、表文件等 GAMIT 计算 利用每日观测数据进行基线/网解,生成 q-file、h-file 等结果 GLOBK 平差 将一天或多天的 h-file 进行组合,得到更稳定的坐标、速度场或时间序列也就是说,文件下载是准备原材料;GAMIT 是日解算;GLOBK 是组合和平差。
如果科研目标是获取站点时间序列或速度场,通常不能只停留在sh_gamit,还需要进一步进行sh_glred/globk/glorg处理。
十三、踩坑总结
本次配置和测试中比较重要的经验包括:
- GAMIT 老版本对新 WSL/Linux 内核识别不友好,必要时需要修改
Makefile.config。 gfortran高优化可能导致老 Fortran 文件编译失败,可尝试降低优化级别。csh/tcsh必须安装,否则很多 GAMIT 脚本无法运行。tables文件非常关键,尤其是station.info、sestbl.和sites.defaults。- 初学建议先跑 3 个站、1 天数据,不要一开始就处理几十个站或多年数据。
- F 盘挂载目录适合测试和结果管理,但大规模批量计算建议使用 Linux 原生目录。
- WHU、IGS、CODE 等数据中心的文件命名和目录结构要提前了解。
- 报错时不要只看屏幕最后几行,要检查 log、GAMIT.status 和 q-file。
Ion model、otl.grid、精密轨道、广播星历等文件和参数需要匹配。- GLOBK 是后续时间序列、速度场和参考框架处理的重要环节。
十四、个人理解
GAMIT/GLOBK 的难点不只是安装,而是一整套处理逻辑:
安装软件 配置环境变量 准备 tables 下载 RINEX、轨道和星历 运行 GAMIT 日解算 检查 q-file 和 h-file 运行 GLOBK 组合和平差 输出时间序列或速度场本次测试的意义在于跑通了一个最小闭环:
3 个 IGS 站 1 天数据 WHU 数据源 F 盘挂载工程目录 Ubuntu 18.04 中运行 GAMIT/GLOBK 完成 GAMIT 日解算 理解 GLOBK 平差流程对初学者,建议学习路线为:
第一步:装通 GAMIT/GLOBK 第二步:跑通 3 个站 1 天 第三步:跑 3 个