Przejdź do głównej zawartości
AstroWay/api v2.254.12 · pl
wszystkie systemy w normie

Precyzja obliczeń

AstroWay API wykorzystuje Swiss Ephemeris (oficjalny kod C od Astrodienst, twórców astro.com) – ten sam silnik, na którym profesjonalni astrolodzy od ponad 30 lat pracują w Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/mies) i Janus. Uruchamiamy go na własnych serwerach i udostępniamy jako warstwę REST API, bez pośrednich marż. Każdy z podstawowych endpointów obliczeniowych jest objęty testami regresji snapshot; dokładność silnika jest weryfikowana poprzez triangulację z trzema niezależnymi źródłami + w stosunku do NASA 5-Millennium Eclipse Catalog:

  • Pozycje planet: mediana 0.0013", maksimum 0.561" vs oficjalny swetest CGI Astrodienst (zmierzono 2026-07-29 na 130 pomiarach). Szczegóły dla poszczególnych ciał poniżej
  • Niezależny test z zewnętrznym benchmarkiem (RoxyAPI, vs NASA JPL Horizons DE441): 210 z 210 w granicach tolerancji, mediana 0.11", maksimum 0.60"
  • Kuspisy domów Placidus: 0.000" dokładne dopasowanie
  • Zaćmienia: < 1 minuta vs NASA Eclipse Catalog
  • Linie ACG: < 1.5 km na równiku vs swetest
  • Wschód/zachód Słońca: < 10 sekund vs timeanddate.com
  • VOC Księżyca, ingresy, koniunkcje planet: dokładność do ułamka sekundy

Te liczby to nie szacunki, lecz wyniki testów. Skrypt bierze 10 map, rozłożonych od 1900 do 2050 roku, żąda tych samych momentów od działającego swetest CGI Astrodienst i porównuje wszystkie 13 ciał, które udostępniamy. Łącznie 130 pomiarów.

CiałoMaksymalny dryf
Słońce, Wenus, Saturn0.001"
Merkury0.002"
true Node0.004"
Mars0.007"
Jowisz0.009"
Księżyc0.022"
Uran0.083"
Pluton0.097"
Neptun0.223"
Chiron0.561"
mean Apogee (Lilith)0.000"

Mediana dla wszystkich 130 pomiarów: 0.0013".

Wcześniej na tej stronie znajdowała się ogólna obietnica ”< 0.1 arcsec”. Pomiary z 2026-07-29 wykazały, że Neptun, Pluton i Chiron jej nie spełniają, dlatego obietnica została zastąpiona rzeczywistymi liczbami. Chiron i planety zewnętrzne mają większy dryf, ponieważ ich pozycje są pobierane ze skompresowanego zestawu efemeryd, którego używa nasza kompilacja.

Możesz to odtworzyć samodzielnie: api-calc/scripts/accuracy-vs-swetest.mjs wykonuje dokładnie te zapytania i drukuje tę samą tabelę.

Sprawdź sam. Skrypt, którym zmierzono powyższe liczby, znajduje się w publicznym repozytorium na licencji MIT: astroway/astrology-accuracy-benchmark. Działa nie tylko z nami: adapter do dowolnego innego API to trzydzieści linii kodu, więc te same 130 pomiarów można uruchomić przeciwko konkurentowi i porównać. Klucz sandboxa wystarczy.

KomponentWartość
BibliotekaSwiss Ephemeris C code (aloistr/swisseph)
Wersjaupstream Astrodienst C code
EfemerydyDE431 JPL ephemeris (przez pliki .se1)
FallbackMoshier analytical (dla dat poza 1800-2399)
Współdzielenie koduWspółdzielone @/core z app.astroway.info - jeden silnik, dwa transporty

Dokładność jest weryfikowana poprzez triangulację – porównanie z trzema niezależnymi źródłami:

Oficjalna referencyjna implementacja Swiss Ephemeris od samego Astrodienst – zespołu, który stworzył Astro.com i obsługuje miliony astrologów na całym świecie. Najbardziej autorytatywne publiczne źródło. Nasz silnik jest identyczny (0.00–0.07 sekundy kątowej dryfu).

