climatememory ontwikkelaars

API-referentie

Klimaat-API

Zevenentachtig jaar dagelijks klimaat, overal op het land, uit één archief — van 1 januari 1940 tot binnen een week van vandaag, op het ERA5-raster met 0,25° (ongeveer 28 km). Beantwoordt is dit normaal?, met het bewijs erbij.

Dagelijks klimaat#

GEThttps://api.climatememory.com/v1/climate/dailyscope: climate2 credits, +1 per volledige periode van 365,25 dagen in het bereik

Dertien dagvelden voor elke landcoördinaat, van 1940 tot vorige week.

Parameters

ParameterTypeStandaardBeschrijving
latfloatVerplicht. Elke coördinaat op het land; het archief is wereldwijd.
lonfloatVerplicht.
startISO date1 januari van het eindjaarHet bereik is per verzoek begrensd — zie Abonnementen.
endISO datelaatste dag van het archief
fieldscsvtemperatuur en neerslagVraag aan /v1/climate/fields waarop deze run antwoord kan geven.
seriesbooltrueDe waarden dag voor dag meesturen. Zet dit op false wanneer u alleen de aggregaten nodig hebt.
formatstringjsonjson of csv. CSV is voorbehouden aan de betaalde abonnementen en levert de maandrijen.

Dit is niet de uurlijkse historie met een GROUP BY ervoor. De dagvelden worden één keer afgeleid, bij de inname, op een daggrens die om fysische redenen is gekozen en niet uit gemak, en de afgeleide velden — gevoelstemperatuur, zonneschijnduur, gemiddelde luchtvochtigheid — worden berekend uit de volledige uurreeks en niet uit de dagextremen.

Dagen worden op de ware middernacht afgesneden, niet op de politieke tijdzone. De verschuiving is round(longitude / 15).

Dat is een bewuste keuze en ze is meetbaar: aggregeren op UTC vertekent het dagminimum in Alice Springs met 2,1 °C, omdat het minimum vlak voor zonsopgang valt. Een politieke tijdzone zou nog erger zijn — twee naburige cellen aan weerszijden van een grens zouden hun dagen op verschillende momenten afgesneden krijgen, en een kaart van dagmaxima zou de omtrek van de tijdzones tekenen.

De waarden zijn die van de rastercel, niet die van het punt. Wij passen de temperatuur niet aan uw exacte hoogte aan. Aanbieders die dat wel doen wijken op dezelfde coördinaat dus enkele tienden van een graad van ons af — tot 0,4 °C in onze eigen metingen — en geen van beide cijfers is verkeerd. Het onze is wat de heranalyse over die cel zegt; het hunne is diezelfde waarde plus een temperatuurgradiënt toegepast op een hoogteverschil. Wij publiceren de cel zodat u weet wat u krijgt: zie dekking en cellen.

Maandaggregaten#

GEThttps://api.climatememory.com/v1/climate/monthlyscope: climate2 credits, +1 per volledige periode van 365,25 dagen in het bereik

Dezelfde velden, geaggregeerd per kalendermaand.

Sommen voor de cumulatieven, gemiddelden en extremen voor de rest. Dezelfde prijs als de dagreeks, omdat dezelfde kolom wordt gelezen.

Vraag ze aan wanneer een maandcijfer is wat u werkelijk uitzet, in plaats van dertig keer zoveel data op te halen en die zelf te reduceren — traag is de overdracht, niet de rekenkunde.

Het klimaat van een plaats, in één aanroep#

GEThttps://api.climatememory.com/v1/climate/summaryscope: climate3 credits, +1 per volledige periode van 365,25 dagen in het bereik

Maandnormalen, jaarreeks, records, trends en Köppen — zonder bereiklimiet.

Parameters

ParameterTypeStandaardBeschrijving
latfloatVerplicht.
lonfloatVerplicht.
startISO dateeerste dag van het archiefDe hele reeks opvragen is het normale gebruik hiervan.
endISO datelaatste dag van het archief
dailyboolfalseVoegt day_normals toe: de normaal van elke dag van het jaar over uw venster, met het aantal waarnemingen achter elk ervan.

Alles wat een klimaatpagina over een locatie beweert, al gereduceerd: twaalf maandnormalen, één rij per volledig kalenderjaar, de allertijdenrecords met de data waarop ze vielen, de kleinste-kwadraten-opwarmingstrend met de significantie ervan, en de Köppen-Geiger-code. Voor elke landcoördinaat op aarde.

De prijs hangt af van het bereik, en het standaardbereik is het hele archief. Geprijsd op 3 credits, +1 per volledige periode van 365,25 dagen in het bereik — een aanroep zonder start beslaat dus 1940 tot vandaag en kost 89 credits, niet één. Op het gratis abonnement zijn dat ongeveer 110 aanroepen per maand.

Het blijft de goedkope manier om dit antwoord te krijgen: het zelf samenstellen zou negen begrensde aanroepen van /v1/climate/daily over hetzelfde bereik vergen, die samen meer kosten en eenendertigduizend rijen teruggeven die u daarna nog moet reduceren. Maar het is geen simpele opzoeking, en een pagina die het per bezoeker aanroept zal een quotum leegtrekken. Zet het in de cache — voor een coördinaat verandert het antwoord hooguit eens per dag.

Geef start mee wanneer u niet de hele reeks nodig hebt: dertig jaar kost 32 in plaats van 89.

