climatememory développeurs

Référence de l'API

API Climat

Quatre-vingt-sept ans de climat quotidien, partout sur les terres émergées, depuis une seule archive — du 1er janvier 1940 à il y a moins d'une semaine, sur la grille ERA5 à 0,25° (environ 28 km). Répond à est-ce que c'est normal ?, preuves à l'appui.

Climat quotidien#

GEThttps://api.climatememory.com/v1/climate/dailyscope : climate2 crédits, +1 par période complète de 365,25 jours dans l'amplitude

Treize champs quotidiens pour toute coordonnée terrestre, de 1940 à la semaine dernière.

Paramètres

ParamètreTypeDéfautDescription
latfloatObligatoire. Toute coordonnée sur terre ; l'archive est mondiale.
lonfloatObligatoire.
startISO date1er janvier de l'année de finL'amplitude est plafonnée par requête — voir Formules.
endISO datedernier jour de l'archive
fieldscsvtempérature et précipitationsDemandez à /v1/climate/fields ce que ce run sait répondre.
seriesbooltrueInclure les valeurs jour par jour. Mettez-le à false quand seuls les agrégats vous intéressent.
formatstringjsonjson ou csv. Le CSV est réservé aux formules payantes et renvoie les lignes mensuelles.

Ce n'est pas l'historique horaire précédé d'un GROUP BY. Les champs quotidiens sont dérivés une seule fois, à l'ingestion, sur une frontière de journée choisie pour la physique plutôt que pour la commodité, et les champs dérivés — température ressentie, durée d'ensoleillement, humidité moyenne — sont calculés depuis la série horaire complète et non depuis les extrêmes quotidiens.

Les journées sont coupées au minuit solaire, pas au fuseau horaire politique. Le décalage vaut round(longitude / 15).

C'est un choix délibéré, et il se mesure : agréger sur UTC biaise le minimum quotidien de 2,1 °C à Alice Springs, parce que le minimum tombe juste avant l'aube. Un fuseau politique serait pire encore — deux mailles voisines de part et d'autre d'une frontière verraient leurs journées coupées à des moments différents, et une carte des maxima quotidiens dessinerait le contour des fuseaux.

Les valeurs sont celles de la maille, pas celles du point. Nous n'ajustons pas la température à votre altitude exacte. Les fournisseurs qui le font s'écarteront donc de nous de quelques dixièmes de degré à la même coordonnée — jusqu'à 0,4 °C dans nos propres mesures — et aucun des deux chiffres n'est faux. Le nôtre est ce que la réanalyse dit de cette maille ; le leur est cette valeur augmentée d'un gradient adiabatique appliqué à une différence d'altitude. Nous publions la maille pour que vous sachiez lequel vous obtenez : voir couverture et mailles.

Agrégats mensuels#

GEThttps://api.climatememory.com/v1/climate/monthlyscope : climate2 crédits, +1 par période complète de 365,25 jours dans l'amplitude

Les mêmes champs agrégés par mois calendaire.

Sommes pour les cumuls, moyennes et extrêmes pour le reste. Même prix que la série quotidienne, parce que la lecture porte sur la même colonne.

Demandez-les quand c'est un chiffre mensuel que vous tracez réellement, plutôt que de récupérer trente fois la donnée pour la réduire vous-même — c'est le transfert qui est lent, pas le calcul.

Le climat d'un lieu, en un seul appel#

GEThttps://api.climatememory.com/v1/climate/summaryscope : climate3 crédits, +1 par période complète de 365,25 jours dans l'amplitude

Normales mensuelles, série annuelle, records, tendances et Köppen — sans limite d'amplitude.

Paramètres

ParamètreTypeDéfautDescription
latfloatObligatoire.
lonfloatObligatoire.
startISO datepremier jour de l'archiveDemander tout l'enregistrement est l'usage normal de cet endpoint.
endISO datedernier jour de l'archive
dailyboolfalseAjoute day_normals : la normale de chaque jour de l'année sur votre fenêtre, avec le nombre d'observations derrière chacune.

Tout ce qu'une page climat affirme d'un lieu, déjà réduit : douze normales mensuelles, une ligne par année civile complète, les records absolus avec les dates auxquelles ils sont tombés, la tendance au réchauffement par moindres carrés avec sa significativité, et le code Köppen-Geiger. Pour toute coordonnée terrestre du globe.

Le prix dépend de l'amplitude, et l'amplitude par défaut est l'archive entière. Tarifé à 3 crédits, +1 par période complète de 365,25 jours dans l'amplitude — donc un appel sans start couvre de 1940 à aujourd'hui et coûte 89 crédits, pas un. Sur la formule gratuite, cela fait environ 110 appels par mois.

Cela reste la façon économique d'obtenir cette réponse : l'assembler vous-même demanderait neuf appels plafonnés à /v1/climate/daily sur la même amplitude, qui coûtent plus cher à eux tous et renvoient trente-et-un mille lignes qu'il vous reste à réduire. Mais ce n'est pas une simple consultation, et une page qui l'appelle à chaque visiteur videra un quota. Mettez la réponse en cache — pour une coordonnée, elle change une fois par jour au plus.

