mcp-Sternenbeobachtung
Berechnen Sie die Höhe sowie die Aufgangs- und Untergangszeiten von Himmelsobjekten (Sonne, Mond, Planeten, Sternen und Objekten im Weltraum) für jeden beliebigen Ort auf der Erde, mit optionaler Lichtverschmutzungsanalyse.
Merkmale
Höhen-/Azimutberechnung : Ermitteln Sie Höhe und Kompassrichtung für jedes Himmelsobjekt.
Aufgangs-/Untergangszeiten : Bestimmen Sie, wann Objekte über dem Horizont erscheinen/verschwinden.
Lichtverschmutzungsanalyse : Laden und analysieren Sie Lichtverschmutzungskarten (GeoTIFF-Format).
Unterstützt :
Objekte des Sonnensystems (Sonne, Mond, Planeten)
Sterne (zB „Sirius“)
Objekte im tiefen Weltraum (z. B. „Andromeda“, „Orionnebel“)
Zeitzonenbewusst : Funktioniert mit Orts- oder UTC-Zeiten.
Related MCP server: Celestial Position MCP Server
Installation
pip install astropy pytz numpy astroquery rasterio geopyVerwendung
Höhe/Azimut berechnen
from src.celestial import celestial_pos
from astropy.coordinates import EarthLocation
import pytz
from datetime import datetime
# Observer location (New York)
location = EarthLocation(lat=40.7128, lon=-74.0060)
# Time (local timezone-aware)
local_time = pytz.timezone("America/New_York").localize(datetime(2023, 10, 1, 12, 0))
altitude, azimuth = celestial_pos("sun", location, local_time)
print(f"Sun Position: Altitude={altitude:.1f}°, Azimuth={azimuth:.1f}°")Anstiegs-/Untergangszeiten berechnen
from src.celestial import celestial_rise_set
rise, set_ = celestial_rise_set("andromeda", location, local_time.date())
print(f"Andromeda: Rise={rise.iso}, Set={set_.iso}")Lichtverschmutzungskarte laden
from src.light_pollution import load_map
# Load a GeoTIFF light pollution map
vriis_data, bounds, crs, transform = load_map("path/to/map.tif")
print(f"Map Bounds: {bounds}")API-Referenz
celestial_pos(celestial_object, observer_location, time) ( src/celestial.py )
Eingänge :
celestial_object: Name (z."sun","andromeda").observer_location:EarthLocationObjekt.time:datetime(zeitzonenabhängig) oder Astropy-Time.
Gibt zurück :
(altitude_degrees, azimuth_degrees).
celestial_rise_set(celestial_object, observer_location, date, horizon=0.0) ( src/celestial.py )
Eingänge :
date: Zeitzonenbewusstesdatetime.horizon: Horizonthöhe (Standard: 0°).
Gibt zurück :
(rise_time, set_time)als UTC-Time.
load_map(map_path) ( src/light_pollution.py )
Eingänge :
map_path: Pfad zur GeoTIFF-Datei.
Gibt zurück : Tupel
(vriis_data, bounds, crs, transform)für die Lichtverschmutzungsanalyse.
Testen
Führen Sie Tests durch mit:
pytest tests/Wichtige Testfälle ( tests/test_celestial.py )
def test_calculate_altitude_deepspace():
"""Test deep-space object resolution."""
altitude, _ = celestial_pos("andromeda", NYC, Time.now())
assert -90 <= altitude <= 90
def test_calculate_rise_set_sun():
"""Validate Sun rise/set times."""
rise, set_ = celestial_rise_set("sun", NYC, datetime(2023, 10, 1))
assert rise < set_Projektstruktur
.
├── src/
│ ├── celestial.py # Core celestial calculations
│ ├── light_pollution.py # Light pollution map utilities
│ ├── utils.py # Time/location helpers
│ └── main.py # CLI entry point
├── tests/
│ ├── test_celestial.py
│ └── test_utils.py
└── README.mdZukünftige Arbeit
Unterstützung für Kometen/Asteroiden hinzufügen.
Optimieren Sie SIMBAD-Abfragen für die Offline-Verwendung.
Integrieren Sie Daten zur Lichtverschmutzung in Sichtbarkeitsvorhersagen.
Wichtige Updates:
Lichtverschmutzung :
light_pollution.pyzu Funktionen und API-Referenz hinzugefügt.Abhängigkeiten :
rasterioundgeopywurden den Installationsanweisungen hinzugefügt.Projektstruktur : Klargestellte Dateirollen und Testabdeckung.