Hier geldt geen bereiklimiet, anders dan bij /v1/climate/daily. Die limiet bestaat omdat wie de reeks dag voor dag kan ophalen het archief kan nabouwen; dit endpoint geeft helemaal geen reeks terug. De volledige reeks komt terug in ongeveer 62 kB — 100 kB met daily=true — tegenover de eenendertigduizend dagrijen waaruit ze gereduceerd is: ze reconstrueert dus niets. Eén verzoek vervangt de negen begrensde dagaanroepen die hetzelfde antwoord anders zou kosten.

daily=true is niet hetzelfde als normals?daily=true

En daar zit het verschil. Het normalen-endpoint middelt over een WMO-venster van dertig jaar; dit middelt over het venster dat u hebt gevraagd — standaard het hele archief.

Het is de enige manier om „9,4 °C boven normaal voor een 30 juli” te zeggen met zevenentachtig jaar achter die bewering in plaats van dertig. Elke dag draagt zijn aantal waarnemingen mee, zodat verbreden naar een gecentreerde vijftiendaagse normaal neerkomt op Σ(mean·samples) / Σ(samples) — exact, en zonder een tweede verzoek.

Twee conventies om te kennen voordat u met een andere bron vergelijkt

Een kalenderjaar komt alleen in de jaarreeks en in de trend terecht als het archief er minstens 360 dagen van bevat; het lopende jaar valt dus af. Een half jaar leest als een instorting van de neerslag en trekt een trendlijn met zich mee.

trends is null onder de tien volledige jaren. Daaronder is een helling weerruis in de kleren van een klimaatsignaal, en wij publiceren liever niets dan een zelfverzekerd verkeerd getal. Om dezelfde reden draagt elke trend zijn eigen p_value en significant-vlag — lees die voordat u de helling citeert.

WMO-normalen#

GEThttps://api.climatememory.com/v1/climate/normalsscope: normals3 credits

Een dertigjarig gemiddelde over een WMO-referentieperiode.

Parameters

ParameterTypeStandaardBeschrijving
latfloatVerplicht.
lonfloatVerplicht.
periodstring1991-20201991-2020 of 1961-1990. Beide zijn WMO-referentieperioden.
fieldscsvtemperatuur en neerslag
dailyboolfalseDe 366 dagnormalen met hun spreidingen meesturen, plus het warmte- en kouderecord van elke dag van het jaar.

Een normaal is niet het gemiddelde van de periode die u toevallig hebt opgevraagd. Het is een dertigjarig gemiddelde over een venster dat de Wereld Meteorologische Organisatie vastlegt, zodat twee mensen die een normaal citeren hetzelfde citeren.

Dit vereist de scope normals, die het dagarchief niet vereist. Een sleutel die /v1/climate/daily probleemloos leest, kan hier toch een 403 scope_denied krijgen — zie Abonnementen voor welk niveau hem bevat.

Als u „de normaal over de hele reeks” wilt in plaats van over een WMO-venster, gebruik dan /v1/climate/summary — die vraagt alleen de scope climate en geeft u zevenentachtig jaar in plaats van dertig.

Twee normalen vergelijken#

GEThttps://api.climatememory.com/v1/climate/normals/comparescope: normals6 credits

Beide WMO-perioden en het verschil ertussen, in één aanroep.

Dit is de vraag die de meeste mensen eigenlijk stellen wanneer ze om een normaal vragen — niet „wat is hier normaal” maar „hoeveel is het normale verschoven”.

Die in één verzoek beantwoorden garandeert dat de twee helften niet uit verschillende runs kunnen komen, en dat is precies de zwakte van het zelf berekenen uit twee aanroepen: het archief schuift er tussendoor op, en het verschil dat u publiceert bevat dan een versiewissel bovenop een klimaatverandering.

Dekking, velden en cellen#

GEThttps://api.climatememory.com/v1/climate/coveragegeen sleutel nodig1 credit

De geleverde run en de data die hij beslaat. Geen sleutel nodig.

GEThttps://api.climatememory.com/v1/climate/fieldsgeen sleutel nodig1 credit

Waarop deze run antwoord kan geven, met eenheden, en welke velden afgeleid zijn. Geen sleutel nodig.

GEThttps://api.climatememory.com/v1/climate/cells/resolvescope: climate1 credit

Welke cel voor een punt antwoordt, en hoe ver die weg ligt.

GEThttps://api.climatememory.com/v1/climate/licensinggeen sleutel nodig0 credits

De licentievoorwaarden van dit archief. Geen sleutel nodig.

cells/resolve beantwoordt de vraag die elk rasterproduct gesteld zou moeten worden voordat men het vertrouwt: welke cel lees ik eigenlijk, en hoe ver ligt die van het punt waar ik naar vroeg? Bij 28 km kan die afstand 20 km bedragen, en dat weten is het verschil tussen een getal citeren en het verantwoord citeren.

fields biedt hetzelfde contract als /v1/historical/variables: het somt op wat de run bevat en niet wat het product ooit zou kunnen bevatten, zodat een client die erop gebouwd is niet breekt wanneer het archief groeit.

Zet de cel vast in plaats van de coördinaat wanneer een basislijn over de jaren vergelijkbaar moet blijven. Een coördinaat is stabiel, maar de cel die hem bedient zou verschuiven als het raster ooit verandert — en een basislijn die stilletjes verschuift is precies het gebrek dat dit endpoint moet voorkomen. De graaddagen-API volgt hetzelfde patroon, met een eigen pad: zie een cel vastzetten.