Sonnenauf- und -untergang in Python mit skyfield berechnen

English Deutsch

Der folgende Code berechnet den Sonnenauf- und -untergang an einem bestimmten Ort und einer bestimmten Höhe mithilfe der skyfield-Bibliothek. Beachten Sie, dass Sie de413.bsp herunterladen müssen.

sunrise_sunset.py
from skyfield import api
from skyfield import almanac
from datetime import datetime
from datetime import timedelta
import dateutil.parser
from calendar import monthrange

ts = api.load.timescale()
ephem = api.load_file('de413.bsp')

def compute_sunrise_sunset(location, year=2019, month=1, day=1):
    t0 = ts.utc(year, month, day, 0)
    # t1 = t0 plus ein Tag
    t1 = ts.utc(t0.utc_datetime() + timedelta(days=1))
    t, y = almanac.find_discrete(t0, t1, almanac.sunrise_sunset(ephem, location))
    sunrise = None
    for time, is_sunrise in zip(t, y):
        if is_sunrise:
            sunrise = dateutil.parser.parse(time.utc_iso())
        else:
            sunset = dateutil.parser.parse(time.utc_iso())
    return sunrise, sunset

# Sonnenauf- und -untergang für einen zufälligen Ort in der Nähe von München berechnen
location = api.Topos('48.324777 N', '11.405610 E', elevation_m=519)
now = datetime.now()
sunrise, sunset = compute_sunrise_sunset(location, now.year, now.month, now.day)

# Ergebnis ausgeben (Beispiel)
print(f'Sonnenaufgang heute: {sunrise}')
print(f'Sonnenuntergang heute: {sunset}')

Definition von Sonnenauf- und -untergang in diesem Kontext

Laut der skyfield-Dokumentation:

sunrise_definition.txt
Skyfield verwendet dieselbe Definition wie die United States Naval Observatory: Die Sonne ist aufgegangen, wenn ihr Mittelpunkt 0,8333 Grad unter dem Horizont liegt, was sowohl ihren scheinbaren Radius von etwa 16 Bogenminuten als auch die 34 Bogenminuten berücksichtigt, um die die atmosphärische Refraktion das Bild der Sonne im Durchschnitt anhebt.

Weitere Einschränkungen

Beispielausgabe:

sunrise_example_output.txt
Sonnenaufgang heute: 2022-06-19 03:12:56+00:00
Sonnenuntergang heute: 2022-06-19 19:18:38+00:00

Check out similar posts by category: Physics, Python, Skyfield