Berechnung der Satellitenumlaufbahn LST mit Python (wahre Sonne, durchschnittliche Sonne)

So berechnen Sie die lokale Sonnenzeit

Dies ist eine Fortsetzung von Last. Berechnen Sie nun auch die durchschnittliche Sonne.

Die Zeitdifferenz zwischen der wahren Sonne und der durchschnittlichen Sonne, die der Durchschnitt der Zeitgeschwindigkeiten basierend auf der Sonne des Jahres ist, wird als durchschnittliche Zeitdifferenz bezeichnet. Die Faktoren der Zeitdifferenz sind die elliptische Umdrehung der Erde und die Neigung der Bodenachse. Im Folgenden finden Sie ein LST-Programm (Local Sun Time), das sowohl die wahre Sonne als auch die durchschnittliche Sonne berechnet.

Vorbereitung

Bereiten Sie die Umlaufbahninformationen vor. Dieses Mal werde ich TLE (Two Line Element) von ALOS-2 (Daichi No. 2) verwenden. Speichern Sie die TLE als Textdatei. ("./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

Berechnung

TLE wird berechnet, indem es unter Verwendung des Himmelsfelds in 6 Kontaktbahnelemente umgewandelt wird. Alles, was Sie tun müssen, ist, die Differenz zwischen dem roten Meridian des Sonnenrichtungsvektors und dem roten Meridian "ra" des aufsteigenden Punktes zu nehmen und in Zeit umzuwandeln. Im Himmelsfeld wird es in Grad, Minuten und Sekunden wie "184deg 09" 18,9 "angezeigt, also habe ich die Zeichenkette zwangsweise manipuliert.

Verwenden Sie für die durchschnittliche Sonne Gleichung (2) in Eine Studie zur Berechnung des roten Schusses und der Zeitdifferenz von Solar Vision. Hat. Die Julius-Jahrhunderte (JC) von J2000 werden ab dem Julius-Tag berechnet, und die durchschnittliche sonnenrote Länge $ α_ {m} $ [h] wird berechnet.

#!/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("Kreuzungspunkt nach Ortszeit(LST True Sun)",true_loc_time)
    print("Kreuzungspunkt nach Ortszeit(LST Mean Sun)",mean_loc_time)

    return


Ergebnis

Die durchschnittliche Zeitdifferenz beträgt ungefähr 9 Minuten, wenn die durchschnittliche Zeitdifferenz von 2019/9/28 auf dieser Website berechnet wird. Es scheint also ungefähr dieselbe zu sein. Ich verstehe.

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
Kreuzungspunkt nach Ortszeit(LST True Sun) 00:08
Kreuzungspunkt nach Ortszeit(LST Mean Sun) 23:58

Recommended Posts

Berechnung der Satellitenumlaufbahn LST mit Python (wahre Sonne, durchschnittliche Sonne)
Altersberechnung mit Python
Mit Python erlernte Derivate- (1) Berechnung des Devisenterminkurses-
Python: Grundlagen der Verwendung von Scikit-Learn ①
# 1 [python3] Einfache Berechnung mit Variablen
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
Bilderfassung von Firefox mit Python
Berechnung des Normalenvektors mittels Faltung
Trübungsentfernung mit Python detailEnhanceFilter
Implementierung von Desktop-Benachrichtigungen mit Python
[Python] Berechnung des Kappa (k) -Koeffizienten
Python: Grundlagen der Bilderkennung mit CNN
Automatische Erfassung von Aktienkursen mit Python
Übung, dies in Python zu verwenden (schlecht)
Python: Anwendung der Bilderkennung mit CNN
[Python] Berechnung der Bildähnlichkeit (Würfelkoeffizient)
Berechnung des Vorwärtsdurchschnitts (Piyolog-Schlafzeit)
1. Mit Python 1-3 gelernte Statistiken. Berechnung verschiedener Statistiken (Statistiken)
Studie über die Miete in Tokio mit Python (3-1 von 3)
Lassen Sie Python die durchschnittliche Punktzahl einer Seite mithilfe der PageSpeed Insights-API messen