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
- Beachten Sie, dass Hindernisse wie Berge in diesem Modell nicht berücksichtigt werden
- Beachten Sie, dass die resultierenden Zeitstempel in UTC angegeben sind; wenn Sie Ortszeit wünschen, müssen Sie diese entsprechend umrechnen
Beispielausgabe:
sunrise_example_output.txt
Sonnenaufgang heute: 2022-06-19 03:12:56+00:00
Sonnenuntergang heute: 2022-06-19 19:18:38+00:00If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow