首页/新闻资讯/正文详情

Anubis批处理工具:多天多站GNSS数据质量分析实战

发布时间:2026/9/28 1:29:40 来源:云帆数科 栏目:资讯中心
Anubis批处理工具:多天多站GNSS数据质量分析实战
简介这份资源面向需要批量处理GNSS数据质量分析的科研人员与工程技术人员核心是围绕Anubis软件构建的多天多站批处理方案。相比原版每次只能处理单日数据、且需手动修改配置文件的低效方式该工具通过批处理脚本实现多天多站数据的连续自动化处理显著减少重复劳动适合具备一定GNSS数据处理基础、希望提升作业效率的用户。压缩包共56个文件约90.6MB以21n、21o等观测与导航数据文件、xtr与xqc质量分析结果文件为主同时包含bat批处理脚本、exe可执行程序、py绘图脚本、cfg配置文件及txt说明文档并附有使用录屏与示例数据便于快速理解完整流程。目前已有822人学习下载。资源不仅提供可运行的批处理工具还包含批量修改导航文件名、获取文件名等辅助脚本以及参考结果与配置模板读者可据此搭建从数据准备、批量解算到结果绘图的完整链路并借助说明文档与录屏排查常见问题对需要处理大量多天多站GNSS数据的场景具有较高实用价值。1. 多天多站 GNSS 数据质量分析Anubis 批处理工具到底解决了什么如果你手头攒了十几个测站连续几天的观测文件用原版 Anubis 跑质量分析大概率经历过这种循环改一次conf.cfg里的测站名和日期双击Anubis.exe等它跑完再改配置再跑。一天多站还能忍多天多站就是纯体力活。run_anubis_批处理_多天多站这个工具包针对的就是这个场景——它把 Anubis 的调用、配置切换、结果绘图串成了一条批处理流水线一次触发就能把多天多站的.21o/.21n观测文件全部过一遍输出.xtr、.xqc质量报告和对应的图。适合做 GNSS 地基定位、时间同步、CORS 站网运维的工程师也适合需要批量出质量报表的科研人员。它不改变 Anubis 本身的分析算法改的是怎么喂数据、怎么收结果这一层。2. 拆开压缩包文件清单与批处理调用链2.1 核心可执行文件与脚本的分工拿到这个包先别急着双击。把文件按角色分一下类后面排错会快很多。包里有两套Anubis.exe和Runanubisandplot.exe还有11.bat、filename.bat、获取文件名.bat三个批处理脚本以及anubisplot.py这个 Python 绘图脚本。它们不是并列关系而是一条调用链。Anubis.exe是分析内核读conf.cfg决定分析哪些站、哪些天、用什么采样率。Runanubisandplot.exe是封装层负责按顺序调 Anubis 再调绘图。11.bat是总入口你最终双击的是它。filename.bat和获取文件名.bat负责从观测文件目录里提取测站名和日期生成测站名.txt供配置使用。anubisplot.py把.xtr结果转成可视化图。文件角色是否需手动改11.bat总入口串联全流程改路径Anubis.exe质量分析内核否Runanubisandplot.exe调用 Anubis 绘图否conf.cfg/conf.cfg1/conf.cfg2分析配置模板按需filename.bat/获取文件名.bat提取测站名与日期改目录anubisplot.py结果绘图改输入路径测站名.txt测站列表是example_demo示例数据否理解这张表你就明白为什么批量修改导航文件名那个录屏是必看的——文件名不规范filename.bat提取不出测站名整条链就断在第一步。2.2 批处理脚本怎么把多天多站串起来原版 Anubis 一次只认一组配置多天多站要跑 N 次。这个包的思路是用批处理循环把天和站两个维度展开成文件列表逐个喂给 Anubis。核心逻辑在11.bat里结构大致是这样echo off REM 11.bat 主流程遍历测站与日期逐个调用 Anubis setlocal enabledelayedexpansion REM 观测文件所在目录按实际改 set OBS_DIR.\example_demo REM 结果输出目录 set OUT_DIR.\参考结果 REM 从测站名.txt 逐行读取测站 for /f tokens* %%S in (测站名.txt) do ( echo 正在处理测站: %%S REM 对每个测站遍历该站所有观测文件多天 for %%F in (%OBS_DIR%\%%S*.21o %OBS_DIR%\%%S*.21n) do ( echo 处理文件: %%~nxF REM 调用封装程序传入当前文件 Runanubisandplot.exe %%F %OUT_DIR% ) ) echo 全部处理完成 pause这段脚本的关键在两层for外层读测站名.txt拿站名内层用通配符%%S*.21o匹配该站所有天的观测文件。enabledelayedexpansion是为了在循环内正确展开变量不加这个!变量会失效——这是批处理里最常见的翻车点之一。参数说明OBS_DIR指向观测文件目录OUT_DIR指向结果目录两个都要按你的实际路径改。Runanubisandplot.exe接收两个参数第一个是单个观测文件路径第二个是输出目录。如果你的观测文件命名不是站名日期.21o这种格式内层通配符匹配不到需要先看批量修改导航文件名那个录屏把文件名规整成 Anubis 认的格式。提示测站名.txt里一行一个站名不要带空格和空行否则外层循环会读到空值Anubis 报找不到文件。2.3 conf.cfg 里真正要动的几个参数conf.cfg是 Anubis 的行为开关。包里给了conf.cfg、conf.cfg1、conf.cfg2三个版本大概率对应不同的分析模式或采样率。你不需要全懂但有几个参数必须知道在哪、改了会怎样。# conf.cfg 关键片段示意按实际文件为准 # 输入文件路径批处理会动态替换 INPUT_FILE example_demo\WUH22670.21o # 输出结果前缀 OUTPUT_PREFIX 参考结果\WUH22670 # 采样间隔秒30 表示 30 秒采样 INTERVAL 30 # 高度截止角度 ELEVATION_CUTOFF 10 # 是否输出 XTR 报告 OUTPUT_XTR YES # 是否输出 XQC 报告 OUTPUT_XQC YESINTERVAL要和你的观测数据实际采样率一致RINEX 观测文件头里写着设错了 Anubis 会按错误间隔统计质量指标全偏。ELEVATION_CUTOFF一般设 10 度低仰角多路径严重设太低会把噪声算进去。OUTPUT_XTR和OUTPUT_XQC决定出不出报告批处理场景下两个都开后面绘图要用.xtr。批处理脚本在调用时通常会根据当前处理的文件动态改写INPUT_FILE和OUTPUT_PREFIX所以你手动改conf.cfg只影响单次运行批量跑的时候以脚本传入的为准。这也是为什么直接双击Anubis.exe和双击11.bat结果不一样——前者读你手改的配置后者走脚本动态配置。3. 从零跑通一次多天多站批处理3.1 环境准备与目录规整先把压缩包解到不含中文和空格的路径下比如D:\gnss\anubis_batch。中文路径在批处理里容易出编码问题for循环读文件名时可能乱码这是血泪经验。解压后你会看到example_demo目录里面是示例观测文件先用它验证流程别一上来就上自己的数据。目录结构建议整理成这样D:\gnss\anubis_batch\ ├── 11.bat ├── Anubis.exe ├── Runanubisandplot.exe ├── anubisplot.py ├── conf.cfg ├── 测站名.txt ├── example_demo\ # 观测文件放这里 │ ├── WUH22670.21o │ ├── POTS2670.21o │ └── ... └── 参考结果\ # 结果输出到这里观测文件命名要符合站名年积日年.21o的格式比如WUH22670.21o表示 WUH2 站第 267 天 2021 年。filename.bat就是按这个规则提取站名和日期的。如果你的文件是WUH2_2021_267.21o这种先跑批量修改导航文件名那个工具改名否则提取逻辑对不上。3.2 生成测站名.txt 并检查测站名.txt是外层循环的数据源。你可以手动写也可以用获取文件名.bat自动生成。手动写就是一行一个站名WUH2 POTS SUTM TITG PTGG URUM ULAB自动生成的话获取文件名.bat大致逻辑是从example_demo目录里提取所有.21o文件的前四个字符去重后写入测站名.txtecho off REM 获取文件名.bat从观测文件提取测站名 setlocal enabledelayedexpansion set OBS_DIR.\example_demo set OUT_FILE测站名.txt if exist %OUT_FILE% del %OUT_FILE% REM 遍历所有 .21o 文件取前4位作为站名 for %%F in (%OBS_DIR%\*.21o) do ( set FNAME%%~nF set STATION!FNAME:~0,4! echo !STATION!%OUT_FILE% ) REM 去重简单排序去重 sort %OUT_FILE% /unique %OUT_FILE%.tmp move /y %OUT_FILE%.tmp %OUT_FILE% echo 测站名已生成请检查 %OUT_FILE% pause%%~nF取文件名不含扩展名!FNAME:~0,4!取前四个字符。sort /unique去重。生成后一定打开测站名.txt看一眼确认没有空行、没有多余字符。如果站名不是四位比如三位或五位改~0,4里的数字。3.3 执行 11.bat 并观察输出确认测站名.txt和观测文件就位后双击11.bat。窗口会逐行打印正在处理的测站和文件。正常输出类似正在处理测站: POTS 处理文件: POTS2670.21o 处理文件: POTS2670.21n 正在处理测站: PTGG 处理文件: PTGG2670.21o ... 全部处理完成每处理一个文件参考结果目录下会多出对应的.xtr、.xqc和anubis.log。.xtr是质量分析文本报告.xqc是另一种格式的检查报告anubis.log是运行日志。如果某个文件处理失败日志里会有具体报错常见的是文件头解析失败或采样间隔不匹配。跑完后检查参考结果目录文件数应该等于观测文件数乘以输出类型数。比如 7 个站各 2 天共 14 个观测文件每个出.xtr和.xqc那应该有 28 个结果文件加 14 个日志。数量对不上就去看哪个站的日志报错了。3.4 用 anubisplot.py 出图文本报告看着累anubisplot.py把.xtr转成图。它依赖 Python 环境常见的是 Python 3.x 加 matplotlib。先确认环境python --version pip install matplotlib numpy然后改脚本里的输入路径指向参考结果目录# anubisplot.py 关键配置 import os import matplotlib.pyplot as plt # 结果目录按实际改 RESULT_DIR r.\参考结果 # 输出图片目录 PLOT_DIR r.\参考结果\plots os.makedirs(PLOT_DIR, exist_okTrue) # 遍历所有 .xtr 文件 for fname in os.listdir(RESULT_DIR): if not fname.endswith(.xtr): continue xtr_path os.path.join(RESULT_DIR, fname) # 解析 xtr 中的质量指标按实际格式调整解析逻辑 # ... 解析代码 ... # 绘图并保存 # plt.savefig(os.path.join(PLOT_DIR, fname.replace(.xtr, .png)))RESULT_DIR指向结果目录PLOT_DIR是图片输出目录脚本会自动创建。解析逻辑取决于.xtr的实际格式包里给的脚本应该已经适配了 Anubis 的输出格式你主要改路径。跑完后plots目录下每个站每天一张图多路径、信噪比、周跳这些指标一眼能看出来。注意如果anubisplot.py报找不到模块先确认 pip 装在了当前 Python 环境下别装到另一个版本去了。用python -m pip install matplotlib更稳。4. 避坑与排查批处理跑不通时先看这几条4.1 现象双击 11.bat 一闪而过什么都没发生原因批处理里某条命令报错后直接退出窗口来不及显示。最常见的是测站名.txt不存在或为空外层for读不到内容或者Runanubisandplot.exe路径不对。解决在11.bat末尾的pause之前加一行echo 当前目录: %CD%确认工作目录正确。然后在每个for循环里加echo打印当前处理的文件定位断在哪一步。也可以把echo off改成echo on让所有命令都回显。4.2 现象Anubis 报cannot open input file原因conf.cfg里的INPUT_FILE路径和实际文件对不上或者批处理传入的文件名带了引号导致路径解析错误。解决检查Runanubisandplot.exe调用时传的参数文件名如果含空格必须加引号不含空格加了引号某些版本也会出问题。先手动用单个文件跑一次Anubis.exe确认配置正确再走批处理。另外确认观测文件确实是 RINEX 格式.21o是观测文件.21n是导航文件别把导航文件当观测文件喂进去。4.3 现象结果文件生成了但内容是空的或全是 0原因采样间隔INTERVAL设错或者观测文件本身数据质量太差、有效历元太少。也可能是ELEVATION_CUTOFF设太高把所有卫星都滤掉了。解决打开观测文件头看INTERVAL字段实际是多少改成一致。ELEVATION_CUTOFF先设 5 度试一次确认有数据再调回 10 度。如果还是空用文本编辑器打开.xtr看头部有没有no data之类的提示确认文件本身没坏。4.4 现象anubisplot.py 报编码错误原因.xtr文件里含中文或特殊字符Python 默认用 UTF-8 读遇到 GBK 编码就崩。Windows 下 Anubis 输出的日志和报告有时是 GBK。解决在open()里显式指定编码with open(xtr_path, r, encodinggbk, errorsignore) as f: content f.read()errorsignore跳过无法解码的字符避免整个脚本挂掉。如果还是不行用chardet检测编码后再读。4.5 现象多天数据只处理了第一天原因内层for的通配符匹配范围不对或者观测文件命名不统一只有第一天的文件符合站名*.21o模式。解决在example_demo目录下手动执行dir WUH2*.21o看能列出几个文件。如果只有一天说明其他天的文件名格式不同需要先用改名工具统一。批处理的通配符是能匹配多少就处理多少不会报错说少了一天所以结果数量对不上时优先查文件名。5. 进阶把批处理改成可配置、可复用的流水线跑通一次之后你大概率不想每次都手动改11.bat里的路径。我的习惯是把可变部分抽到一个config.bat里主脚本call它这样换项目只改一个文件。REM config.bat所有可变参数集中在这里 set OBS_DIRD:\gnss\data\2021_267 set OUT_DIRD:\gnss\results\2021_267 set STATION_FILE测站名.txt set ANUBIS_EXE.\Anubis.exe set PLOT_SCRIPT.\anubisplot.py主脚本开头加call config.bat后面全用%OBS_DIR%这类变量。换一批数据只改config.bat四行11.bat不动。这个习惯是从多次改错路径的教训里来的——有次直接改主脚本改漏了一处跑了半小时才发现结果全输出到旧目录白等。再进一步可以把anubisplot.py也纳入批处理调用跑完分析直接出图不用手动再跑一次 Python。在11.bat末尾加REM 分析完成后自动绘图 python anubisplot.py if %errorlevel% neq 0 ( echo 绘图失败请检查 Python 环境和路径 )%errorlevel%判断上一条命令的返回码非 0 说明绘图出错打印提示但不中断。这样一条命令从原始观测文件到质量图全出来。验证批处理是否真的处理了所有数据我一般用文件计数对账观测文件数乘以 2.xtr和.xqc应该等于结果目录里的报告文件数。写个简单的对账脚本echo off REM 对账观测文件数 vs 结果文件数 set OBS_COUNT0 set RES_COUNT0 for %%F in (%OBS_DIR%\*.21o) do set /a OBS_COUNT1 for %%F in (%OUT_DIR%\*.xtr) do set /a RES_COUNT1 echo 观测文件: %OBS_COUNT% echo XTR 报告: %RES_COUNT% if %OBS_COUNT% neq %RES_COUNT% ( echo 数量不一致有文件未处理成功请检查日志 ) else ( echo 数量一致批处理完整 ) pause这个对账脚本救过我几次——有一次某个站的观测文件权限不对Anubis 静默跳过没报错靠数量对账才发现少了一个站。从那以后我每次跑完批处理都强制走一遍对账确认观测文件数和报告数一致再看日志里有没有 warning。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

