0

我有望远镜图像中心的天体坐标、望远镜的视野(以秒为单位)、拍照的开始时间(全天)和曝光时间(以秒为单位)。我想知道有多少 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

我会很感激任何想法。

4

1 回答 1

0

一个简单的解决方案(如果我正确理解您的目标),将简单地计算星链卫星的表面数密度,然后乘以望远镜的面积,这将为您提供您希望在任何时候的视野。然后,在该视场中找到卫星的概率将由泊松分布确定(假设卫星的位置和望远镜的指向是完全随机的,这并不完全正确,但会给出一个很好的顺序量级估计)。

所以,如果“#”是星链卫星的总数,“A”是你望远镜视野的面积(以球面度为单位),天空的总面积是 4*pi 球面度:

随机指向中的平均星链数“n”:

n = A * #/(4*pi)

在给定指向中找到“k”颗卫星的概率“P”:

P(k) = n^k * e^-n / k!

于 2021-02-19T19:17:11.370 回答