2024-08-07升级记录:北斗卫星导航系统轨道信息解释

        北斗三号全球星座由地球静止轨道(GEO)、倾斜地球同步轨道(IGSO)、中圆地球轨道(MEO)三种轨道卫星组成,北斗人称这三种卫星为“北斗三兄弟”。

                    三种轨道区别:

1、GEO卫星

        位于距地球约3.6万千米、与赤道平行且倾角为0°的轨道。GEO卫星定点于赤道上空,理论上星下点轨迹(即卫星运行轨迹在地球上的投影)是一个点,因其运动周期与地球自转周期相同,相对地面保持静止,所以称作地球静止轨道卫星。 

  GEO卫星单星信号覆盖范围很广,一般来说,三颗GEO卫星就可实现对全球除南北极之外绝大多数区域的信号覆盖。GEO卫星始终随地球自转而动,对覆盖区域内用户的可见性达到100%。同时,GEO卫星因轨道高,具有良好的抗遮蔽性,在城市、峡谷、山区等具有十分明显的应用优势。 

2、IGSO卫星

        与GEO卫星轨道高度相同,运行周期也与地球自转周期相同,但其运行轨道面与赤道面有一定夹角,所以称作倾斜同步轨道卫星。IGSO卫星星下点轨迹呈现“8”字形。 

  与GEO卫星同为高轨卫星,IGSO卫星信号抗遮挡能力强,尤其在低纬度地区,其性能优势明显。IGSO总是覆盖地球上某一个区域,可与GEO卫星搭配,形成良好的几何构型,一定程度上克服GEO卫星在高纬度地区仰角过低带来的影响。同时,由于我国地处北半球,GEO在赤道平面内运行,由于高大山体、建筑物的遮挡,在其北侧的用户难以接收GEO卫星信号,即存在北坡效应问题,而IGSO卫星可有效缓解这一问题的影响。 

3、MEO卫星

        星如其名,小巧灵活。全球卫星导航系统星座多由MEO卫星组成,运行轨道在约2万公里高度轨道。MEO卫星像极了不知疲倦的小萌娃,在自己的跑道上绕着地球一圈又一圈地奔跑,星下点轨迹不停地画着波浪线,以便覆盖到全球更广阔的区域。 

  MEO卫星因其全球运行、全球覆盖的特点,是全球卫星导航系统实现全球服务的最优选择。

        在北斗三号全球卫星导航系统的30颗组网卫星中,有24颗在中圆地球轨道,轨道高度21528公里,周期约12小时,24颗平均分布在3个轨道面上,轨道面之间相隔120°(升交点赤经分别相差120°)均匀分布,轨道倾角为55°(轨道平面与赤道面夹角)。每条轨道上的MEO卫星又间隔分布在轨道的各个相位,保证地球自转时,卫星能时间和空间同时均匀的扫过地表。这24颗卫星在2019年已经完成发射。中圆地球轨道(MEO)卫星是导航系统最基础的轨道星座。GPS就只是采用了这种轨道设计。

信息来源:

每颗北斗卫星都有自己的功用!icon-default.png?t=N7T8http://www.beidou.gov.cn/zy/kpyd/202007/t20200713_20772.html

 

