PL EN DE

Dokumentacja API EOP

Opis danych parametrów orientacji Ziemi udostępnianych przez gnss.day: pola, jednostki, formaty i warunki użycia. Dokumentacja jest otwarta — czytanie jej nie wymaga konta.

Zasady dostępu

Dane są darmowe. Rozróżniamy przeglądanie od dostępu programistycznego.

Przeglądanie danych — bez logowania.
Cały portal — wykresy, tabela epok, eksport CSV z przeglądarki — działa bez zakładania konta i bez żadnych ograniczeń. Nie zbieramy przy tym danych osobowych.
Dostęp programistyczny (API) — na wniosek.
Aby korzystać z API, należy założyć konto, pisząc po klucz na adres kontakt@gdansk.ai. Klucze wydawane są ręcznie — podaj krótko, do czego chcesz go użyć. Domyślny limit to 1000 zapytań na dobę; jeśli potrzebujesz więcej, napisz o tym od razu.

API działa obecnie w fazie testowej. W tym okresie dostęp przyznajemy nieodpłatnie, aby zebrać uwagi od użytkowników. Docelowo dostęp do API będzie płatny — o zmianie warunków powiadomimy z wyprzedzeniem każdego posiadacza klucza, na adres podany przy jego wydaniu. Przeglądanie danych na stronie pozostanie bezpłatne.

Dane źródłowe pozostają publiczne. Rejestracja dotyczy wyłącznie naszej usługi, nie samych danych. Oryginalny plik jest w domenie publicznej i każdy może pobrać go bezpośrednio z USNO, bez konta i bez naszego pośrednictwa.

Co daje klucz

Uwierzytelnianie

Klucz przekazuje się nagłówkiem X-API-Key:

curl -H "X-API-Key: gd_twoj_klucz" \
     "https://gnss.day/api/v1/eop?last=1"

Klucz identyfikuje Cię wobec usługi — traktuj go jak hasło i nie umieszczaj w kodzie publikowanym w repozytoriach ani w adresach URL widocznych w logach.

KodZnaczenie
200OK
400Błędne parametry zapytania
401Brak klucza, klucz nieprawidłowy lub dezaktywowany
404Epoka poza zakresem lub nieznany endpoint
429Przekroczony dzienny limit zapytań

Przykładowa odpowiedź

Tak wygląda to, co zwraca API. Poniżej realna odpowiedź dla epoki 2026-07-30.

JSON — jedna epoka

$ curl -H "X-API-Key: $KEY" \
     "https://gnss.day/api/v1/eop?date=2026-07-30"

{
  "count": 1,
  "data": [
    {
      "mjd":  61251,
      "date": "2026-07-30",
      "type": "final/rapid",
      "eop": {
        "xp_arcsec": 0.219628,
        "yp_arcsec": 0.365836,
        "ut1_utc_s": 0.0129614,
        "lod_ms":    null,
        "dX_mas":    -0.011,
        "dY_mas":    -0.028
      },
      "sigma": {
        "xp_arcsec": 9e-05,
        "yp_arcsec": 9e-05,
        "ut1_utc_s": 9.5e-06,
        "lod_ms":    null
      }
    }
  ]
}

CSV — ten sam zakres jako CSV

$ curl -H "X-API-Key: $KEY" \
     "https://gnss.day/api/v1/eop?last=2&format=csv"

mjd,date,type,xp_arcsec,yp_arcsec,ut1_utc_s,lod_ms,dX_mas,dY_mas,sig_xp,sig_yp,sig_ut1,sig_lod
61250,2026-07-29,final/rapid,0.219198,0.366419,0.0126808,-0.4121,-0.002,-0.04,9.1e-05,9e-05,1.37e-05,0.0094
61251,2026-07-30,final/rapid,0.219628,0.365836,0.0129614,,-0.011,-0.028,9e-05,9e-05,9.5e-06,
Pola lod_ms i sig_lod są puste — IERS publikuje długość doby dobę później niż pozostałe parametry. To normalny stan dla najnowszej epoki, nie błąd.

Plakat informacyjny (PNG, 1600×4150) →

