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#
climate2 créditos, +1 por cada período completo de 365,25 dias do intervaloTreze campos diários para qualquer coordenada de terra firme, de 1940 à semana passada.
Parâmetros
| Parâmetro | Tipo | Por omissão | Descrição |
|---|---|---|---|
lat | float | — | Obrigatório. Qualquer coordenada em terra; o arquivo é mundial. |
lon | float | — | Obrigatório. |
start | ISO date | 1 de janeiro do ano de fim | O intervalo tem teto por pedido — veja Planos. |
end | ISO date | o último dia do arquivo | |
fields | csv | temperatura e precipitação | Pergunte a /v1/climate/fields a que este run sabe responder. |
series | bool | true | Incluir os valores dia a dia. Ponha a false quando só quer os agregados. |
format | string | json | json 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#
climate2 créditos, +1 por cada período completo de 365,25 dias do intervaloOs 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#
climate3 créditos, +1 por cada período completo de 365,25 dias do intervaloNormais mensais, série anual, recordes, tendências e Köppen — sem limite de intervalo.
Parâmetros
| Parâmetro | Tipo | Por omissão | Descrição |
|---|---|---|---|
lat | float | — | Obrigatório. |
lon | float | — | Obrigatório. |
start | ISO date | o primeiro dia do arquivo | Pedir o registo inteiro é a maneira normal de usar isto. |
end | ISO date | o último dia do arquivo | |
daily | bool | false | Acrescenta 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#
normals3 créditosUma média de trinta anos sobre um período de referência da OMM.
Parâmetros
| Parâmetro | Tipo | Por omissão | Descrição |
|---|---|---|---|
lat | float | — | Obrigatório. |
lon | float | — | Obrigatório. |
period | string | 1991-2020 | 1991-2020 ou 1961-1990. São ambos períodos de referência da OMM. |
fields | csv | temperatura e precipitação | |
daily | bool | false | Incluir 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#
normals6 créditosOs 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#
O run que está a ser servido e as datas que abrange. Sem chave.
A que este run sabe responder, com unidades, e quais os campos derivados. Sem chave.
climate1 créditoQue célula responde por um ponto, e a que distância está.
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.