当前,存在较多的GNSS开源/免费软件,可用于质量检核、RTK解算和PPP解算等,本文总结了部分常用的处理软件,其详细信息如表1和表2所示。
表1 常用GNSS预处理(格式转换、质量检核)软件:
|--------------|---------------------------------|------|-------|
| 软件名称 | 开发单位/个人 | 是否开源 | 可视化功能 |
| TEQC | UNAVCO | 否 | 无 |
| GFZRNX | Thomas NisChan/GFZ | 否 | 无 |
| G-Nut/ANUBIS | Geodetic Observatory Pency(GOP) | 是 | 无 |
| RINGO | Satoshi Kawamoto | 否 | 有 |
表2 常用GNSS数据处理(RTK/PPP)软件:
|------------|----------------|------|---------------------|
| 软件名称 | 作者名称/单位 | 是否开源 | 解算模式 |
| RTKlib | Tomoji Takasu | 是 | PPP、RTK |
| BNC | BKG | 是 | PPP(实时),RTCM数据接收,解码 |
| GAMP | 周锋/山东科技大学 | 是 | PPP |
| PPP pride | 耿江辉/武汉大学 | 是 | PPP(-AR) |
| NetDiff | 张益泽/中科院 | 否 | PPP、RTK |
| SUPREME | 张宝成/中科院 | 是 | PPP |
| Ginaa | Simon Mcclusky | 是 | 实时PPP(-AR) |
| PPP Wizard | CNES | 是 | 实时PPP(-AR) |
| gLAB | UPC | 是 | PPP |
| G-Nut/Geb | GOP | 否 | 实时 PPP(-AR) |
还有一些平台没有列出,目前开源的软件或基于不同的编程语言,或适用于不同的应用场景,能够满足不同GNSS数据处理的功能需求,已经能够大大降低GNSS在各行业集成应用中的难度。然而,目前仍然存在的问题是:
- 开源GNSS软件平台太多,想要找到解算性能和扩展性满足自己开发需求的平台还是要花费一定心力。虽然RTKLIB存在各种问题,但其在我心中依然位列TOP1。
- 对于非专业人员要根据功能需求,利用不同的软件平台实现快速的数据处理仍存在较大的挑战。
基于此,利用QT语言的跨平台特性和Python在数据可视化分析方面的优势开发了一套松耦合的在线GNSS数据处理系统[NavSense],系统架构如图 2所示,处理流程可以表述为:
- 用户层主要是为了满足用户数据上传和处理结果展示的需求。针对事后和实时数据分别设计了Web交互界面和数据传输接口,通过对GNSS数据处理的主要配置参数进行简化,以Json格式配置文件进行数据交互,能够同时满足GNSS数据处理和网页可视化开发中的需求。
- 传输层主要是接收用户层上传的事后/实时数据,以及IGS/MGEX分析中心提供的轨道、钟差等改正产品,并对部分数据进行解码。前端用户提交配置选项和处理文件后,会将相关参数以Json格式通过POST请求传递到后台,后台解析对应参数并按照指定的协议进行数据接收。
- 数据层主要是针对接收到的数据进行解码和分类存储,便于业务处理系统进行分析。
- 服务层通过Python和QT调用保存的传输层保存的Json配置文件和数据层保存的数据,通过对各处理模块的配置文件关键参数的重写,实现对编译后处理模块的直接调用;进一步利用Python脚本实现各模块的结果可视化分析。
图 2 系统架构图
基于上述松耦合的处理设计,系统可以实现GNSS数据预处理(格式转换、质量检核、改正产品下载)、GNSS业务集群处理(质量检核、伪距单点定位(SPP),精密单点定位(PPP)和动态差分相对定位(RTK)解算)和相关结果的统计分析。
至少上述平台在我们自己的数据处理和分析中可以大大提高效率,希望能对其他人也起到帮助作用。