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!!!")
&

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





