API de Clima
Ochenta y siete años de clima diario, en toda la superficie terrestre, desde un único archivo — del 1 de enero de 1940 hasta hace menos de una semana, sobre la malla ERA5 a 0,25° (unos 28 km). Responde a ¿esto es normal?, con las pruebas.
Clima diario#
climate2 créditos, +1 por cada periodo completo de 365,25 días del intervaloTrece campos diarios para cualquier coordenada terrestre, de 1940 a la semana pasada.
Parámetros
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
lat | float | — | Obligatorio. Cualquier coordenada en tierra; el archivo es mundial. |
lon | float | — | Obligatorio. |
start | ISO date | 1 de enero del año final | El intervalo está acotado por solicitud — véase Planes. |
end | ISO date | último día del archivo | |
fields | csv | temperatura y precipitación | Pregunte a /v1/climate/fields a qué puede responder esta pasada. |
series | bool | true | Incluir los valores día a día. Póngalo a false cuando solo le interesen los agregados. |
format | string | json | json o csv. El CSV es exclusivo de los planes de pago y devuelve las filas mensuales. |
Esto no es el histórico horario
con un GROUP BY delante. Los campos diarios se derivan una sola
vez, en la ingesta, sobre una frontera de día elegida por la física y no por
comodidad, y los campos derivados — temperatura aparente, duración de la
insolación, humedad media — se calculan a partir de la serie horaria completa y
no de los extremos diarios.
Los días se cortan en la medianoche solar, no en el huso
horario político. El desplazamiento es round(longitude / 15).
Es una decisión deliberada y se puede medir: agregar sobre UTC sesga el mínimo diario en 2,1 °C en Alice Springs, porque el mínimo cae justo antes del amanecer. Un huso político sería aún peor — dos celdas vecinas a ambos lados de una frontera verían sus días cortados en momentos distintos, y un mapa de máximas diarias dibujaría el contorno de los husos.
Los valores son los de la celda, no los del punto. No ajustamos la temperatura a su altitud exacta. Los proveedores que sí lo hacen se apartarán de nosotros en unas décimas de grado en la misma coordenada — hasta 0,4 °C en nuestras propias mediciones — y ninguna de las dos cifras es errónea. La nuestra es lo que el reanálisis dice de esa celda; la suya es ese mismo valor más un gradiente térmico aplicado a una diferencia de altitud. Publicamos la celda para que usted sepa cuál está obteniendo: véase cobertura y celdas.
Agregados mensuales#
climate2 créditos, +1 por cada periodo completo de 365,25 días del intervaloLos mismos campos agregados por mes natural.
Sumas para los acumulados, medias y extremos para el resto. Mismo precio que la serie diaria, porque lee la misma columna.
Pídalos cuando lo que realmente representa es una cifra mensual, en lugar de traer treinta veces los datos y reducirlos usted mismo — lo lento es la transferencia, no el cálculo.
El clima de un lugar, en una sola llamada#
climate3 créditos, +1 por cada periodo completo de 365,25 días del intervaloNormales mensuales, serie anual, récords, tendencias y Köppen — sin límite de intervalo.
Parámetros
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
lat | float | — | Obligatorio. |
lon | float | — | Obligatorio. |
start | ISO date | primer día del archivo | Pedir todo el registro es el uso normal de este endpoint. |
end | ISO date | último día del archivo | |
daily | bool | false | Añade day_normals: la normal de cada día del año sobre su ventana, con el número de observaciones que respalda cada una. |
Todo lo que una página de clima afirma sobre un lugar, ya reducido: doce normales mensuales, una fila por año natural completo, los récords históricos con las fechas en que se produjeron, la tendencia de calentamiento por mínimos cuadrados con su significación, y el código Köppen-Geiger. Para cualquier coordenada terrestre del planeta.
Se tarifica por intervalo, y el intervalo por defecto es el archivo
entero. Tarificado a 3 créditos, +1 por cada periodo completo de 365,25 días del intervalo — así que una
llamada sin start cubre de 1940 a hoy y cuesta
89 créditos, no uno. En el plan gratuito
eso son unas 110 llamadas al mes.
Sigue siendo la forma barata de obtener esta respuesta: montarla usted mismo exigiría nueve llamadas acotadas a /v1/climate/daily sobre el mismo intervalo, que entre todas cuestan más y devuelven treinta y una mil filas que después habría que reducir. Pero no es una simple consulta, y una página que la llame por visitante vaciará una cuota. Guárdela en caché — para una coordenada, la respuesta cambia como mucho una vez al día.
Pase start cuando no necesite todo el registro: treinta años
cuestan 32 en lugar de 89.
Aquí no hay límite de intervalo, a diferencia de
/v1/climate/daily. Ese límite existe porque quien puede
extraer la serie día a día puede reconstruir el archivo; este endpoint no
devuelve serie alguna. El registro completo vuelve en unos 62 kB — 100 kB con
daily=true — frente a las treinta y una mil filas diarias de las
que se redujo: no reconstruye nada. Una solicitud sustituye a las nueve llamadas
diarias acotadas que la misma respuesta costaría de otro modo.
daily=true no es lo mismo que
normals?daily=true
Y en eso está la diferencia. El endpoint de normales promedia sobre una ventana OMM de treinta años; este promedia sobre la ventana que usted haya pedido — el archivo entero por defecto.
Es la única forma de decir «9,4 °C por encima de lo normal para un 30 de
julio» con ochenta y siete años detrás de la afirmación en lugar de
treinta. Cada día lleva su número de muestras, así que ampliar a una normal
centrada de quince días se escribe
Σ(mean·samples) / Σ(samples) — exacto, y sin una segunda
solicitud.
Dos convenciones que conviene conocer antes de comparar con otra fuente
Un año natural entra en la serie anual y en la tendencia solo si el archivo contiene al menos 360 de sus días, de modo que el año en curso queda excluido. Medio año se lee como un desplome de la precipitación y arrastra consigo la recta de tendencia.
trends vale null por debajo de diez años completos.
Por debajo de ese umbral, una pendiente es ruido meteorológico disfrazado de
señal climática, y preferimos no publicar nada antes que una cifra errónea
enunciada con aplomo. Por la misma razón cada tendencia lleva su propio
p_value y su indicador significant — léalos antes de
citar la pendiente.
Normales OMM#
normals3 créditosUna media treintenal sobre un periodo de referencia OMM.
Parámetros
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
lat | float | — | Obligatorio. |
lon | float | — | Obligatorio. |
period | string | 1991-2020 | 1991-2020 o 1961-1990. Ambos son periodos de referencia OMM. |
fields | csv | temperatura y precipitación | |
daily | bool | false | Incluir las 366 normales diarias con sus dispersiones, y el récord de máxima y de mínima de cada día del año. |
Una normal no es la media del periodo que a usted se le haya ocurrido pedir. Es una media treintenal sobre una ventana que fija la Organización Meteorológica Mundial, para que dos personas que citan una normal citen lo mismo.
Esto exige el scope normals, que
el archivo diario no exige. Una clave que lee
/v1/climate/daily sin problemas puede recibir aun así un
403 scope_denied aquí — véase Planes para
saber qué nivel lo incluye.
Si lo que quiere es «la normal sobre todo el registro» en vez de sobre una
ventana OMM, use /v1/climate/summary — solo
necesita el scope climate y le da ochenta y siete años en lugar de
treinta.
Comparar dos normales#
normals6 créditosAmbos periodos OMM y la variación entre ellos, en una sola llamada.
Esta es la pregunta que la mayoría plantea en realidad cuando pide una normal — no «qué es normal aquí» sino «cuánto se ha desplazado lo normal».
Responderla en una sola solicitud garantiza que las dos mitades no puedan proceder de pasadas distintas, que es justamente el fallo de calcularlo uno mismo a partir de dos llamadas: el archivo avanza entre ambas, y la diferencia que usted publique contendrá entonces un cambio de versión además de un cambio climático.
Cobertura, campos y celdas#
La pasada que se está sirviendo y las fechas que abarca. No requiere clave.
A qué puede responder esta pasada, con unidades, y qué campos son derivados. No requiere clave.
climate1 créditoQué celda responde por un punto, y a qué distancia está.
Las condiciones de licencia de este archivo. No requiere clave.
cells/resolve responde a la pregunta que habría que hacerle a
todo producto en malla antes de confiar en él: ¿qué celda estoy leyendo en
realidad, y a qué distancia está del punto que pedí? A 28 km esa distancia
puede alcanzar los 20 km, y conocerla es la diferencia entre citar una cifra y
citarla con responsabilidad.
fields ofrece el mismo contrato que
/v1/historical/variables: enumera lo que la
pasada contiene y no lo que el producto podría contener algún día, de modo que
un cliente construido sobre él no se rompe cuando el archivo crece.
Fije la celda en lugar de la coordenada cuando una línea de base deba seguir siendo comparable a lo largo de los años. Una coordenada es estable, pero la celda que la sirve se movería si la malla llegara a cambiar — y una línea de base que se mueve en silencio es exactamente el fallo que este endpoint existe para evitar. La API de grados-día sigue el mismo patrón, con una ruta propia: véase fijar una celda.