starlink卫星轨道预报

本文介绍了一种使用Python预测Starlink卫星轨迹的方法,通过下载卫星两行元素并利用sgp4和spiceypy库,实现了从TEME参考架到WGS84坐标系的转换,最终得到卫星的星下点坐标。

SpaceX 公司发射starlink卫星243颗星链卫星,卫星会很大程度影响天文观测。但是有爱好者又想观测到starlink卫星过境,所以我写了以下代码方便大家使用。

需要准备python的轮子包括:urllib,sgp4,spiceypy。

首先从celestrak下载starlink两行报,并将两行报保存在列表嵌套的字典中(不知道卫星两行报的自行百度)。

然后指定卫星名称,读取两行报文件进行预报(或者遍历全部,遍历的话需要并行处理。)。但是由于python模块SGP4输出位置位于TEME参考架,需要转换至J2000进而转换至WGS84坐标系(经度纬度坐标系),就得到卫星的星下点坐标。如果要计算某一位置的starlink观测的方位角和天顶角需要计算卫星与此处的相对位置关系。(这一节先计算到卫星星下点,有需要的可以留言.... frame.py文件为坐标转换文件。见后续blog说明)

# -*- coding: utf-8 -*-
"""
Created on Sun Feb 23 19:54:02 2020

@author: panda
"""
import urllib.request
import os
import platform
from datetime import *
from sgp4.earth_gravity import wgs72,wgs84
from sgp4.io import twoline2rv
import frame
import spiceypy as spice
from math import atan2, cos, pi, sin, sqrt, tan
import numpy as np
def main():

    #星历文件
    f_KERNELS='/home/panda/SPICE/gen/'
    spice.furnsh(f_KERNELS + 'pck/pck00010.tpc')
    spice.furnsh(f_KERNELS+'lsk/naif0011.tls')
    time_intev=60*60#时间间隔,单位:s
    loop=False#True#loop satellite or not(True=会循环所有starlink卫星)
    #star_name='STARLINK-53'#star_link_name
    rad2deg=180./pi
    file_nut80 = 'nut80.dat'地球旋转矩阵
    url='http://www.celestrak.com/NORAD/elements/starlink.txt'
    tle_path='tle'
    result_path='result'
    today=datetime.utcnow().strftime('%Y%m%d')#time utc
    sys_p = platform.system()
    if sys_p == "Windows":
        print("OS is Windows!!!")
        path_tle=os.getcwd()+'\\'+tle_path+'\\'
        path_result=os.getcwd()+'\\'+result_path+'\\'
    elif sys_p == "Linux":
        print("OS is Linux!!!")
    &

评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值