данные поля неба, чтобы получить Апогей и Перигея для заданного диапазона дат - PullRequest
0 голосов
/ 13 января 2019

Я пытался зациклить данные поля неба, чтобы получить Апогей и Перигея для заданной даты, но не смог. Благодарен за любую помощь. Заранее спасибо

import numpy as np
import matplotlib.pyplot as plt

from skyfield.api import Loader, Topos 

load = Loader('~/Documents/fishing/SkyData')
data = load('de421.bsp')
ts   = load.timescale()

planets = load('de421.bsp')
earth   = planets['earth']
moon    = planets['moon']
Chennai  = earth + Topos('13.0827 N', '80.2707 E', elevation_m = 6.7)


alt, az, dist  = Chennai.at(dt).observe(moon).apparent().altaz()

from datetime import timedelta, date

def daterange(date1, date2):
    for n in range(int ((date2 - date1).days)+1):
    yield date1 + timedelta(n)


start_dt = date(2018, 12, 20)
end_dt = date(2019, 1, 13)


for dt in daterange(start_dt, end_dt):
    print(dt.strftime("%Y-%m-%d"))
    print ("altitude: ", alt.degrees)
    print ("azimuth:  ", az.degrees)
    print ("distance (to center of Moon): ", dist.km)
    print ("distance to closest point on moon: ", round(dist.km, 0) - 1767.)
    print ("compare to: ", 364857)

1 Ответ

0 голосов
/ 19 января 2019

Похоже, ваш код будет печатать одни и те же значения снова и снова, потому что вы вызываете .at().observe() только один раз в верхней части вашей программы. Вместо этого попробуйте вызывать его каждый раз, когда вы проходите через цикл for, чтобы он был первым оператором внутри блока кода цикла for.

...