Pełny opis pól i jednostek →

Co zawiera API

Sześć parametrów orientacji Ziemi wraz z niepewnościami, w podziale na obserwacje i prognozy.

WłaściwośćWartość
Parametryxp, yp, UT1−UTC, LOD, dX, dY (+ niepewności)
Próbkowaniedobowe (jedna epoka na dobę, o 00:00 UTC)
Zakresostatnie ~10 lat + prognozy
Liczba epok~4000
Aktualizacjaco 6 h (źródło publikuje raz na dobę)
ŹródłoUSNO / IERS Rapid Service–Prediction Center, finals2000A.all
FormatyJSON, CSV
Wartości liczbowe nie są modyfikowane — przetwarzanie ogranicza się do parsowania formatu źródłowego i zawężenia zakresu dat. Nie prowadzimy własnych obliczeń ani korekt.

Obserwacje a prognozy

Każdy rekord ma flagę typu. To rozróżnienie jest istotne — prognozy mają o rząd wielkości większą niepewność i zmieniają się przy kolejnych publikacjach.

FlagaZnaczenieCharakterystyka
Iobserwacja (final/rapid)wartość wyznaczona z pomiarów; stabilna
Pprognozaekstrapolacja IERS; niepewność rośnie z horyzontem

Opis pól

Jednostki zgodne z konwencjami IERS. Pola mogą przyjmować null, gdy źródło nie podaje wartości dla danej epoki.

PoleJednostkaTypOpis
mjddobaintZmodyfikowana data juliańska epoki (00:00 UTC)
datestringData kalendarzowa YYYY-MM-DD (UTC)
flagstringI = obserwacja, P = prognoza
xparcsec (″)floatRuch bieguna, składowa X (wzdłuż południka Greenwich)
yparcsec (″)floatRuch bieguna, składowa Y (wzdłuż południka 90°E)
ut1_utcsfloatRóżnica UT1 − UTC (ΔUT1)
lodmsfloat / nullNadwyżka długości doby ponad 86 400 s SI
dXmasfloat / nullOffset bieguna niebieskiego, składowa X (IAU 2000A)
dYmasfloat / nullOffset bieguna niebieskiego, składowa Y (IAU 2000A)
xp_errarcsecfloatNiepewność (1σ) dla xp
yp_errarcsecfloatNiepewność (1σ) dla yp
ut1_errsfloatNiepewność (1σ) dla ut1_utc
lod_errmsfloat / nullNiepewność (1σ) dla lod
LOD bywa pusty dla najświeższych epok. IERS publikuje długość doby z dobowym opóźnieniem względem pozostałych parametrów, więc ostatni rekord obserwowany często ma lod: null. Podobnie dX/dY nie występują dla części prognoz. Klient powinien to obsłużyć.

Endpointy

Dostępne teraz bez konta

Portal serwuje dane jako statyczne pliki. Są publiczne i można ich używać już dziś, również programistycznie — bez rejestracji.

ZasóbOpis
GET /data/eop.jsonPełna seria w układzie kolumnowym (tablice równoległe)
GET /data/eop_meta.jsonMetadane: zakres, liczba epok, źródło, podstawa prawna
Format kolumnowy (tablice równoległe zamiast listy obiektów) zmniejsza rozmiar odpowiedzi o ~40%. Element i-ty każdej tablicy odpowiada tej samej epoce.

Zapytania wymagają klucza

Endpointy zapytaniowe działają. Uwierzytelnianie nagłówkiem X-API-Key. Obejmują pełną serię od 1973 r. — więcej niż pliki statyczne, które są przycięte do ostatnich ~10 lat.

EndpointOpis
GET /api/v1/eop?date=YYYY-MM-DDParametry dla jednej epoki
GET /api/v1/eop?mjd=61251Parametry dla epoki podanej jako MJD
GET /api/v1/eop?start=…&end=…Zakres epok
GET /api/v1/eop?last=NOstatnie N dób (last=-N = N dób w przód)
GET /api/v1/metaMetadane zbioru (bez klucza)
GET /api/v1/healthStan usługi (bez klucza)