Passez start quand vous n'avez pas besoin de tout l'enregistrement : trente ans coûtent 32 au lieu de 89.

Aucune limite d'amplitude ici, contrairement à /v1/climate/daily. Cette limite existe parce qu'un appelant capable de tirer la série jour par jour peut reconstituer l'archive ; cet endpoint-ci ne renvoie aucune série. L'enregistrement complet revient en 62 ko environ — 100 ko avec daily=true — contre les trente-et-un mille lignes quotidiennes dont il est issu : il ne reconstitue donc rien. Une requête remplace les neuf appels quotidiens plafonnés que la même réponse coûterait autrement.

daily=true n'est pas la même chose que normals?daily=true

Et c'est là toute la différence. L'endpoint des normales moyenne sur une fenêtre OMM de trente ans ; celui-ci moyenne sur la fenêtre que vous avez demandée — l'archive entière par défaut.

C'est le seul moyen de dire « 9,4 °C au-dessus de la normale pour un 30 juillet » avec quatre-vingt-sept ans derrière l'affirmation plutôt que trente. Chaque jour porte son effectif d'échantillons, donc élargir à une normale centrée sur quinze jours s'écrit Σ(mean·samples) / Σ(samples) — exact, et sans seconde requête.

Deux conventions à connaître avant de comparer avec une autre source

Une année civile n'entre dans la série annuelle et dans la tendance que si l'archive en détient au moins 360 jours ; l'année en cours est donc exclue. Une demi-année se lit comme un effondrement des précipitations et entraîne une droite de tendance avec elle.

trends vaut null en dessous de dix années complètes. En deçà, une pente n'est que du bruit météorologique déguisé en signal climatique, et nous préférons ne rien publier plutôt qu'un chiffre faux énoncé avec assurance. Chaque tendance porte pour la même raison son propre p_value et son drapeau significant — lisez-les avant de citer la pente.

Normales OMM#

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

Une moyenne trentenaire sur une période de référence OMM.

Paramètres

ParamètreTypeDéfautDescription
latfloatObligatoire.
lonfloatObligatoire.
periodstring1991-20201991-2020 ou 1961-1990. Ce sont deux périodes de référence OMM.
fieldscsvtempérature et précipitations
dailyboolfalseInclure les 366 normales par jour avec leurs dispersions, ainsi que le record de chaud et de froid de chaque jour de l'année.

Une normale n'est pas la moyenne de la période que vous avez demandée. C'est une moyenne trentenaire sur une fenêtre fixée par l'Organisation météorologique mondiale, afin que deux personnes qui citent une normale citent la même chose.

Ceci exige le scope normals, que l'archive quotidienne n'exige pas. Une clé qui lit /v1/climate/daily sans encombre peut malgré tout obtenir un 403 scope_denied ici — voir Formules pour savoir quel palier l'inclut.

Si ce que vous voulez est « la normale sur tout l'enregistrement » plutôt que sur une fenêtre OMM, utilisez plutôt /v1/climate/summary — il ne demande que le scope climate et vous donne quatre-vingt-sept ans au lieu de trente.

Comparer deux normales#

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

Les deux périodes OMM et l'écart entre elles, en un seul appel.

C'est la question que la plupart des gens posent réellement quand ils demandent une normale — non pas « qu'est-ce qui est normal ici » mais « de combien la normale a-t-elle bougé ».

Y répondre en une seule requête garantit que les deux moitiés ne peuvent pas provenir de runs différents, ce qui est précisément le défaut du calcul fait soi-même à partir de deux appels : l'archive avance entre les deux, et l'écart que vous publiez contient alors un changement de version en plus d'un changement climatique.

Couverture, champs et mailles#

GEThttps://api.climatememory.com/v1/climate/coverageaucune clé nécessaire1 crédit

Le run servi et les dates qu'il couvre. Aucune clé nécessaire.

GEThttps://api.climatememory.com/v1/climate/fieldsaucune clé nécessaire1 crédit

Ce que ce run sait répondre, avec les unités, et quels champs sont dérivés. Aucune clé nécessaire.

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

Quelle maille répond pour un point, et à quelle distance.

GEThttps://api.climatememory.com/v1/climate/licensingaucune clé nécessaire0 crédits

Les conditions de licence de cette archive. Aucune clé nécessaire.

cells/resolve répond à la question qu'il faudrait poser à tout produit sur grille avant de lui faire confiance : quelle maille suis-je en train de lire, au juste, et à quelle distance est-elle du point que j'ai demandé ? À 28 km, cette distance peut atteindre 20 km, et la connaître fait la différence entre citer un chiffre et le citer de façon responsable.

fields offre le même contrat que /v1/historical/variables : il énumère ce que le run détient plutôt que ce que le produit détiendra peut-être un jour, de sorte qu'un client bâti dessus ne casse pas quand l'archive s'étend.

Épinglez la maille plutôt que la coordonnée quand une base de référence doit rester comparable d'une année sur l'autre. Une coordonnée est stable, mais la maille qui la sert bougerait si la grille venait à changer — et une base de référence qui bouge en silence est exactement le défaut que cet endpoint existe pour empêcher. L'API des degrés-jours suit le même schéma, avec un chemin dédié : voir épingler une maille.