RTKPLOT导出卫星数据并进行Python天空图绘制

RTKPLOT导出卫星数据并进行Python天空图绘制

RTKPLOT导出卫星数、DOP值、高度角等信息

依次点击File->Open Obs File,File->Open Nav File,分别导入观测文件及导航文件。点击右上角的设置,在Satellite System中选择卫星系统,Elevation Mask中设置卫星截止高度角。
在这里插入图片描述
在这里插入图片描述

依次点击File->Save # of Sats/DOP 可对可见卫星数/DOP值进行保存。依次点击File->Save AZ/EL/SNR/MP可对卫星方位角/卫星高度角/信噪比/L1多路径进行保存,保存数据如下,可以此进行重绘制。

在这里插入图片描述

【Python】根据导出的AZ/EL/SNR/MP数据进行天空图绘制

单系统代码:

import math
import matplotlib.pyplot as plt

f = open('cpt-base.txt', 'r') #Add the derived file path

ID=[]
AZ=[]
EL=[]

ln = f.readline()
while ln:
    ln = f.readline()
    if not ln:
        break
    str = ln.split()

    id = str[2]
    az = float(str[3])/180*math.pi
    el = 90 - float(str[4])
    
    ID.append(id)
    AZ.append(az)
    EL.append(el)

f.close()
ax = plt.subplot(111, projection='polar')
ax.set_theta_direction(-1)
ax.set_theta_zero_location('N')
ax.set_rticks([0,15,30,45,60,75,90])

satnum = 32
if  (ID[0][0] == 'G'):
    satnum = 32
elif(ID[0][0] == 'R'):
    satnum = 27
elif(ID[0][0] == 'E'):
    satnum = 36
elif(ID[0][0] == 'C'):
    satnum = 51
SATAZ=[]
SATEL=[]
SATID=[]
for i in range(1,satnum):
    for j in range(0,len(ID)):
        if int(ID[j][1:3])==i:
            az=AZ[j]
            SATAZ.append(az)
            el=EL[j]
            SATEL.append(el)
            id=ID[j]
            SATID.append(id)
    if len(SATAZ)>0:
        c = ax.scatter(SATAZ,SATEL,s=1, marker=".",alpha=0.75)

        ax.text(SATAZ[0],SATEL[0],SATID[0])
        SATAZ = []
        SATEL = []
        SATID = []

ax.yaxis.set_label_position('right')
ax.tick_params('y', labelleft=False)
plt.savefig('skyplot.jpg', dpi=360)
plt.show()

单系统结果:
在这里插入图片描述
多系统代码:

import math
import matplotlib.pyplot as plt

f = open('AZ_EL_SNR_MP.txt', 'r')

ID=[]
PRN=[]
AZ=[]
EL=[]

ln = f.readline()
while ln:
    ln = f.readline()
    if not ln:
        break
    str = ln.split()

    id = str[2]
    prn = int(str[2][1:3])
    if (str[2][0] == 'R'):
        prn = prn+ 32
    elif (str[2][0] == 'E'):
        prn = prn+ 59
    elif (str[2][0] == 'C'):
        prn = prn+ 95
    az = float(str[3])/180*math.pi
    el = 90 - float(str[4])

    ID.append(id)
    PRN.append(prn)
    AZ.append(az)
    EL.append(el)
f.close()
ax = plt.subplot(111, projection='polar')
ax.set_theta_direction(-1)
ax.set_theta_zero_location('N')
ax.set_rticks([0,15,30,45,60,75,90])

SATAZ=[]
SATEL=[]
SATID=[]
for i in range(1,146):
    for j in range(0,len(ID)):
        if int(PRN[j])==i:
            az=AZ[j]
            SATAZ.append(az)
            el=EL[j]
            SATEL.append(el)
            id=ID[j]
            SATID.append(id)
    if len(SATAZ)>0:
        if i<=32:
            c = ax.scatter(SATAZ, SATEL,s=1, color='b', marker=".", alpha=0.75)
        elif i<=59:
            c = ax.scatter(SATAZ, SATEL,s=1, color='r', marker=".", alpha=0.75)
        elif i<=95:
            c = ax.scatter(SATAZ, SATEL,s=1, color='g', marker=".", alpha=0.75)
        else:
            c = ax.scatter(SATAZ, SATEL,s=1, color='y', marker=".", alpha=0.75)
        middle=int(len(SATAZ)/2)
        ax.text(SATAZ[middle],SATEL[middle],SATID[0],fontsize=8)
        SATAZ = []
        SATEL = []
        SATID = []

ax.yaxis.set_label_position('right')
ax.tick_params('y', labelleft=False)
plt.savefig('skyplot.jpg', dpi=360)
plt.show()

多系统结果:

在这里插入图片描述
解决rtkplot无法导出北斗卫星数据的问题:
在SNR/MP界面下手动勾选频点为2I再导出可解决,因为目前版本中北斗的L1频点对应的是B1C信号,目前支持输出的接收机较少,使用频率较高的频点为B1I,对应2I。
在这里插入图片描述

  • 24
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值