Ephemeridenrechnung mit Python - Mond
Wolkenlos ist es nur bei Vollmond, außer es findet eine Mondfinster-nis statt ...
Nachdem es jetzt schon die Ephemeriden der Sonne gibt, war die Berechnung der Monddaten der nächste naheliegende Schritt. Man könnte vermuten, dass man dazu im Code nur Sonne gegen Mond austauschen müsste und damit die Angelegenheit erledigt sei...
Das hatte ich mir tatsächlich einfacher vorgestellt. Es ist zwar einleuchtend, dass der Mond im Vergleich zur Sonne abweichende Ephemeriden aufweisen muss. So ist die Angabe der ekliptikalen Breite nun sinnvoll. Die Dämmerungsphasen der Sonne entfallen natürlich. Phase und Beleuchtung sind Parameter, die auf Aussehen und Erscheinung des Mondes Einfluss nehmen. Das ist zumeist schnell mit der Programmierung von Ein- bis Zweizeilern im Code schnell erledigt. Und doch kam es beim ersten Programmdurchlauf am 25.01.2026 zum "Knall" ...

In unseren Breiten kommt es niemals vor, dass ein Sonnenauf- oder untergang ausbleibt. Auch nimmt die Sonne mittags ihren höchsten Lauf, überschreitet also den Meridian. Beim Mond ist das hingegen anders. Der Mond kann den einen oder anderen Aufgang, Transit oder Untergang eben doch manchmal an bestimmten Tagen auslassen. Die entsprechenden skyfield-API-Funktionen liefern dann leere Listen, mit denen format specifier oder andere API-Funktionen überhaupt nichts anfangen können. Fürs Erste habe ich das umständlich mit einigen Codezeilen gelöst:




Das wäre möglicherweise auch mit einer try-catch-Ausnahmebehandlung zu lösen gewesen. Ich werde mir das beim nächsten Refactoring einmal genauer anschauen. Außerdem ist dieser Mechanismus auch auf die Sonne zu übertragen! Warum? Nun nördlich des Polarkreises gibt es ein ganze Reihen von Tagen, an denen die Sonne weder auf- noch untergeht und auch keinen Transit vollführt. Der Begriff Meridiantransit verliert am Nordpol seine Bedeutung. Im Polarsommer geht die Sonne niemals unter. Ach, und im Hamburg gibt es in den Sommermonaten keine astronomische Dämmerung ('Weiße Nächte').

Bleibt noch eine besonders elegante Lösung für eine sonst sehr aufwändige Fragestellung zu erwähnen: die Berechnung der Liberation. skyfield bietet die Möglichkeit einen Ephemeriden-satz aus der Differenz zweier Himmelkörperdatensätze zu erstellen. Die entstehende Differenz in selenographischer Breite und Länge entspricht dann genau der Liberation. Als nützliches Abfallprodukt erhält man zusätzlich noch die Distanz Erde - Mond.
Nur Mut und keine Angst vor Spaghetti!
Den Code zum Blog gibt es hier: