API Klimat
Osiemdziesiąt siedem lat klimatu dobowego, wszędzie na lądzie, z jednego archiwum — od 1 stycznia 1940 roku po ostatni tydzień, na siatce ERA5 w 0,25° (około 28 km). Odpowiada na pytanie czy to jest normalne?, wraz z dowodami.
Klimat dobowy#
climate2 kredytów, +1 za każdy pełny okres 365,25 dni w zakresieTrzynaście pól dobowych dla dowolnej lądowej współrzędnej, od 1940 roku po zeszły tydzień.
Parametry
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
lat | float | — | Wymagane. Dowolna współrzędna na lądzie; archiwum jest globalne. |
lon | float | — | Wymagane. |
start | ISO date | 1 stycznia roku końcowego | Zakres ma pułap na żądanie — zobacz Plany. |
end | ISO date | ostatni dzień archiwum | |
fields | csv | temperatura i opad | Zapytaj /v1/climate/fields, na co ten przebieg potrafi odpowiedzieć. |
series | bool | true | Dołącz wartości dzień po dniu. Ustaw na false, gdy chcesz tylko agregaty. |
format | string | json | json albo csv. CSV to funkcja planów płatnych i zwraca wiersze miesięczne. |
To nie jest historia godzinowa z
GROUP BY z przodu. Pola dobowe są wyprowadzane raz, przy wciąganiu
danych, na granicy doby wybranej ze względu na fizykę, a nie na wygodę, a pola
pochodne — temperatura odczuwalna, usłonecznienie, średnia wilgotność — są
liczone z pełnego szeregu godzinowego, a nie z dobowych ekstremów.
Doby są cięte o północy słonecznej, a nie według
politycznej strefy czasowej. Przesunięcie to round(longitude / 15).
To wybór celowy i mierzalny: agregowanie po UTC zaniża dobowe minimum o 2,1 °C w Alice Springs, bo minimum wypada tuż przed świtem. Polityczna strefa czasowa byłaby jeszcze gorsza — dwie sąsiednie komórki po obu stronach granicy miałyby doby cięte w różnych momentach, a mapa dobowych maksimów rysowałaby kontur stref czasowych.
Wartości należą do komórki siatki, a nie do punktu. Nie dostrajamy temperatury do twojej dokładnej wysokości. Dostawcy, którzy to robią, będą się więc od nas różnić o kilka dziesiątych stopnia przy tej samej współrzędnej — do 0,4 °C w naszych własnych pomiarach — i żadna z tych liczb nie jest błędna. Nasza to, co reanaliza mówi o tej komórce; ich to ta wartość plus gradient pionowy zastosowany do różnicy wysokości. Publikujemy komórkę, żebyś wiedział, co dostajesz: zobacz pokrycie i komórki.
Agregaty miesięczne#
climate2 kredytów, +1 za każdy pełny okres 365,25 dni w zakresieTe same pola zagregowane po miesiącach kalendarzowych.
Sumy dla wielkości kumulowanych, średnie i ekstrema dla reszty. Ta sama cena co szereg dobowy, bo czyta tę samą kolumnę.
Poproś o nie, gdy to wartość miesięczna jest tym, co naprawdę rysujesz, zamiast ściągać trzydzieści razy więcej danych i redukować je samodzielnie — wolny jest transfer, a nie arytmetyka.
Klimat miejsca, w jednym wywołaniu#
climate3 kredytów, +1 za każdy pełny okres 365,25 dni w zakresieNormy miesięczne, szereg roczny, rekordy, trendy i Köppen — bez limitu zakresu.
Parametry
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
lat | float | — | Wymagane. |
lon | float | — | Wymagane. |
start | ISO date | pierwszy dzień archiwum | Poproszenie o cały zapis to normalny sposób używania tego endpointu. |
end | ISO date | ostatni dzień archiwum | |
daily | bool | false | Dodaje day_normals: normę każdego dnia kalendarzowego roku w twoim oknie, wraz z liczbą obserwacji stojących za każdą z nich. |
Wszystko, co strona klimatyczna mówi o danym miejscu, już zredukowane: dwanaście norm miesięcznych, jeden wiersz na każdy pełny rok kalendarzowy, rekordy wszech czasów z datami, w których padły, trend ocieplenia metodą najmniejszych kwadratów wraz z jego istotnością oraz kod Köppena-Geigera. Dla dowolnej lądowej współrzędnej na Ziemi.
Cena zależy od zakresu, a domyślnym zakresem jest całe
archiwum. Wycenione na 3 kredytów, +1 za każdy pełny okres 365,25 dni w zakresie — więc
wywołanie bez start obejmuje okres od 1940 do dziś
i kosztuje 89 kredytów, a nie jeden. W
planie darmowym to jakieś 110 wywołań miesięcznie.
To i tak tani sposób na tę odpowiedź: złożenie jej samodzielnie zajęłoby dziewięć limitowanych wywołań /v1/climate/daily na tym samym zakresie, które razem kosztują więcej i zwracają trzydzieści jeden tysięcy wierszy, które trzeba jeszcze zredukować. Ale to nie jest zwykłe sprawdzenie, a strona wywołująca to przy każdym odwiedzającym opróżni przydział. Zbuforuj to — odpowiedź dla współrzędnej zmienia się najwyżej raz dziennie.
Podaj start, gdy nie potrzebujesz całego zapisu: trzydzieści lat
kosztuje 32 zamiast 89.
Tutaj nie ma limitu zakresu, w odróżnieniu od
/v1/climate/daily. Tamten limit istnieje, bo wywołujący,
który potrafi ściągnąć szereg dzień po dniu, może odtworzyć archiwum; ten
endpoint nie zwraca żadnego szeregu. Pełny zapis wraca w około 62 kB — 100 kB z
daily=true — wobec trzydziestu jeden tysięcy wierszy dobowych, z
których został zredukowany, więc nie odtwarza niczego. Jedno żądanie zastępuje
dziewięć limitowanych wywołań dobowych, których ta sama odpowiedź inaczej by
wymagała.
daily=true to nie to samo co normals?daily=true
I w tej różnicy tkwi sedno. Endpoint norm uśrednia po trzydziestoletnim oknie WMO; ten uśrednia po oknie, o które poprosiłeś — domyślnie po całym archiwum.
To jedyny sposób, żeby powiedzieć „9,4 °C powyżej normy jak na 30
lipca” z osiemdziesięcioma siedmioma latami za tym twierdzeniem, a nie
trzydziestoma. Każdy dzień niesie swoją liczbę próbek, więc poszerzenie do
piętnastodniowej normy centrowanej zapisuje się jako
Σ(mean·samples) / Σ(samples) — dokładnie i bez drugiego
żądania.
Dwie konwencje, które warto znać przed porównaniem z innym źródłem
Rok kalendarzowy wchodzi do szeregu rocznego i do trendu tylko wtedy, gdy archiwum ma co najmniej 360 jego dni, więc rok bieżący jest wyłączony. Pół roku czyta się jak załamanie opadów i ciągnie za sobą linię trendu.
trends jest równe null poniżej dziesięciu pełnych
lat. Poniżej tego nachylenie to szum pogodowy przebrany za sygnał klimatyczny, a
wolimy nie publikować nic niż pewną siebie błędną liczbę. Z tego samego powodu
każdy trend niesie własne p_value i flagę
significant — przeczytaj je, zanim zacytujesz nachylenie.
Normy WMO#
normals3 kredytówTrzydziestoletnia średnia z okresu referencyjnego WMO.
Parametry
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
lat | float | — | Wymagane. |
lon | float | — | Wymagane. |
period | string | 1991-2020 | 1991-2020 albo 1961-1990. Oba są okresami referencyjnymi WMO. |
fields | csv | temperatura i opad | |
daily | bool | false | Dołącz 366 norm dobowych wraz z ich rozrzutami oraz rekord ciepła i chłodu dla każdego dnia kalendarzowego. |
Norma to nie średnia z okresu, o który akurat poprosiłeś. To średnia trzydziestoletnia z okna ustalonego przez Światową Organizację Meteorologiczną, tak żeby dwie osoby cytujące normę cytowały to samo.
To wymaga scope'u normals, którego
dobowe archiwum nie wymaga. Klucz, który bez problemu
czyta /v1/climate/daily, może tu i tak dostać
403 scope_denied — zobacz Plany, żeby
sprawdzić, który poziom go obejmuje.
Jeśli chodzi ci o „normę z całego zapisu”, a nie z okna WMO, użyj raczej
/v1/climate/summary — wymaga tylko scope'u
climate i daje osiemdziesiąt siedem lat zamiast trzydziestu.
Porównanie dwóch norm#
normals6 kredytówOba okresy WMO i zmiana między nimi, w jednym wywołaniu.
To pytanie, które większość ludzi naprawdę zadaje, prosząc o normę — nie „co jest tu normalne”, ale „o ile normalne się przesunęło”.
Odpowiedź w jednym żądaniu gwarantuje, że obie połowy nie mogą pochodzić z różnych przebiegów, a to właśnie tryb awarii liczenia tego samemu z dwóch wywołań: archiwum posuwa się między nimi, a różnica, którą publikujesz, zawiera wtedy zmianę wersji obok zmiany klimatu.
Pokrycie, pola i komórki#
Serwowany przebieg i daty, które obejmuje. Klucz niepotrzebny.
Na co ten przebieg potrafi odpowiedzieć, z jednostkami, i które pola są wyprowadzane. Klucz niepotrzebny.
climate1 kredytKtóra komórka odpowiada za punkt i jak daleko leży.
Warunki licencji tego archiwum. Klucz niepotrzebny.
cells/resolve odpowiada na pytanie, które należałoby zadać
każdemu produktowi siatkowemu, zanim się mu zaufa: którą komórkę tak
naprawdę czytam i jak daleko jest od punktu, o który pytałem? Przy 28 km ta
odległość może wynieść 20 km, a jej znajomość to różnica między zacytowaniem
liczby a zacytowaniem jej odpowiedzialnie.
fields ma ten sam kontrakt co
/v1/historical/variables: wypisuje, co zawiera
przebieg, a nie co produkt kiedyś może zawierać, więc klient zbudowany na nim
nie psuje się, gdy archiwum urośnie.
Przypnij komórkę zamiast współrzędnej, gdy punkt odniesienia musi pozostać porównywalny przez lata. Współrzędna jest stabilna, ale komórka, która ją obsługuje, przesunęłaby się, gdyby siatka kiedyś się zmieniła — a punkt odniesienia, który po cichu się przesuwa, to właśnie ten tryb awarii, któremu ten endpoint ma zapobiegać. API stopniodni ma ten sam wzorzec, z dedykowaną ścieżką: zobacz przypinanie komórki.