Calcul de l'orbite des satellites LST à l'aide de python (vrai soleil, soleil moyen)

Comment calculer l'heure du soleil locale

Ceci est une continuation de Dernière fois. Maintenant, calculez également le soleil moyen.

La différence de temps entre le vrai soleil et le soleil moyen, qui est la moyenne de la vitesse du temps basée sur le soleil de l'année, est appelée la différence de temps moyenne. Les facteurs du décalage horaire sont la révolution elliptique de la terre et l'inclinaison de l'axe du sol. Vous trouverez ci-dessous un programme d'heure locale du soleil (LST) qui calcule à la fois le soleil réel et le soleil moyen.

Préparation

Préparez les informations d'orbite. Cette fois, j'utiliserai TLE (Two Line Element) d'ALOS-2 (Daichi n ° 2). Enregistrez le TLE en tant que fichier texte. ("./TLE/ALOS-2.tle")

ALOS-2
1 39766U 14029A   19271.21643628  .00000056  00000-0  14378-4 0  9997
2 39766  97.9225   6.5909 0001371  85.1486 274.9890 14.79472450288774

Calcul

TLE est calculé en le convertissant en 6 éléments orbitaux de contact à l'aide de skyfield. Prenez simplement la différence entre le méridien rouge du vecteur de direction du soleil et le méridien rouge «ra» du point ascendant et convertissez-le en temps. Dans le skyfield, il est affiché en degrés, minutes et secondes comme 184deg 09 '18 .9" , j'ai donc manipulé de force la chaîne de caractères.

Pour le soleil moyen, utilisez l'équation (2) dans A Study on Solar Vision Red Weft and Time Difference Calculation. Fait. Les siècles Julius (JC) à partir de J2000 sont calculés à partir du jour Julius, et la longitude rouge soleil moyenne $ α_ {m} $ [h] est calculée.

#!/usr/bin/env python3.3
# -*- coding: utf-8 -*-

import numpy as np
import math
import sys
import datetime
from skyfield.api import Loader, Star, Topos, load, JulianDate
from skyfield.api import EarthSatellite
from skyfield.elementslib import osculating_elements_of

TLE_NAME = './TLE/ALOS-2.tle'

def loc_time_calc(elm):

    ra = elm[5] # raan[rad]

    ## True Sun ###
    planets = load('de421.bsp')
    earth = planets['earth']
    sun = planets['sun']
    astrometric = earth.at(elm[0]).observe(sun) #earth->sun vector
    true_sun, dec, distance = astrometric.radec()
    true_sun = math.radians(_to_10deg(true_sun.dstr(warn=False))) # get angle
    true_sun_angle = ra - true_sun
    if true_sun_angle * 12/math.pi + 12 < 0:
        true_loc_time = _to_str(24 + true_sun_angle * 12 / math.pi + 12)
    else:
        true_loc_time = _to_str(true_sun_angle * 12/math.pi + 12)

    ## Mean Sun ###
    JD = elm[0].ut1 # Julian date
    Tu = (JD-2451545)/36525 # Julian Julian Century, JC
    # mean sun right ascension[h]
    alpha_m = 18 +(41+50.54841/60)/60 + Tu*8640184.812866/60/60 + (0.093104/60/60)*(Tu**2) - (0.0000062/60/60)*(Tu**3)
    alpha_m = alpha_m % 24
    mean_sun = (alpha_m/24) * 2 * np.pi
    mean_sun_angle = ra - mean_sun
    if mean_sun_angle * 12/math.pi + 12 < 0:
        mean_loc_time = _to_str(24 + mean_sun_angle * 12 / math.pi + 12)
    else:
        mean_loc_time = _to_str(mean_sun_angle * 12/math.pi + 12)


    return true_loc_time, mean_loc_time

def _to_10deg(val):

    spl1 = val.split()
    spl2 = spl1[0].split("deg",1)
    spl3 = spl1[1].split("'",1)
    spl4 = spl1[2].split('"',1)

    degrees = (float(spl4[0]) / 3600) + (float(spl3[0]) / 60) + float(spl2[0])

    return degrees

def _to_str(hour):

    h_str = datetime.datetime.strftime(datetime.datetime.strptime((str(int(hour))), "%H"),"%H")
    m_str = datetime.datetime.strftime(datetime.datetime.strptime(str(int((hour-int(hour))*60)), "%M"),"%M")

    return h_str + ":" + m_str

def main():

    with open(TLE_NAME) as f:
        lines = f.readlines()
    sat = EarthSatellite(lines[1], lines[2], lines[0])
    print(lines[0], sat.epoch.utc_jpl())

    pos = sat.at(sat.epoch)
    print(sat.epoch)

    elm = osculating_elements_of(pos)
    i = elm.inclination.degrees
    e = elm.eccentricity
    a = elm.semi_major_axis.km
    omega = elm.argument_of_periapsis.degrees
    ra = elm.longitude_of_ascending_node.degrees
    M = elm.mean_anomaly.degrees
    print(i,e,a,omega,ra,M)

    # Osculating Orbit
    osc_elm = [0 for i in range(7)]
    osc_elm[0] = sat.epoch
    osc_elm[1] = a
    osc_elm[2] = e
    osc_elm[3] = np.radians(i)
    osc_elm[4] = np.radians(omega)
    osc_elm[5] = np.radians(ra)
    osc_elm[6] = np.radians(M)

    true_loc_time, mean_loc_time = loc_time_calc(osc_elm)
    print("Point de passage passant l'heure locale(LST True Sun)",true_loc_time)
    print("Point de passage passant l'heure locale(LST Mean Sun)",mean_loc_time)

    return


résultat

Le décalage horaire moyen est d'environ 9 minutes ou plus lors du calcul du décalage horaire moyen du 28/09/2019 sur ce site, il semble donc que ce soit à peu près le même. Je comprends.

ALOS-2
 A.D. 2019-Sep-28 05:11:40.0946 UT
<Time tt=2458754.717237021>
97.92987988479214 0.0012760645968402655 7015.220028255803 69.31302830191312 6.32305263767209 290.71632630644746
Point de passage passant l'heure locale(LST True Sun) 00:08
Point de passage passant l'heure locale(LST Mean Sun) 23:58

Recommended Posts

Calcul de l'orbite des satellites LST à l'aide de python (vrai soleil, soleil moyen)
Calcul de l'âge à l'aide de python
Dérivés appris en utilisant Python- (1) Calcul du taux de change à terme-
python: principes de base de l'utilisation de scikit-learn ①
# 1 [python3] Calcul simple à l'aide de variables
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
Capture d'image de Firefox en utilisant Python
Calcul du vecteur normal par convolution
Suppression de la brume à l'aide de Python detailEnhanceFilter
Implémentation des notifications de bureau à l'aide de Python
[Python] Calcul du coefficient kappa (k)
Python: principes de base de la reconnaissance d'image à l'aide de CNN
Collecte automatique des cours boursiers à l'aide de python
Pratique d'utilisation de ceci en Python (mauvais)
Python: Application de la reconnaissance d'image à l'aide de CNN
[Python] Calcul de la similarité d'image (coefficient de dés)
Calcul de la moyenne avant (temps de sommeil Piyolog)
1. Statistiques apprises avec Python 1-3. Calcul de diverses statistiques (statistiques)
Étude sur Tokyo Rent en utilisant Python (3-1 sur 3)
Laisser Python mesurer le score moyen d'une page à l'aide de l'API PageSpeed Insights