跳到主要内容

系统架构

适合谁需要理解 RTKHUB、STRHUB、EPHUB、SCRHUB 和离线工具关系的读者。
你会看到数据源如何进入 RTKHUB,以及 Web、API、结果文件和日志如何输出。
阅读建议先看组件关系图,再根据部署形态选择单机、内网或工具链部署。
备注

RTKHUB 的目标不是替代所有 GNSS 工具,而是把实时解算、状态监控、流转发、星历汇集、脚本任务和 Web 管理放在一个轻量入口里。对于大型业务系统,建议通过 REST API 集成,而不是直接读取内部数据库。

RTKHUB 是围绕 RTKLIB demo5 构建的多网络 RTK 监控与运维平台。

组件关系

RTKHUB 工具链架构图

核心模块

信息

各模块职责明确、边界清晰:RTKHUB 主程序负责解算与 Web 服务,STRHUB 负责数据流转发,EPHUB 负责星历汇集与分发,SCRHUB 负责脚本任务调度,RNX2RTKP/RNX2RTCM 负责离线处理与测试回放。

模块职责常见使用者
RTKHUB 主程序加载测网配置、启动基线解算、提供 Web/API/日志运维人员、开发集成
Web 控制台展示实时状态、图表、地图、用户管理、Web 终端运维人员
SQLite保存用户、权限、任务、系统设置和审计信息系统内部
CivetWeb内嵌 HTTP 服务,默认端口 5426浏览器、API 客户端
yyjson高性能 JSON 序列化/反序列化库,用于 API 响应构建和配置解析系统内部
STRHUB接收、复制、转发 GNSS 数据流数据流管理员
EPHUB汇集广播星历、去重、缓存、周期重播与多路分发数据流管理员、RTK 解算
SCRHUB管理脚本任务、定时执行巡检或备份运维人员
RNX2RTKP批量后处理 RINEX 数据数据处理人员
RNX2RTCM将 RINEX 转为 RTCM 数据流测试与回放场景

数据流

  1. 数据源通过 tcpclintripcliserialfile 接入。
  2. RTKHUB 按 rtkhub.list 把基线归入不同测网。
  3. 每条基线加载对应 RTKLIB 配置文件并独立解算。
  4. EPHUB 从多个 NTRIP/RTCM3 输入流抽取广播星历,经过去重、缓存和质量控制后,通过 TCP Server 或 NTRIP Server 输出,为 RTK 解算提供稳定星历数据。
  5. 解算状态通过内存状态、日志、结果文件、Web 页面和 API 暴露。
  6. 运维人员可以通过 Web 控制台或 API 启停基线、查看图表、拉取日志。

部署形态

提示

根据规模选择部署方式:小规模验证用单机试运行,真实测网用内网生产部署,需要数据分发或批处理时用工具链部署。

单机试运行

适合验证配置、演示功能和小规模测网:

rtkhub.exe
conf/
result/
logs/

内网生产部署

推荐用于真实测网:

  • RTKHUB 运行在内网 Windows Server。
  • Web 端口只对运维网段开放。
  • 数据源与结果目录放在稳定磁盘。
  • 定期备份 conf/、SQLite 数据库、logs/result/
  • 如需公网访问,通过反向代理或 VPN 暴露,不建议直接开放 5426

工具链部署

当需要数据分发或批处理时,可以把工具拆分到不同目录或机器:

  • STRHUB 负责接入外部 NTRIP/TCP/串口源并转发。
  • EPHUB 负责从多路输入汇集广播星历,经去重和质量控制后分发给 RTKHUB 或远程 caster。
  • RTKHUB 只消费稳定后的数据流。
  • SCRHUB 定时执行巡检、归档、压缩、结果上传。
  • RNX2RTKP / RNX2RTCM 用于离线处理和测试回放。

目录建议

D:\rtkhub\
├─ rtkhub.exe
├─ conf\
│ ├─ rtkhub.list
│ └─ XANet\
├─ data\
├─ result\
├─ logs\
├─ backup\
├─ ephub\
└─ tools\
├─ strhub\
├─ rnx2rtkp\
└─ rnx2rtcm\