WinUSB驱动绑定解决J-Link OpenOCD LIBUSB_ERROR_NOT_SUPPORTED
WinUSB驱动绑定解决J-Link OpenOCD LIBUSB_ERROR_NOT_SUPPORTED

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:29:34

ROS无人机动态二维码精准降落:从视觉识别到控制实战
ROS无人机动态二维码精准降落:从视觉识别到控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:29:33

网站建设与设计的论文避坑指南
网站建设与设计的论文避坑指南

网站建设与设计论文源码下载避坑指南3招省一半钱 找建站公司怕被坑高价?别急,先搞懂“网站建设与设计的论文”这类学术或展示型站点的真实成本结构。很多甲方一上来就找外包,结果报价单里藏着无数隐形收费。其实,这类站点技术栈并不复杂,核心在于需求拆… · 2026/9/28 1:29:33

Win11直装ISE 14.7:跳过虚拟机,老FPGA工具链完美运行
Win11直装ISE 14.7:跳过虚拟机,老FPGA工具链完美运行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:55:49

SoC存储体系详解:从Cache到eFuse,嵌入式芯片存储选型与设计
SoC存储体系详解:从Cache到eFuse,嵌入式芯片存储选型与设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:55:43

QNX内存排查利器:pmap命令详解与实战技巧
QNX内存排查利器:pmap命令详解与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:55:43

Windows内核I2C驱动实战:从用户态到KMDF的完整通信链路
Windows内核I2C驱动实战:从用户态到KMDF的完整通信链路

简介:Sensy 是一套面向嵌入式与 Windows 内核驱动学习者的教育性质源码项目,围绕 I2C 设备通信展开,从用户模式逐步深入到 KMDF 驱动开发,适合具备一定 C 基础、希望理解 Windows 驱动框架与 SPB 总线机制的开发者参考实践。资源包… · 2026/9/28 1:55:43

C#上位机集成Unet语义分割:ONNX模型GPU推理实战与踩坑
C#上位机集成Unet语义分割:ONNX模型GPU推理实战与踩坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:55:42

OpenCV预处理+CRNN识别:车牌识别毕设落地全链路
OpenCV预处理+CRNN识别:车牌识别毕设落地全链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 1:55:42

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

制作网页比较方便的软件怎么选?一文搞懂避坑指南
制作网页比较方便的软件怎么选?一文搞懂避坑指南

制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码