|
|
@@ -24,7 +24,7 @@ from skyfield.searchlib import find_discrete, find_maxima |
|
|
|
from skyfield.timelib import Time |
|
|
|
from skyfield.constants import tau |
|
|
|
|
|
|
|
from .data import Object, Position, AsterEphemerides, MoonPhase, ASTERS, MONTHS, skyfield_to_moon_phase |
|
|
|
from .data import Object, Position, AsterEphemerides, MoonPhase, ASTERS, skyfield_to_moon_phase |
|
|
|
from .core import get_skf_objects, get_timescale, get_iau2000b |
|
|
|
|
|
|
|
RISEN_ANGLE = -0.8333 |
|
|
@@ -116,34 +116,11 @@ class EphemeridesComputer: |
|
|
|
def is_leap_year(year: int) -> bool: |
|
|
|
return (year % 4 == 0 and year % 100 > 0) or (year % 400 == 0) |
|
|
|
|
|
|
|
def compute_ephemerides_for_day(self, compute_date: datetime.date) -> dict: |
|
|
|
def compute_ephemerides(self, compute_date: datetime.date) -> dict: |
|
|
|
return {'moon_phase': self.get_moon_phase(compute_date), |
|
|
|
'details': [self.get_asters_ephemerides_for_aster(aster, compute_date, self.position) |
|
|
|
for aster in ASTERS] if self.position is not None else []} |
|
|
|
|
|
|
|
def compute_ephemerides_for_month(self, year: int, month: int) -> [dict]: |
|
|
|
if month == 2: |
|
|
|
max_day = 29 if self.is_leap_year(year) else 28 |
|
|
|
elif month < 8: |
|
|
|
max_day = 30 if month % 2 == 0 else 31 |
|
|
|
else: |
|
|
|
max_day = 31 if month % 2 == 0 else 30 |
|
|
|
|
|
|
|
ephemerides = [] |
|
|
|
|
|
|
|
for day in range(1, max_day + 1): |
|
|
|
ephemerides.append(self.compute_ephemerides_for_day(year, month, day)) |
|
|
|
|
|
|
|
return ephemerides |
|
|
|
|
|
|
|
def compute_ephemerides_for_year(self, year: int) -> [dict]: |
|
|
|
ephemerides = {'seasons': self.get_seasons(year)} |
|
|
|
|
|
|
|
for month in range(0, 12): |
|
|
|
ephemerides[MONTHS[month]] = self.compute_ephemerides_for_month(year, month + 1) |
|
|
|
|
|
|
|
return ephemerides |
|
|
|
|
|
|
|
@staticmethod |
|
|
|
def get_seasons(year: int) -> dict: |
|
|
|
start_time = get_timescale().utc(year, 1, 1) |
|
|
@@ -166,6 +143,3 @@ class EphemeridesComputer: |
|
|
|
seasons[season] = time.utc_iso() |
|
|
|
|
|
|
|
return seasons |
|
|
|
|
|
|
|
def compute_ephemerides(self, compute_date: datetime.date): |
|
|
|
return self.compute_ephemerides_for_day(compute_date) |