9.4 KiB
Berechnung und Filter für Beobachtungsvorschläge
Stand: 15. September 2026. Die GUI ist mit einer eigenständigen Berechnung verbunden. Grundlage sind die Projektstruktur und lesende Abfragen der konfigurierten Datenbank.
Aufbau
public/beobachtungsvorschlaege.php: Formular, Standardstandort und Sitzungstoken.public/js/observation_suggestions.js: Anfrage und Ergebnisliste mit 50 Zielen pro Seite.public/ajax/observation_suggestions.php: POST-Endpunkt mit Anmeldung, derselben Seitenberechtigung wie die GUI, CSRF-Prüfung und erneuter serverseitiger Abfrage des Standardstandorts.public/observation_suggestions_helpers.php: Katalogauswahl und Python-Prozess mit temporärer JSON-Datei, Shell-freiem Aufruf und 90-Sekunden-Zeitlimit.public/py/observation_suggestions_api.py: eigenständige Berechnung mit der lokalen Astronomy-Engine-Bibliothek und dem vorhandenen Kometen-Bahnhelfercomets.py. Kein Import und kein Aufruf vonapi.py.
Der Browser darf Filter senden, aber weder fremde Standorte noch Katalogdaten vorgeben. Die Berechnung schreibt keine Daten in die Datenbank. Der Python-Prozess benötigt Python 3.10+ und eine verfügbare Zeitzonendatenbank (zoneinfo, auf Windows gegebenenfalls das Paket tzdata).
Zuordnung der Checkboxen
| GUI-Wert | Quelle / Auswahl |
|---|---|
open_clusters |
dso_objects.object_type_abrev = 'OCl' |
globular_clusters |
GCl |
galaxies |
G, GPair, GTrpl, GGroup |
nebulae |
Neb, EmN, HII, RfN, SNR, Cl+N |
planetary_nebulae |
PN |
double_stars |
Zunächst dso_objects mit **; kein vollständiger Doppelsternkatalog |
variable_stars |
Kandidaten aus star_hipparcos mit nicht leerem var; Periodizität und Ereignisvorhersagen benötigen zusätzliche geprüfte Daten |
comets |
Bahnelemente aus comets_mpc; Position und scheinbare Helligkeit zeitabhängig berechnen |
moon, planets |
Bestehende astronomische Berechnungen |
Cl+N wird eindeutig der Nebel-Auswahl zugeordnet. Mehrere ausgewählte Typen werden vereinigt; ein Objekt soll nur einmal erscheinen.
Nur explizit zugeordnete DSO-Typen berücksichtigen. Insbesondere Dup (Dubletten), NonEx (nicht existente Objekte), Other, einfache Sterne (*) und Novae (Nova) nicht automatisch übernehmen. Sternassoziationen (*Ass) sind vorerst keiner Checkbox zugeordnet.
Größe und Helligkeit
- Der Größenfilter gilt ausschließlich für die fünf Deep-Sky-Gruppen in der Tabelle, niemals für Einzelsterne, Doppelsterne, Veränderliche, Planeten, Mond oder Kometen.
- Die maximale Deep-Sky-Größe wird im Formular in Bogenminuten eingegeben und ist auf 60′ begrenzt; ein leeres Feld hebt die jeweilige Grenze auf. Intern wird weiterhin in Bogensekunden gerechnet.
- Als Größenmaß dient die große Achse
major_axis: Bogenminuten × 60 = Bogensekunden. Der Import übernimmt diesen Wert unverändert; die Einheit ist in der OpenNGC-Katalogbeschreibung dokumentiert. Fehlende oder nicht positive Größen werden bei aktiver Größengrenze ausgelassen. - Für Deep Sky die visuelle Helligkeit
v_magverwenden. Andere Filterbänder nicht stillschweigend als V-Helligkeit einsetzen.cstar_v_magist die Helligkeit des Zentralsterns, nicht des gesamten Nebels. - Vorgabe: 12 mag oder heller, also numerisch
v_mag <= 12. - Bei aktiver Helligkeitsgrenze Objekte ohne Helligkeitsangabe standardmäßig auslassen. Die neue, zunächst nicht ausgewählte Checkbox
include_unknown_magnitudeerlaubt ihre gesonderte Aufnahme als „Helligkeit unbekannt“. Alle anderen anwendbaren Filter gelten weiterhin. - Ohne Helligkeitsgrenze schränkt ein fehlender Helligkeitswert die Auswahl nicht ein.
- Bei Sternen und Kometen die jeweils passende scheinbare Helligkeit verwenden; die absolute Kometenhelligkeit ist kein direkter Ersatz.
Beobachtungsnacht
- Standardstandort des Benutzers aus dem gemeinsamen Header verwenden.
- Datum bezeichnet den Abend bis zum folgenden Morgen; Vorgabe ist heute in der Standortzeitzone.
- Sonnenhöhe höchstens −12° als Vorgabe. Erste und zweite Hälfte des passenden nächtlichen Zeitfensters sind separat auswählbar, zunächst beide.
- Höhe, Azimut, Sonnenhöhe und optionalen Mondabstand für den jeweiligen Zeitpunkt berechnen. Die Auswahl der Nachtabschnitte und die Bedingungen müssen gleichzeitig erfüllt sein.
Verfahren und Genauigkeit
- Suche zwischen 12 Uhr am gewählten Datum und 12 Uhr am Folgetag in Standortzeit nach Unterschreitungen der Sonnenhöhen-Grenze. Sonnenhöhe: topozentrischer Sonnenmittelpunkt, ohne atmosphärische Refraktion. Übergänge werden im Fünf-Minuten-Raster gesucht und per Intervallhalbierung auf etwa eine Sekunde eingegrenzt.
- Teile jeden gefundenen Dunkelabschnitt in zwei gleich lange Hälften. Zeitrechnung erfolgt intern in UTC; dadurch werden Sommerzeitwechsel berücksichtigt. Bei durchgängiger Dunkelheit wird die Begrenzung auf 12 Uhr bis 12 Uhr ausdrücklich angezeigt; bei fehlender Dunkelphase gibt es eine entsprechende Meldung.
- Prüfe die ausgewählten Abschnitte alle fünf Minuten einschließlich der Randpunkte. DSO- und Sternkoordinaten werden vom J2000-System in das horizontale System des Beobachters gedreht, einschließlich Präzession/Nutation. Sterneigenbewegung und jährliche Aberration der Katalogsterne sind in dieser Planungsversion nicht enthalten. Höhen sind geometrisch, ohne Refraktion; Azimut zählt von Nord über Ost.
- Für Mond und Planeten liefert Astronomy Engine topozentrische Positionen mit Lichtlaufzeit und Aberration sowie modellierte Helligkeiten. Kometen verwenden den vorhandenen Zweikörper-Bahnhelfer, mit iterierter Lichtlaufzeit und Beobachterparallaxe; Bahnstörungen sind nicht enthalten. Bahnepoche und Modellcharakter werden angezeigt.
- Prüfe alle Filter gemeinsam an jedem Zeitpunkt. Der Mondabstand greift nur bei Mond über dem geometrischen Horizont und niemals für den Mond selbst. Zusammenhängende passende Messpunkte bilden ungefähre Zeitfenster. Sehr kurze Fenster oder kurze Unterbrechungen zwischen Messpunkten können unentdeckt bleiben.
- Die Spalte „Zeit der größten Höhe (ca.)“ zeigt den passenden Messpunkt mit der größten Höhe innerhalb der ausgewählten Filter und Nachtabschnitte. Das muss nicht die Kulmination der gesamten Nacht sein. Höhe, Azimut und Helligkeit der Ergebniszeile beziehen sich auf diesen Zeitpunkt.
- Die GUI sortiert zunächst nach Höhe absteigend. Alle acht Spalten sind per Überschrift auf- und absteigend sortierbar, jeweils über die komplette Ergebnisliste vor der Paginierung. Höhe und Azimut sind getrennte Spalten. Zeiten werden nach ihrem tatsächlichen Zeitpunkt, Zahlen numerisch und Objektnamen mit natürlicher Zahlensortierung verglichen. Zeitfenster werden nach ihrem ersten Beginn sortiert. Fehlende Werte der gewählten Sortierspalte bleiben in beiden Richtungen am Ende. Ein Sortierwechsel springt zur ersten Seite; eine neue Berechnung behält die Sortierauswahl bei.
Sichtbarkeit bedeutet hier Erfüllung der gewählten geometrischen und Helligkeitsfilter, keine Garantie für visuelle Erkennbarkeit. Wetter, Seeing, lokale Horizonthindernisse, Teleskopöffnung und Flächenhelligkeit gehen noch nicht in eine Bewertung ein. Veränderliche werden anhand der Kataloghelligkeit gefiltert; aktuelle Helligkeiten und Extremzeiten werden nicht behauptet.
Prüfung
Ergebnisbegrenzung: Das Feld „Maximal pro Objektgruppe“ ist mit 30 vorbelegt. Der Button „Hellste je Gruppe anzeigen“ wählt aus sämtlichen berechneten Treffern je Checkbox-Gruppe maximal X Objekte nach aufsteigender mag-Helligkeit aus. Bei gleicher Helligkeit entscheidet die größere Höhe, danach Name und Kennung. Unbekannte Helligkeiten werden in dieser Auswahl ausgelassen. Anschließend greifen die gewählten Sortierkriterien und die Paginierung. Die Begrenzung bleibt bei erneuter Berechnung aktiv; „Alle Treffer anzeigen“ hebt sie ohne Neuberechnung auf. Beim ersten Laden ist die Begrenzung noch nicht angewendet.
Mehrfachsortierung in der GUI: Ein normaler Überschriftenklick ersetzt die Sortierkriterien. Umschalt + Klick oder der aktivierte Modus „Weitere Sortierkriterien hinzufügen“ ergänzt ein Kriterium bzw. kehrt die Richtung eines vorhandenen Kriteriums um. Nummerierte Pfeile und ein lesbarer Statustext zeigen die Priorität. Folge-Kriterien entscheiden bei gleichen Werten der vorherigen Kriterien; fehlende Werte folgen innerhalb der jeweiligen Gruppe am Ende. Die Kriterien bleiben bei einer neuen Berechnung erhalten.
python -m unittest discover -s public/py -p test_observation_suggestions_api.py
Die Tests prüfen unter anderem Azimut über Norden, Größenausnahmen, Helligkeitsrichtung, Mondabstand, Nachthälften, Sommerzeitwechsel, Polartag/-nacht und die Koordinatentransformation gegen den separaten Horizont-Aufruf der Bibliothek. Zusätzlich wurde ein vollständiger Browserdurchlauf mit echten Katalogdaten, Paginierung und schmalem Bildschirm geprüft; API-Prüfungen deckten fehlende Anmeldung, ungültigen CSRF-Token und unzulässige Filterwerte ab.
Datenlücken
Bei der Prüfung hatten nur 1.379 von 10.489 einzelnen Galaxien und 9 von 245 DSO-Doppelsternen eine V-Helligkeit. Daher die Option für unbekannte Helligkeiten.
In star_hipparcos waren 5.990 Sterne mit nicht leerem var vorhanden. Das allein belegt weder eine stabile Periode noch ein bevorstehendes Minimum oder Maximum. Dazu siehe Datenquellen für veränderliche Sterne.