Niezależna biblioteka Python wykorzystująca pyswisseph-bindings, niezależne od naszej kompilacji. Potwierdza, że nasza warstwa opakowująca nie zniekształca danych.

Zdalne API Swiss Ephemeris (syderyczny Lahiri). Systemowy dryf 8–17 sekund kątowych jest związany z różnymi wersjami formuły ayanamsy Lahiri, a nie z dokładnością silnika.

Mapavs swetest (Astrodienst)vs Kerykeion (Python)vs Prokerala API
Monroe 19260.00”0.19”16.95” (systemowy)
Diana 19610.00”0.69”8.18” (systemowy)
Einstein 18790.07”artefakt LMT Kerykeion14.96” (systemowy)

RoxyAPI publikuje własny benchmark przeciwko NASA JPL Horizons DE441: licencja MIT, tylko standardowa biblioteka, 21 map i 210 pozycji, oraz flaga --base-url, aby skierować go na dowolne inne API. W ich README jest wyraźnie napisane, że tolerancje celowo nie były dostosowywane do ich własnego silnika, ponieważ benchmark, który proponuje sprawdzenie konkurenta, musi być uczciwy.

Skierowaliśmy go na siebie, nie zmieniając w ich kodzie żadnej liczby. Adapter zmienia nazwę jednego pola zapytania i usuwa jedno opakowanie odpowiedzi.

AstroWayRoxyAPI, ich test 2026-09-29
W granicach tolerancji210 z 210210 z 210
Mediana odchylenia0.11"0.05"
Maksimum0.60"0.78"

Nasz pomiar 2026-09-09, koszt 21 zapytań do API. RoxyAPI we wrześniu przeszło na bezpośredni odczyt DE440, i ich mediana jest teraz niższa niż nasza; nasze maksimum jest niższe niż ich. Sekwencyjny wynik wszystkich 210 wierszy: CSV.

Każdy z podstawowych endpointów obliczeniowych jest objęty zamrożonymi testami snapshot na 3 referencyjnych mapach (Monroe / Diana / Einstein) = 873 snapshotów.

Zestaw snapshotów wychwytuje:

  • Błędy mapowania danych wejściowych: nieprawidłowe ID planety, UT, system domów
  • Post-processing: zaokrąglanie, konwersja jednostek, utrata znaku
  • Rozbieżność domyślnych wartości: mean vs true node, geocentric vs topocentric
  • Schema drift: walidacja przepuściła nieprawidłową formę
  • Przestarzałe wdrożenie: dystrybucja produkcyjna nie odpowiada kodowi

Tolerancja: 5e-5° (≈0.18 sekundy kątowej) domyślnie dla wszystkich pól numerycznych.

MapaDataMaksymalny dryf
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”
Mapadryf ASCdryf MCMaksymalny dryf kuspisu
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”
WydarzenieMaksimum NASANasze maksimumDryf
2025-03-14 Całkowite zaćmienie Księżyca06:58 UT06:58 UT0.8 min
2025-03-29 Częściowe zaćmienie Słońca10:47 UT10:47 UT0.5 min
2025-09-07 Całkowite zaćmienie Księżyca18:11 UT18:11 UT0.8 min
2025-09-21 Częściowe zaćmienie Słońca19:41 UT19:42 UT1.0 min

Linie MC i IC są konstruowane według formuły longitude = RA − GMST (standard Kenneth Bowser). Dryf od wzorca: < 1.5 km na równiku dla wszystkich planet.

Linie horyzontalne ASC i DSC są obliczane z równania horyzontu w tych samych współrzędnych równikowych: cos H = -tan φ · tan δ, gdzie H = (GMST + lng) − RA. Połowy różnią się znakiem kąta godzinnego: przy H < 0 ciało jest na wschód od południka, czyli wschodzi. Weryfikacja, którą przeprowadzamy przy każdym uruchomieniu: bierze się każdy punkt każdej krzywej horyzontalnej i oblicza wysokość ciała nad horyzontem w tym punkcie. Na 8419 punktach maksymalne odchylenie wynosi 0.0 km, co oznacza, że ciało rzeczywiście znajduje się na horyzoncie wszędzie tam, gdzie narysowaliśmy linię.

