【发布时间】:2020-12-27 07:53:10
【问题描述】:
我有望远镜图像中心的天体坐标、望远镜的视野(以秒为单位)、拍照的开始时间(全天)和曝光时间(以秒为单位)。我想知道有多少 Starlink 卫星可以进入图像帧。 我无法弄清楚如何正确计算。我不太了解天体坐标。 我尝试使用 Skyfield api、地心坐标并假设望远镜指向上方。 但它太长了,无法正常工作...
这是我迄今为止尝试做的。
import skyfield.timelib
from skyfield.api import Topos, load
from datetime import timedelta
def satnum(start_time, exposition, eq_cords, field_of_view):
"""Counts number of satellites
Arguments
---------
:param start_time: skyfield.timelib.Time object
:param exposition: int
:param eq_cords: list of floats
:param field_of_view: int
Returns
-------
:return: int
Examples
--------
import satnum
start_time = [2020, 12, 14, 18, 00, 00]
exposition = 15
eq_cords = [4741.1, -2257.7, 4505.7]
field_of_view = 45
satnum.satnum(start_time, exposition, eq_cords, field_of_view)
0
"""
url = "https://celestrak.com/NORAD/elements/starlink.txt"
satellites = load.tle_file(url)
sat_counter = 0
ts = load.timescale()
eq_cords = Topos(*eq_cords)
for satellite in satellites:
difference = satellite - eq_cords
for n in range(exposition):
time = ts.utc(start_time.utc_datetime() + timedelta(seconds=n))
topocentric = difference.at(time)
altaz = topocentric.altaz()
if altaz[0].degrees >= 90 - (field_of_view/2)/60:
sat_counter += 1
break
return sat_counter
如有任何想法,我将不胜感激。
【问题讨论】:
-
我投票结束这个问题,因为这不是一个编程问题,而是一个关于天文学、地球物理学和/或基本天体数学的问题。似乎每当 OP 学习如何在纸上完成所需的任务时,通过 Python 脚本自动化代码将是一件小事。这使得这不是一个编程问题。
-
嗨奥利弗,我很欣赏你的工作。非常好。我没有确切的答案,但首先我建议您尝试手动操作。否则,请分享 2-3 个示例输入和预期输出。
-
嗨,奥利弗!碰巧在你问这个问题后的几个小时内,我尝试向 Skyfield 的 GitHub 存储库添加一个新的“讨论”论坛。它可能更适合像这样一个广泛的问题,它不是关于任何一个特定的编程或天文学概念,而是更多关于“我如何完成一项大任务,我需要什么概念工具?”:@987654321 @
标签: python astropy astronomy satellite skyfield