您希望的输出格式如下: ``` 2024-06-07 00:00:0.0000 C C01 B1 37450019.4140 I 195012125.9830 I 40.6910 I 40.9000 I 2024-06-07 00:00:0.0000 C C01 B3 37450014.6840 I 158463326.6060 I 33.0660 I 41.9000 I ... ``` ### ✅ 输出结构说明: 每行包含: - 时间(年月日时分秒) - 系统字母(如 `C` 表示 BDS) - 卫星 PRN(如 `C01`) - 频率名称(`B1` 或 `B3`) - 伪距(Pseudorange,单位 m) - 载波相位(Carrier Phase,单位周) - 多普勒(Doppler,单位 Hz) - 信噪比(SNR,单位 dB-Hz) - 所有观测值后加标志 `I`(表示质量良好) --- ### ✅ 修改目标 我们将原程序的输出部分替换为这种 **单频、逐行输出** 的格式,并确保: - 每颗卫星的 **B1 和 B3 各占一行** - 时间精确到毫秒 `.0000` - 数值保留 **4 位小数** - 使用 `I` 标记每个观测值(可后续用于精密处理软件) --- ### ✅ 替换 `write_output()` 函数 将原来的 `write_output()` 函数替换为以下版本: ```c void write_output(const char *filename) { FILE *out = fopen(filename, "w"); if (!out) { printf("无法创建输出文件: %s\n", filename); return; } for (int i = 0; i < output_line_count; i++) { OutputLine *ol = &output_lines[i]; // 输出 B1 行 fprintf(out, "%04d-%02d-%02d %02d:%02d:0.0000 %c %c%02d B1 %12.4f I %12.4f I %12.4f I %12.4f I\n", ol->year, ol->month, ol->day, ol->hour, ol->minute, ol->sys_char, ol->sys_char, ol->prn, ol->p1 > 0 ? ol->p1 : 0.0, // 伪距 P1 ol->l1 > 0 ? ol->l1 : 0.0, // 载波 L1 ol->d1, // 多普勒 D1 ol->s1); // 信噪比 S1 // 输出 B3 行(若存在) if (ol->p2 > 0 || ol->l2 > 0) { fprintf(out, "%04d-%02d-%02d %02d:%02d:0.0000 %c %c%02d B3 %12.4f I %12.4f I %12.4f I %12.4f I\n", ol->year, ol->month, ol->day, ol->hour, ol->minute, ol->sys_char, ol->sys_char, ol->prn, ol->p2 > 0 ? ol->p2 : 0.0, ol->l2 > 0 ? ol->l2 : 0.0, ol->d2, ol->s2); } } fclose(out); } ``` > ⚠️ 注意:对于 GPS/Galileo 等系统,请根据实际频率命名调整(如 L1/L2、E1/E5a),但您示例是 BDS,所以用 `B1/B3`。 --- ### ✅ 如果只想输出 BDS(C 系统)卫星 可在循环中添加过滤: ```c if (ol->sys_char != 'C') continue; // 只输出北斗 ``` 完整修改如下: ```c for (int i = 0; i < output_line_count; i++) { OutputLine *ol = &output_lines[i]; // 可选:只输出北斗系统 if (ol->sys_char != 'C') continue; fprintf(out, "%04d-%02d-%02d %02d:%02d:0.0000 %c %c%02d B1 %12.4f I %12.4f I %12.4f I %12.4f I\n", ol->year, ol->month, ol->day, ol->hour, ol->minute, ol->sys_char, ol->sys_char, ol->prn, ol->p1 > 0 ? ol->p1 : 0.0, ol->l1 > 0 ? ol->l1 : 0.0, ol->d1, ol->s1); if (ol->p2 > 0 || ol->l2 > 0) { fprintf(out, "%04d-%02d-%02d %02d:%02d:0.0000 %c %c%02d B3 %12.4f I %12.4f I %12.4f I %12.4f I\n", ol->year, ol->month, ol->day, ol->hour, ol->minute, ol->sys_char, ol->sys_char, ol->prn, ol->p2 > 0 ? ol->p2 : 0.0, ol->l2 > 0 ? ol->l2 : 0.0, ol->d2, ol->s2); } } ``` --- ### ✅ 示例输出(匹配您的需求) ``` 2024-06-07 00:00:0.0000 C C01 B1 37450019.4140 I 195012125.9830 I 40.6910 I 40.9000 I 2024-06-07 00:00:0.0000 C C01 B3 37450014.6840 I 158463326.6060 I 33.0660 I 41.9000 I 2024-06-07 00:00:0.0000 C C02 B1 37584757.1880 I 195713782.8580 I 3.6050 I 37.4000 I 2024-06-07 00:00:0.0000 C C02 B3 37584749.8360 I 159033489.2370 I 2.9300 I 41.0000 I ... ``` --- ### ✅ 说明 | 字段 | 内容 | |------|------| | `%04d-%02d-%02d %02d:%02d:0.0000` | 固定秒为 `0.0000`,因整点数据 | | `%c %c%02d` | 如 `C C01`,系统+PRN | | `B1 / B3` | 北斗频率标识 | | `%12.4f I` | 观测值 + 空格 + `I` 标志 | | 条件判断 | 若 `p2/l2` 无效则不输出 B3 行 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值