climatememory programadores

Referência da API

API Clima

Oitenta e sete anos de clima diário, em toda a terra firme, a partir de um único arquivo — de 1 de janeiro de 1940 até há menos de uma semana, na grelha ERA5 a 0,25° (cerca de 28 km). Responde a isto é normal?, com as provas.

Clima diário#

GEThttps://api.climatememory.com/v1/climate/dailyscope: climate2 créditos, +1 por cada período completo de 365,25 dias do intervalo

Treze campos diários para qualquer coordenada de terra firme, de 1940 à semana passada.

Parâmetros

ParâmetroTipoPor omissãoDescrição
latfloatObrigatório. Qualquer coordenada em terra; o arquivo é mundial.
lonfloatObrigatório.
startISO date1 de janeiro do ano de fimO intervalo tem teto por pedido — veja Planos.
endISO dateo último dia do arquivo
fieldscsvtemperatura e precipitaçãoPergunte a /v1/climate/fields a que este run sabe responder.
seriesbooltrueIncluir os valores dia a dia. Ponha a false quando só quer os agregados.
formatstringjsonjson ou csv. O CSV é uma funcionalidade dos planos pagos e devolve as linhas mensais.

Isto não é o histórico horário com um GROUP BY à frente. Os campos diários são derivados uma só vez, na ingestão, numa fronteira de dia escolhida pela física e não pela conveniência, e os campos derivados — temperatura aparente, duração da insolação, humidade média — são calculados a partir da série horária completa e não a partir dos extremos diários.

Os dias são cortados à meia-noite solar, e não no fuso horário político. O desfasamento é round(longitude / 15).

É uma escolha deliberada e é mensurável: agregar em UTC enviesa o mínimo diário em 2,1 °C em Alice Springs, porque o mínimo cai mesmo antes do amanhecer. Um fuso horário político seria ainda pior — duas células vizinhas de um lado e do outro de uma fronteira teriam os seus dias cortados em momentos diferentes, e um mapa dos máximos diários mostraria o contorno dos fusos.

Os valores são os da célula da grelha, não os do ponto. Não ajustamos a temperatura à sua altitude exata. Os fornecedores que o fazem diferem portanto de nós por alguns décimos de grau na mesma coordenada — até 0,4 °C nas nossas próprias medições — e nenhum dos números está errado. O nosso é o que a reanálise diz daquela célula; o deles é esse valor mais um gradiente térmico aplicado a uma diferença de altitude. Publicamos a célula para que saiba qual está a receber: veja cobertura e células.

Agregados mensais#

GEThttps://api.climatememory.com/v1/climate/monthlyscope: climate2 créditos, +1 por cada período completo de 365,25 dias do intervalo

Os mesmos campos agregados por mês de calendário.

Somas para as acumulações, médias e extremos para o resto. O mesmo preço da série diária, porque lê a mesma coluna.

Peça-os quando é um valor mensal que realmente traça, em vez de ir buscar trinta vezes os dados e reduzi-los você mesmo — o lento é a transferência, não a aritmética.

O clima de um lugar, numa só chamada#

GEThttps://api.climatememory.com/v1/climate/summaryscope: climate3 créditos, +1 por cada período completo de 365,25 dias do intervalo

Normais mensais, série anual, recordes, tendências e Köppen — sem limite de intervalo.

Parâmetros

ParâmetroTipoPor omissãoDescrição
latfloatObrigatório.
lonfloatObrigatório.
startISO dateo primeiro dia do arquivoPedir o registo inteiro é a maneira normal de usar isto.
endISO dateo último dia do arquivo
dailyboolfalseAcrescenta day_normals: a normal de cada dia de calendário do ano sobre a sua janela, com o número de observações por trás de cada uma.

Tudo o que uma página de clima afirma sobre um local, já reduzido: doze normais mensais, uma linha por ano de calendário completo, os recordes absolutos com as datas em que caíram, a tendência de aquecimento por mínimos quadrados com a sua significância, e o código Köppen-Geiger. Para qualquer coordenada de terra firme do planeta.

O preço depende do intervalo, e o intervalo por omissão é o arquivo inteiro. Tarifado a 3 créditos, +1 por cada período completo de 365,25 dias do intervalo — por isso uma chamada sem start cobre de 1940 até hoje e custa 89 créditos, e não um. No plano gratuito são cerca de 110 chamadas por mês.

Continua a ser a maneira barata de obter esta resposta: montá-la você mesmo exigiria nove chamadas com teto a /v1/climate/daily sobre o mesmo intervalo, que juntas custam mais e devolvem trinta e uma mil linhas que ainda lhe cabe reduzir. Mas não é uma consulta simples, e uma página que a chame por visitante esvazia uma quota. Ponha-a em cache — a resposta para uma coordenada muda uma vez por dia, no máximo.

Passe start quando não precisa do registo inteiro: trinta anos custam 32 em vez de 89.

