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()
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))
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][