微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

望远镜框架中卫星的检测

如何解决望远镜框架中卫星的检测

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

如果有任何想法,我将不胜感激。

解决方法

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

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

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

n = A * #/(4*pi)

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。