Aqui não há limite de intervalo, ao contrário de /v1/climate/daily. Esse limite existe porque quem consegue puxar a série dia a dia pode reconstruir o arquivo; este endpoint não devolve série nenhuma. O registo completo volta em cerca de 62 kB — 100 kB com daily=true — contra as trinta e uma mil linhas diárias de que foi reduzido, por isso não reconstrói nada. Um pedido substitui as nove chamadas diárias com teto que a mesma resposta custaria de outro modo.

daily=true não é o mesmo que normals?daily=true

E a diferença é o essencial. O endpoint das normais faz a média sobre uma janela OMM de trinta anos; este faz a média sobre a janela que pediu — o arquivo inteiro, por omissão.

É a única maneira de dizer «9,4 °C acima do normal para um 30 de julho» com oitenta e sete anos por trás da afirmação em vez de trinta. Cada dia traz a sua contagem de amostras, por isso alargar a uma normal centrada de quinze dias escreve-se Σ(mean·samples) / Σ(samples) — exato, e sem um segundo pedido.

Duas convenções a conhecer antes de comparar com outra fonte

Um ano de calendário só entra na série anual e na tendência se o arquivo tiver pelo menos 360 dos seus dias, pelo que o ano em curso fica de fora. Meio ano lê-se como um colapso da precipitação e arrasta consigo uma reta de tendência.

trends vale null abaixo de dez anos completos. Abaixo disso, um declive é ruído meteorológico vestido de sinal climático, e preferimos não publicar nada a publicar um número errado dito com confiança. Cada tendência traz pela mesma razão o seu p_value e a sua marca significant — leia-os antes de citar o declive.

Normais OMM#

GEThttps://api.climatememory.com/v1/climate/normalsscope: normals3 créditos

Uma média de trinta anos sobre um período de referência da OMM.

Parâmetros

ParâmetroTipoPor omissãoDescrição
latfloatObrigatório.
lonfloatObrigatório.
periodstring1991-20201991-2020 ou 1961-1990. São ambos períodos de referência da OMM.
fieldscsvtemperatura e precipitação
dailyboolfalseIncluir as 366 normais por dia com as suas dispersões, e o recorde de calor e de frio de cada dia de calendário.

Uma normal não é a média do período que calhou pedir. É uma média de trinta anos sobre uma janela fixada pela Organização Meteorológica Mundial, para que duas pessoas que citam uma normal citem a mesma coisa.

Isto exige o scope normals, que o arquivo diário não exige. Uma chave que lê /v1/climate/daily sem problemas pode ainda assim receber 403 scope_denied aqui — veja Planos para saber que escalão o inclui.

Se o que quer é «a normal sobre o registo inteiro» e não sobre uma janela OMM, use antes /v1/climate/summary — só precisa do scope climate e dá-lhe oitenta e sete anos em vez de trinta.

Comparar duas normais#

GEThttps://api.climatememory.com/v1/climate/normals/comparescope: normals6 créditos

Os dois períodos OMM e a variação entre eles, numa só chamada.

Esta é a pergunta que a maioria das pessoas está realmente a fazer quando pede uma normal — não «o que é normal aqui» mas «quanto é que o normal se mexeu».

Respondê-la num só pedido garante que as duas metades não podem vir de runs diferentes, que é o modo de falha de a calcular por si a partir de duas chamadas: o arquivo avança entre elas, e a diferença que publica passa então a conter uma mudança de versão além de uma mudança climática.

Cobertura, campos e células#

GEThttps://api.climatememory.com/v1/climate/coveragesem chave1 crédito

O run que está a ser servido e as datas que abrange. Sem chave.

GEThttps://api.climatememory.com/v1/climate/fieldssem chave1 crédito

A que este run sabe responder, com unidades, e quais os campos derivados. Sem chave.

GEThttps://api.climatememory.com/v1/climate/cells/resolvescope: climate1 crédito

Que célula responde por um ponto, e a que distância está.

GEThttps://api.climatememory.com/v1/climate/licensingsem chave0 créditos

Os termos de licença deste arquivo. Sem chave.

cells/resolve responde à pergunta que se devia fazer a qualquer produto em grelha antes de confiar nele: que célula estou realmente a ler, e a que distância está do ponto que pedi? A 28 km essa distância pode ser de 20 km, e sabê-la é a diferença entre citar um número e citá-lo com responsabilidade.

fields tem o mesmo contrato que /v1/historical/variables: lista o que o run tem e não o que o produto poderá vir a ter um dia, para que um cliente construído contra ele não parta quando o arquivo crescer.

Fixe a célula em vez da coordenada quando uma referência tem de se manter comparável ao longo dos anos. Uma coordenada é estável, mas a célula que a serve mudaria se a grelha alguma vez mudasse — e uma referência que se mexe em silêncio é o modo de falha que este endpoint existe para evitar. A API de graus-dia tem o mesmo padrão, com um caminho dedicado: veja fixar uma célula.