API Clima
Ottantasette anni di clima giornaliero, ovunque sulle terre emerse, da un solo archivio — dal 1º gennaio 1940 a meno di una settimana da oggi, sulla griglia ERA5 a 0,25° (circa 28 km). Risponde a è normale?, con le prove.
Clima giornaliero#
climate2 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervalloTredici campi giornalieri per qualsiasi coordinata emersa, dal 1940 alla settimana scorsa.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
lat | float | — | Obbligatorio. Qualsiasi coordinata sulla terraferma; l'archivio è mondiale. |
lon | float | — | Obbligatorio. |
start | ISO date | 1º gennaio dell'anno finale | L'intervallo è limitato per richiesta — si veda Piani. |
end | ISO date | ultimo giorno dell'archivio | |
fields | csv | temperatura e precipitazioni | Chieda a /v1/climate/fields a cosa può rispondere questa corsa. |
series | bool | true | Includere i valori giorno per giorno. Lo imposti a false quando le servono solo gli aggregati. |
format | string | json | json o csv. Il CSV è riservato ai piani a pagamento e restituisce le righe mensili. |
Questo non è lo storico orario con
davanti un GROUP BY. I campi giornalieri sono derivati una volta
sola, in fase di ingestione, su un confine di giornata scelto per la fisica e
non per comodità, e i campi derivati — temperatura percepita, durata
dell'insolazione, umidità media — sono calcolati dalla serie oraria completa e
non dagli estremi giornalieri.
Le giornate sono tagliate alla mezzanotte solare, non al
fuso orario politico. Lo scarto vale round(longitude / 15).
È una scelta deliberata ed è misurabile: aggregare su UTC distorce il minimo giornaliero di 2,1 °C ad Alice Springs, perché il minimo cade poco prima dell'alba. Un fuso politico sarebbe anche peggio — due celle vicine ai due lati di un confine vedrebbero le giornate tagliate in momenti diversi, e una mappa delle massime giornaliere disegnerebbe il contorno dei fusi.
I valori sono quelli della cella, non quelli del punto. Non adattiamo la temperatura alla sua quota esatta. I fornitori che lo fanno si discostano quindi da noi di qualche decimo di grado alla stessa coordinata — fino a 0,4 °C nelle nostre misure — e nessuna delle due cifre è sbagliata. La nostra è ciò che la rianalisi dice di quella cella; la loro è quello stesso valore più un gradiente termico applicato a una differenza di quota. Pubblichiamo la cella perché lei sappia quale sta ottenendo: si veda copertura e celle.
Aggregati mensili#
climate2 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervalloGli stessi campi aggregati per mese solare.
Somme per i cumulati, medie ed estremi per il resto. Stesso prezzo della serie giornaliera, perché legge la stessa colonna.
Li chieda quando è davvero una cifra mensile ciò che rappresenta, anziché scaricare trenta volte i dati e ridurli da sé — a essere lento è il trasferimento, non il calcolo.
Il clima di un luogo, in una sola chiamata#
climate3 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervalloNormali mensili, serie annuale, record, tendenze e Köppen — senza limite di intervallo.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
lat | float | — | Obbligatorio. |
lon | float | — | Obbligatorio. |
start | ISO date | primo giorno dell'archivio | Chiedere l'intero registro è l'uso normale di questo endpoint. |
end | ISO date | ultimo giorno dell'archivio | |
daily | bool | false | Aggiunge day_normals: la normale di ogni giorno dell'anno sulla sua finestra, con il numero di osservazioni dietro ciascuna. |
Tutto ciò che una pagina sul clima afferma di un luogo, già ridotto: dodici normali mensili, una riga per ogni anno solare completo, i record storici con le date in cui sono caduti, la tendenza di riscaldamento ai minimi quadrati con la sua significatività, e il codice Köppen-Geiger. Per qualsiasi coordinata emersa della Terra.
Il prezzo dipende dall'intervallo, e l'intervallo predefinito è
l'archivio intero. Tariffato a 3 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervallo —
quindi una chiamata senza start copre dal 1940 a
oggi e costa 89 crediti, non uno. Sul piano
gratuito sono circa 110 chiamate al mese.
Resta comunque il modo economico di ottenere questa risposta: comporla da sé richiederebbe nove chiamate limitate a /v1/climate/daily sullo stesso intervallo, che nel complesso costano di più e restituiscono trentunomila righe da ridurre. Ma non è una semplice consultazione, e una pagina che lo chiama a ogni visitatore svuoterà una quota. La metta in cache — per una coordinata la risposta cambia al massimo una volta al giorno.
Passi start quando non le serve l'intero registro: trent'anni
costano 32 anziché 89.
Qui non c'è limite di intervallo, a differenza di
/v1/climate/daily. Quel limite esiste perché chi può
estrarre la serie giorno per giorno può ricostruire l'archivio; questo endpoint
non restituisce alcuna serie. Il registro completo torna in circa 62 kB — 100 kB
con daily=true — a fronte delle trentunomila righe giornaliere da
cui è stato ridotto: non ricostruisce nulla. Una richiesta sostituisce le nove
chiamate giornaliere limitate che la stessa risposta costerebbe altrimenti.
daily=true non è lo stesso di
normals?daily=true
Ed è proprio lì la differenza. L'endpoint delle normali media su una finestra OMM di trent'anni; questo media sulla finestra che lei ha chiesto — l'intero archivio per impostazione predefinita.
È l'unico modo per dire «9,4 °C sopra la norma per un 30 luglio» con
ottantasette anni dietro l'affermazione anziché trenta. Ogni giorno porta il suo
numero di campioni, così allargare a una normale centrata su quindici giorni si
scrive Σ(mean·samples) / Σ(samples) — esatto, e senza una seconda
richiesta.
Due convenzioni da conoscere prima di confrontare con un'altra fonte
Un anno solare entra nella serie annuale e nella tendenza solo se l'archivio ne contiene almeno 360 giorni, per cui l'anno in corso è escluso. Mezzo anno si legge come un crollo delle precipitazioni e trascina con sé una retta di tendenza.
trends vale null sotto i dieci anni completi. Al di
sotto, una pendenza è rumore meteorologico travestito da segnale climatico, e
preferiamo non pubblicare nulla piuttosto che una cifra sbagliata enunciata con
sicurezza. Per la stessa ragione ogni tendenza porta il proprio
p_value e il flag significant — li legga prima di
citare la pendenza.
Normali OMM#
normals3 creditiUna media trentennale su un periodo di riferimento OMM.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
lat | float | — | Obbligatorio. |
lon | float | — | Obbligatorio. |
period | string | 1991-2020 | 1991-2020 o 1961-1990. Sono entrambi periodi di riferimento OMM. |
fields | csv | temperatura e precipitazioni | |
daily | bool | false | Includere le 366 normali giornaliere con le loro dispersioni, e il record di caldo e di freddo di ogni giorno dell'anno. |
Una normale non è la media del periodo che le è capitato di chiedere. È una media trentennale su una finestra fissata dall'Organizzazione Meteorologica Mondiale, affinché due persone che citano una normale citino la stessa cosa.
Questo richiede lo scope normals, che
l'archivio giornaliero non richiede. Una chiave che legge
/v1/climate/daily senza problemi può comunque ricevere qui un
403 scope_denied — si veda Piani per sapere
quale livello lo include.
Se ciò che vuole è «la normale sull'intero registro» anziché su una finestra
OMM, usi invece /v1/climate/summary — richiede
solo lo scope climate e le dà ottantasette anni anziché trenta.
Confrontare due normali#
normals6 creditiEntrambi i periodi OMM e la variazione tra loro, in una sola chiamata.
Questa è la domanda che la maggior parte delle persone pone davvero quando chiede una normale — non «che cosa è normale qui» ma «di quanto si è spostata la norma».
Rispondervi in un'unica richiesta garantisce che le due metà non possano provenire da corse diverse, che è esattamente il difetto del calcolarlo da sé a partire da due chiamate: l'archivio avanza nel frattempo, e la differenza che lei pubblica contiene allora un cambio di versione oltre a un cambiamento climatico.
Copertura, campi e celle#
La corsa servita e le date che copre. Nessuna chiave necessaria.
A cosa può rispondere questa corsa, con le unità, e quali campi sono derivati. Nessuna chiave necessaria.
climate1 creditoQuale cella risponde per un punto, e a che distanza si trova.
Le condizioni di licenza di questo archivio. Nessuna chiave necessaria.
cells/resolve risponde alla domanda che andrebbe posta a ogni
prodotto su griglia prima di fidarsene: quale cella sto leggendo davvero, e
quanto dista dal punto che ho chiesto? A 28 km quella distanza può
raggiungere i 20 km, e conoscerla è la differenza tra citare una cifra e citarla
in modo responsabile.
fields offre lo stesso contratto di
/v1/historical/variables: elenca ciò che la corsa
contiene e non ciò che il prodotto potrebbe contenere un giorno, così un client
costruito su di esso non si rompe quando l'archivio cresce.
Fissi la cella anziché la coordinata quando una linea di base deve restare confrontabile negli anni. Una coordinata è stabile, ma la cella che la serve si sposterebbe se la griglia cambiasse — e una linea di base che si sposta in silenzio è esattamente il difetto che questo endpoint esiste per evitare. L'API dei gradi giorno segue lo stesso schema, con un percorso dedicato: si veda fissare una cella.