python读取导航电文并计算卫星位置

本文介绍如何使用Python自动读取导航星历数据,并计算卫星位置。包括获取导航参数、时间数据换算及卫星位置计算等步骤。

python简单计算卫星位置


前言

一、思路

总的可分为两个部分:获取导航参数和计算卫星位置。
①获取导航参数:首先讲导航星历中的数据切片,存入csv文件中,再读取csv文件的数据并赋值给各参数
②计算卫星位置:首先要进行时间数据的换算,然后依次计算各步骤即可

二、 自动读取导航星历并计算卫星位置


import csv
import math  as m

with open('D:\\学习课件\\GNSS\\brdc0320.22n\\brdc0320.22n', 'r') as f:
    if f == 0:
        print("不能打开文件!")
    else:
        print("导航文件打开成功!")
    nfile_lines = f.readlines()  # 按行读取N文件
    print(len(nfile_lines))
    f.close()



def start_num():  #定义数据记录的起始行
    for i in range(len(nfile_lines)):
        if nfile_lines[i].find('END OF HEADER')!=-1:
            start_num=i+1
    return start_num
n_dic_list=[]
 

n_data_lines_nums=int((len(nfile_lines)-start_num())/8)
print("一共%d组数据"%(n_data_lines_nums))

 
#第j组,第i行
for j in range(n_data_lines_nums):
    n_dic = {
   
   }
    for i in range(8):
        data_content = nfile_lines[start_num() + 8 * j + i]
        n_dic['数据组数'] = j + 1
        if i == 0: 
            n_dic['卫星PRN号'] = int(data_content.strip('\n')[0:2].strip(' '))
            n_dic['历元'] = data_content.strip('\n')[3:22]
            n_dic['卫星钟偏差(s)'] = float((data_content.strip('\n')[23:41][0:-4] + 'e' + data_content.strip('\n')[23:41][-3:]).strip(' '))  # 利用字符串切片功能来进行字符串的修改
            n_dic['卫星钟漂移(s/s)'] = float((data_content.strip('\n')[42:60][0:-4] + 'e' + data_content.strip('\n')[42:60][-3:]).strip(' '))
            n_dic['卫星钟漂移速度(s/s*s)'] = float((data_content.strip('\n')[61:79][0:-4] + 'e' + data_content.strip('\n')[61:79][-3:]).strip(' '))
            
        if i == 1:
            n_dic['IODE'] = float((data_content.strip('\n')[4:22][0:-4] + 'e' + data_content.strip('\n')[4:22][-3:]).strip(' '))
            n_dic['C_rs'] = float((data_content.strip('\n')[22:41][0:-4] + 'e' + data_content.strip('\n')[23:41][-3:]).strip(' '))
            n_dic['n'] = float((data_content.strip('\n')[41:60][0:-4] + 'e' + data_content.strip('\n')[42:60][-3:]).strip(' '))
            n_dic['M0'] = float((data_content.strip('\n')[60:79][
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值