Parametr &format=json|csv przełącza format odpowiedzi. Uwierzytelnianie nagłówkiem X-API-Key: <klucz>.

Przykłady

Działające dziś, na plikach statycznych — bez konta i bez klucza.

Pobranie metadanych

curl -s https://gnss.day/data/eop_meta.json

Ostatnia obserwowana epoka (Python)

# Format kolumnowy: indeks i-ty każdej tablicy to ta sama epoka
import json, urllib.request

B = "https://gnss.day/data/"
d = json.load(urllib.request.urlopen(B + "eop.json"))
m = json.load(urllib.request.urlopen(B + "eop_meta.json"))

i = d["mjd"].index(m["last_obs_mjd"])
print(m["last_obs_date"],
      "xp=", d["xp"][i],
      "yp=", d["yp"][i],
      "UT1-UTC=", d["ut1"][i])

Filtrowanie samych obserwacji

# flag to zwarty ciąg znaków, po jednym na epokę: "IIII...PPP"
obs = [(d["mjd"][i], d["xp"][i])
       for i, f in enumerate(d["flag"]) if f == "I"]
print(len(obs), "obserwacji")

Struktura odpowiedzi (fragment)

{
  "mjd":  [61249, 61250, 61251],
  "flag": "III",
  "xp":   [0.218763, 0.219198, 0.219628],
  "yp":   [0.367005, 0.366419, 0.365836],
  "ut1":  [0.0124, 0.0126808, 0.0129614],
  "lod":  [-0.3987, -0.4121, null]   // null = brak w źródle
}

Zapytania przez API (z kluczem)

# pojedyncza epoka
curl -H "X-API-Key: $KEY" \
     "https://gnss.day/api/v1/eop?date=2026-07-30"

# ostatnie 30 dób obserwowanych, jako CSV
curl -H "X-API-Key: $KEY" \
     "https://gnss.day/api/v1/eop?last=30&format=csv"

# zakres dat
curl -H "X-API-Key: $KEY" \
     "https://gnss.day/api/v1/eop?start=2026-01-01&end=2026-06-30"

# interpolacja na południe UTC (MJD ułamkowy)
curl -H "X-API-Key: $KEY" \
     "https://gnss.day/api/v1/eop?mjd=61250.5"

Klient w Pythonie

import json, urllib.request

def eop(**q):
    """Zapytanie do API EOP. Wymaga klucza w KEY."""
    url = "https://gnss.day/api/v1/eop?" + urllib.parse.urlencode(q)
    req = urllib.request.Request(url, headers={"X-API-Key": KEY})
    with urllib.request.urlopen(req) as r:
        return json.load(r)

d = eop(last=7)
for r in d["data"]:
    print(r["date"], r["eop"]["xp_arcsec"], r["eop"]["ut1_utc_s"])

Licencja i warunki użycia

Dane

Pochodzą z USNO / IERS Rapid Service–Prediction Center i są opatrzone klauzulą „Approved for public release: distribution unlimited" — jako dzieło rządu USA (17 U.S.C. § 105) znajdują się w domenie publicznej. Nie nakładamy na nie dodatkowych ograniczeń licencyjnych: możesz ich używać, także komercyjnie.

Atrybucja nie jest wymagana prawnie, ale prosimy o podanie źródła — to standard dobrej praktyki naukowej i ułatwia odbiorcom weryfikację.

Zastrzeżenia

Dane osobowe

Przeglądanie portalu nie wymaga konta i nie wiąże się ze zbieraniem danych osobowych. Rejestracja do API wymaga wyłącznie adresu e-mail — przetwarzanego w celu świadczenia usługi (art. 6 ust. 1 lit. b RODO). Nie przekazujemy go nikomu i nie używamy do celów marketingowych. Klucz można w każdej chwili unieważnić, a dane kontaktowe usunąć — wystarczy napisać na kontakt@gdansk.ai.

Warunki korzystania z Serwisu określa regulamin. Szczegółową analizę warunków licencyjnych źródeł danych prowadzimy w dokumentacji projektu — jest dostępna na życzenie pod adresem kontaktowym.