Sonnenposition am Himmel in Python mit skyfield berechnen
English
Deutsch
Der folgende Code berechnet die Position der Sonne (in Azimut-/Höhenkoordinaten) am Himmel mithilfe der skyfield-Bibliothek. Beachten Sie, dass Sie de421.bsp herunterladen müssen.
sun_position.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('de421.bsp')
sun = ephem["Sun"]
earth = ephem["Earth"]
# Sonnenauf- und -untergang für einen beliebigen Ort in der Nähe von München berechnen
location = api.Topos('48.324777 N', '11.405610 E', elevation_m=519)
# Sonnenposition aus Sicht des Beobachters an <location> berechnen
sun_pos = (earth + location).at(ts.now()).observe(sun).apparent()
# Scheinbare Höhe und Azimut für die Sonnenposition berechnen
altitude, azimuth, distance = sun_pos.altaz()
# Ergebnisse ausgeben (Beispiel)
print(f"Altitude: {altitude.degrees:.4f} °")
print(f"Azimuth: {azimuth.degrees:.4f} °")Beispielausgabe
sun_position_example_output.txt
Altitude: ... °
Azimuth: 48.4141 °Faktoren, die die Genauigkeit der Berechnung beeinflussen
Diese Art der Positionsbestimmung berücksichtigt:
- Die leichte Positionsverschiebung durch die Lichtgeschwindigkeit
- Die sehr geringe Positionsverschiebung durch die Schwerkraft der Erde
Nicht berücksichtigt werden jedoch:
- Atmosphärische Verzerrungen, die die Position der Sonne verschieben
- Die Ausdehnung der Sonnenscheibe, wodurch die Sonne nicht von einem Punkt, sondern scheinbar von einer Fläche ausgeht
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow