系统架构
适合谁需要理解 RTKHUB、STRHUB、EPHUB、SCRHUB 和离线工具关系的读者。
你会看到数据源如何进入 RTKHUB,以及 Web、API、结果文件和日志如何输出。
阅读建议先看组件关系图,再根据部署形态选择单机、内网或工具链部署。
备注
RTKHUB 的目标不是替代所有 GNSS 工具,而是把实时解算、状态监控、流转发、星历汇集、脚本任务和 Web 管理放在一个轻量入口里。对于大型业务系统,建议通过 REST API 集成,而不是直接读取内部数据库。
RTKHUB 是围绕 RTKLIB demo5 构建的多网络 RTK 监控与运维平台。
组件关系
核心模块
信息
各模块职责明确、边界清晰: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 数据流 | 测试与回放场景 |
数据流
- 数据源通过
tcpcli、ntripcli、serial或file接入。 - RTKHUB 按
rtkhub.list把基线归入不同测网。 - 每条基线加载对应 RTKLIB 配置文件并独立解算。
- EPHUB 从多个 NTRIP/RTCM3 输入流抽取广播星历,经过去重、缓存和质量控制后,通过 TCP Server 或 NTRIP Server 输出,为 RTK 解算提供稳定星历数据。
- 解算状态通过内存状态、日志、结果文件、Web 页面和 API 暴露。
- 运维人员可以通过 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.css 与 ui.css 统一按钮、卡片、徽标、空状态、工具栏和表单控件 |
构建工具
| 工具 | 说明 |
|---|---|
| Visual Studio 2022 | 主要构建方式(Windows) |
| CMake 3.15+ | 跨平台构建支持 |
| Git | 版本控制 |
支持的 GNSS 系统
| 系统 | 标识 | 国家/地区 |
|---|---|---|
| GPS | G | 美国 |
| GLONASS | R | 俄罗斯 |
| Galileo | E | 欧盟 |
| BDS/北斗 | C | 中国 |
| QZSS | J | 日本 |
| NavIC/IRNSS | I | 印度 |
支持的数据格式
| 格式 | 说明 |
|---|---|
| RINEX | 2.x / 3.x(观测值、导航电文) |
| RTCM | 2.x / 3.x(实时数据流) |
| NTRIP | 1.0 / 2.0(网络差分数据) |
| 精密产品 | SP3、CLK、ERP、DCB、TEC、ION |