扩展边界

RTKHUB 适合做测网运行监控和轻量控制。对于大型业务系统,建议通过 REST API 集成,而不是直接读取内部数据库。这样升级 RTKHUB 时,外部系统只需要保持 API 协议稳定。

完整项目结构

rtkhub/
├── archive/ 历史版本归档
├── conf/ 网络与通道配置文件
├── database/ 运行时 SQLite 数据库(用户库、审计库、SCRHUB 任务库自动生成)
├── doc/ 用户手册(STRHUB、RNX2RTCM)
├── logs/ RTKLIB 调试与运行日志(按配置生成)
├── public/ Web 前端静态资源
│ ├── css/ 页面样式、设计令牌与通用 UI 原语
│ │ ├── tokens.css 全局颜色、阴影、圆角、间距令牌
│ │ ├── ui.css 通用按钮、卡片、徽标、空状态、工具栏和表单控件
│ │ └── ephub.css EPHUB 管理页面样式
│ ├── js/ 前端模块(app、monitor、admin、scrhub、auth 等)
│ │ └── ephub.js EPHUB 前端逻辑与状态轮询
│ ├── vendor/ 本地依赖(ECharts、Leaflet)
│ ├── ephub.html EPHUB 独立管理入口
│ └── monitor.html STRHUB 独立管理入口
├── script/ SCRHUB 可扫描和执行的脚本目录
├── src/
│ ├── 3rdparty/ CivetWeb、SQLite、SHA-256、yyjson 等第三方 C 源码
│ ├── main/ RTKHUB 控制台与 RTK 管理逻辑
│ ├── rtklib/ RTKLIB 核心源码
│ ├── scrhub/ SCRHUB 任务管理、脚本扫描、执行日志 API
│ ├── terminal/ 虚拟终端支持
│ └── web_server/ 嵌入式 HTTP 服务器与 Web API 桥接
├── util/ 实用工具(diffeph、dumpssr、geniono 等)
│ └── ephub/ EPHUB 后端源码
├── tools/ 开发与验证工具
│ ├── check-css-tokens.js CSS typography 令牌检查脚本
│ └── verify_ephub_fixes.ps1 EPHUB 安全修复验证脚本
├── ephub/ EPHUB Visual Studio 工程
├── rnx2rtcm/ RNX2RTCM Visual Studio 工程
├── rnx2rtkp/ RNX2RTKP Visual Studio 工程
├── strhub/ STRHUB Visual Studio 工程
├── CMakeLists.txt CMake 构建配置
├── rtkhub.sln Visual Studio 解决方案
└── rtkhub.vcxproj Visual Studio 项目文件

技术栈

后端技术

技术说明
核心语言C/C++(C99 标准)
GNSS 引擎RTKLIB demo5(RTK 定位核心)
HTTP 服务器CivetWeb(嵌入式 Web 服务器)
数据库SQLite 3(用户认证与会话管理)
JSON 库yyjson(高性能 JSON 读写)
线程安全Windows CRITICAL_SECTION / Linux pthread_mutex

前端技术

技术说明
核心语言原生 JavaScript(ES6+,零框架依赖)
HTTP 请求Fetch API(无 jQuery)
图表库ECharts 5.x(实时曲线、卫星图)
地图库Leaflet 1.x(网络分布可视化)
图表库(STRHUB)ECharts 5.x(流转发吞吐量图表)
样式原生 CSS3,基于 tokens.cssui.css 统一按钮、卡片、徽标、空状态、工具栏和表单控件

构建工具

工具说明
Visual Studio 2022主要构建方式(Windows)
CMake 3.15+跨平台构建支持
Git版本控制

支持的 GNSS 系统

系统标识国家/地区
GPSG美国
GLONASSR俄罗斯
GalileoE欧盟
BDS/北斗C中国
QZSSJ日本
NavIC/IRNSSI印度

支持的数据格式

格式说明
RINEX2.x / 3.x(观测值、导航电文)
RTCM2.x / 3.x(实时数据流)
NTRIP1.0 / 2.0(网络差分数据)
精密产品SP3、CLK、ERP、DCB、TEC、ION