climatememory desarrolladores

Referencia de la API

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#

GEThttps://api.climatememory.com/v1/climate/dailyscope: climate2 créditos, +1 por cada periodo completo de 365,25 días del intervalo

Trece campos diarios para cualquier coordenada terrestre, de 1940 a la semana pasada.

Parámetros

ParámetroTipoPor defectoDescripción
latfloatObligatorio. Cualquier coordenada en tierra; el archivo es mundial.
lonfloatObligatorio.
startISO date1 de enero del año finalEl intervalo está acotado por solicitud — véase Planes.
endISO dateúltimo día del archivo
fieldscsvtemperatura y precipitaciónPregunte a /v1/climate/fields a qué puede responder esta pasada.
seriesbooltrueIncluir los valores día a día. Póngalo a false cuando solo le interesen los agregados.
formatstringjsonjson 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#

GEThttps://api.climatememory.com/v1/climate/monthlyscope: climate2 créditos, +1 por cada periodo completo de 365,25 días del intervalo

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

GEThttps://api.climatememory.com/v1/climate/summaryscope: climate3 créditos, +1 por cada periodo completo de 365,25 días del intervalo

Normales mensuales, serie anual, récords, tendencias y Köppen — sin límite de intervalo.

Parámetros

ParámetroTipoPor defectoDescripción
latfloatObligatorio.
lonfloatObligatorio.
startISO dateprimer día del archivoPedir todo el registro es el uso normal de este endpoint.
endISO dateúltimo día del archivo
dailyboolfalseAñ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#

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

Una media treintenal sobre un periodo de referencia OMM.

Parámetros

ParámetroTipoPor defectoDescripción
latfloatObligatorio.
lonfloatObligatorio.
periodstring1991-20201991-2020 o 1961-1990. Ambos son periodos de referencia OMM.
fieldscsvtemperatura y precipitación
dailyboolfalseIncluir 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#

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

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

GEThttps://api.climatememory.com/v1/climate/coverageno requiere clave1 crédito

La pasada que se está sirviendo y las fechas que abarca. No requiere clave.

GEThttps://api.climatememory.com/v1/climate/fieldsno requiere clave1 crédito

A qué puede responder esta pasada, con unidades, y qué campos son derivados. No requiere clave.

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

Qué celda responde por un punto, y a qué distancia está.

GEThttps://api.climatememory.com/v1/climate/licensingno requiere clave0 créditos

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.