climatememory sviluppatori

Riferimento dell'API

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#

GEThttps://api.climatememory.com/v1/climate/dailyscope: climate2 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervallo

Tredici campi giornalieri per qualsiasi coordinata emersa, dal 1940 alla settimana scorsa.

Parametri

ParametroTipoPredefinitoDescrizione
latfloatObbligatorio. Qualsiasi coordinata sulla terraferma; l'archivio è mondiale.
lonfloatObbligatorio.
startISO date1º gennaio dell'anno finaleL'intervallo è limitato per richiesta — si veda Piani.
endISO dateultimo giorno dell'archivio
fieldscsvtemperatura e precipitazioniChieda a /v1/climate/fields a cosa può rispondere questa corsa.
seriesbooltrueIncludere i valori giorno per giorno. Lo imposti a false quando le servono solo gli aggregati.
formatstringjsonjson 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#

GEThttps://api.climatememory.com/v1/climate/monthlyscope: climate2 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervallo

Gli 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#

GEThttps://api.climatememory.com/v1/climate/summaryscope: climate3 crediti, +1 per ogni periodo completo di 365,25 giorni nell'intervallo

Normali mensili, serie annuale, record, tendenze e Köppen — senza limite di intervallo.

Parametri

ParametroTipoPredefinitoDescrizione
latfloatObbligatorio.
lonfloatObbligatorio.
startISO dateprimo giorno dell'archivioChiedere l'intero registro è l'uso normale di questo endpoint.
endISO dateultimo giorno dell'archivio
dailyboolfalseAggiunge 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#

GEThttps://api.climatememory.com/v1/climate/normalsscope: normals3 crediti

Una media trentennale su un periodo di riferimento OMM.

Parametri

ParametroTipoPredefinitoDescrizione
latfloatObbligatorio.
lonfloatObbligatorio.
periodstring1991-20201991-2020 o 1961-1990. Sono entrambi periodi di riferimento OMM.
fieldscsvtemperatura e precipitazioni
dailyboolfalseIncludere 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#

GEThttps://api.climatememory.com/v1/climate/normals/comparescope: normals6 crediti

Entrambi 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#

GEThttps://api.climatememory.com/v1/climate/coveragenessuna chiave necessaria1 credito

La corsa servita e le date che copre. Nessuna chiave necessaria.

GEThttps://api.climatememory.com/v1/climate/fieldsnessuna chiave necessaria1 credito

A cosa può rispondere questa corsa, con le unità, e quali campi sono derivati. Nessuna chiave necessaria.

GEThttps://api.climatememory.com/v1/climate/cells/resolvescope: climate1 credito

Quale cella risponde per un punto, e a che distanza si trova.

GEThttps://api.climatememory.com/v1/climate/licensingnessuna chiave necessaria0 crediti

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.