LokalizacjaDataParametrDryf
London2026-04-15Wschód Słońca0.6 s
London2026-04-15Zachód Słońca9 s

Lokalizacje polarne (|lat| > 66.5°) automatycznie zwracają polarState + ostrzeżenie, że zwykłe godziny planetarne nie są zdefiniowane.

AstroWay używa zmiennych orbisów per-planet (zasada MIN dwóch planet), jak w ZET9 i astro.com. Domyślne orbisy (dla mapy natalnej):

AspektSłońceKsiężycWewnętrzneJowiszZewnętrzne
Koniunkcja12°10°5°8°5°
Sekstyl6.5°6°5°5°5°
Kwadrat10°8°5°7°5°
Trygon12°8°5°5°5°
Opozycja12°10°5°8°5°

Aspekty mniejsze (36°, 40°, 45°, 72°, 108°, 135°, 144°) są domyślnie wyłączone. Włączane są jawnie poprzez ALL_ASPECTS.

Dla |lat| > 66.5° systemy Placidus / Koch / Regiomontanus są matematycznie nie zdefiniowane. W takich przypadkach Swiss Ephemeris automatycznie zwraca Porphyry, a nasze API dodaje ostrzeżenie:

{
"system": "P",
"warning": "Placidus system is undefined for lat=68.96° (> 66.5°). Swiss Ephemeris fell back to Porphyry..."
}

Regresja jest sprawdzana przy każdym PR poprzez CI:

  • api-calc/tests/endpoints/: 873 snapshotów przeciwko mapom referencyjnym (Monroe / Diana / Einstein) + synastry / composite / davison
  • .github/workflows/api-accuracy.yml: automatyczne uruchamianie przy PR
  • Triangulacja przeciwko swetest CGI + Kerykeion: co tydzień
  • Monitorowanie upstream Swiss Ephemeris poprzez Dependabot

Dokładność silnika to połowa zaufania. Druga połowa to kontrakt wyjściowy, który agent (Claude, ChatGPT, Cursor) może walidować. Nasz serwer MCP nie zwraca “surowego tekstu, radź sobie sam”:

  • Typizowany structuredContent. Ponad 600 narzędzi MCP, a zdecydowana większość z nich publikuje ścisły outputSchema – klient MCP otrzymuje zweryfikowaną strukturę, a nie ciąg znaków, który trzeba parsować na chybił trafił.
  • Ochrona przed schema drift. Test CI openapi-example-drift waliduje każdy snapshot regresji przeciwko schematowi, wygenerowanemu z jego własnego przykładu: jeśli rzeczywisty wynik endpointu rozejdzie się z opublikowanym schematem, kompilacja zakończy się błędem. To właśnie ta klasa rozbieżności powoduje błąd MCP -32602 Output validation error.
  • Błędy: to błędy. Awaria narzędzia zawsze zwracana jest z flagą isError i typizowanym kodem (UPPER_SNAKE). My nigdy nie przekazujemy modelowi surowego stack trace’u ani wewnętrznych ścieżek serwera jako “danych”.

Oznacza to, że integracja poprzez MCP jest tak samo przewidywalna, jak bezpośrednie wywołanie REST: to, co jest opisane w /openapi.json, jest tym, co zwraca narzędzie.

  • Daty poza zakresem (przed 1800 i po 2399): używany jest Moshier analytical, dokładność ~0.1” (vs < 0.01” dla SWIEPH z plikami DE431)
  • True Lilith (id=13) vs Mean Lilith (id=12): różnica do 12° – domyślnie Mean Lilith (stabilne zachowanie), True Lilith dostępna poprzez planetIds: [13]
  • Topocentric vs geocentric: domyślnie geocentric

W sprawie pytań dotyczących dokładności: napisz na support@astroway.info z danymi mapy i oczekiwanym wzorcem (astro.com lub inne autorytatywne źródło).

Przydatne?
Zaproponuj edycję

Ostatnia aktualizacja: