Klima-API
Siebenundachtzig Jahre Tagesklima, überall an Land, aus einem einzigen Archiv — vom 1. Januar 1940 bis auf eine Woche an heute heran, auf dem ERA5-Gitter mit 0,25° (etwa 28 km). Beantwortet ist das normal?, mit Belegen.
Tagesklima#
climate2 Credits, +1 je vollständigem Zeitraum von 365,25 Tagen in der SpanneDreizehn Tagesfelder für jede Landkoordinate, von 1940 bis zur vergangenen Woche.
Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
lat | float | — | Erforderlich. Jede Koordinate an Land; das Archiv ist weltweit. |
lon | float | — | Erforderlich. |
start | ISO date | 1. Januar des Endjahres | Die Spanne ist je Anfrage begrenzt — siehe Tarife. |
end | ISO date | letzter Tag des Archivs | |
fields | csv | Temperatur und Niederschlag | Fragen Sie /v1/climate/fields, worauf dieser Lauf antworten kann. |
series | bool | true | Die Werte Tag für Tag mitliefern. Auf false setzen, wenn Sie nur die Aggregate brauchen. |
format | string | json | json oder csv. CSV ist den bezahlten Tarifen vorbehalten und liefert die Monatszeilen. |
Das ist nicht die stündliche
Historie mit einem GROUP BY davor. Die Tagesfelder werden ein
einziges Mal abgeleitet, bei der Aufnahme, an einer Tagesgrenze, die nach der
Physik und nicht nach der Bequemlichkeit gewählt ist, und die abgeleiteten
Felder — gefühlte Temperatur, Sonnenscheindauer, mittlere Luftfeuchte — werden
aus der vollständigen Stundenreihe berechnet und nicht aus den Tagesextremen.
Die Tage werden an der wahren Mitternacht geschnitten, nicht
an der politischen Zeitzone. Der Versatz beträgt
round(longitude / 15).
Das ist eine bewusste Entscheidung, und sie ist messbar: eine Aggregation auf UTC verzerrt das Tagesminimum in Alice Springs um 2,1 °C, weil das Minimum kurz vor Sonnenaufgang fällt. Eine politische Zeitzone wäre noch schlechter — zwei benachbarte Zellen beiderseits einer Grenze bekämen ihre Tage zu unterschiedlichen Zeitpunkten geschnitten, und eine Karte der Tagesmaxima würde den Umriss der Zeitzonen zeigen.
Die Werte gehören der Gitterzelle, nicht dem Punkt. Wir passen die Temperatur nicht an Ihre exakte Höhe an. Anbieter, die das tun, weichen an derselben Koordinate deshalb um einige Zehntelgrad von uns ab — in unseren eigenen Messungen bis zu 0,4 °C — und keiner der beiden Werte ist falsch. Unserer ist das, was die Reanalyse für diese Zelle sagt; ihrer ist derselbe Wert plus ein auf einen Höhenunterschied angewandter Temperaturgradient. Wir veröffentlichen die Zelle, damit Sie erkennen können, was Sie bekommen: siehe Abdeckung und Zellen.
Monatsaggregate#
climate2 Credits, +1 je vollständigem Zeitraum von 365,25 Tagen in der SpanneDieselben Felder, nach Kalendermonat aggregiert.
Summen für die Kumulate, Mittel und Extreme für den Rest. Gleicher Preis wie die Tagesreihe, denn gelesen wird dieselbe Spalte.
Fragen Sie sie an, wenn Sie tatsächlich einen Monatswert darstellen, statt das Dreißigfache an Daten zu holen und selbst zu reduzieren — langsam ist die Übertragung, nicht die Rechnung.
Das Klima eines Ortes, in einem Aufruf#
climate3 Credits, +1 je vollständigem Zeitraum von 365,25 Tagen in der SpanneMonatsnormalwerte, Jahresreihe, Rekorde, Trends und Köppen — ohne Begrenzung der Spanne.
Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
lat | float | — | Erforderlich. |
lon | float | — | Erforderlich. |
start | ISO date | erster Tag des Archivs | Den gesamten Datensatz anzufragen ist die normale Verwendung. |
end | ISO date | letzter Tag des Archivs | |
daily | bool | false | Ergänzt day_normals: den Normalwert jedes Tages des Jahres über Ihr Fenster, mit der Zahl der Beobachtungen hinter jedem einzelnen. |
Alles, was eine Klimaseite über einen Ort aussagt, bereits reduziert: zwölf Monatsnormalwerte, eine Zeile je vollständigem Kalenderjahr, die Allzeitrekorde mit den Daten, an denen sie fielen, der Kleinste-Quadrate-Erwärmungstrend samt Signifikanz und der Köppen-Geiger-Code. Für jede Landkoordinate der Erde.
Der Preis richtet sich nach der Spanne, und die Standardspanne ist
das gesamte Archiv. Bepreist mit
3 Credits, +1 je vollständigem Zeitraum von 365,25 Tagen in der Spanne — ein Aufruf ohne start
umfasst also 1940 bis heute und kostet
89 Credits, nicht einen. Im kostenlosen
Tarif sind das etwa 110 Aufrufe im Monat.
Das ist immer noch der günstige Weg zu dieser Antwort: sie selbst zusammenzusetzen erforderte neun begrenzte Aufrufe von /v1/climate/daily über dieselbe Spanne, die zusammen mehr kosten und einunddreißigtausend Zeilen zurückgeben, die Sie dann noch reduzieren müssen. Aber es ist keine einfache Abfrage, und eine Seite, die ihn je Besucher aufruft, leert ein Kontingent. Legen Sie die Antwort in den Cache — für eine Koordinate ändert sie sich höchstens einmal am Tag.
Übergeben Sie start, wenn Sie nicht den ganzen Datensatz
brauchen: dreißig Jahre kosten 32 statt
89.
Hier gibt es keine Begrenzung der Spanne, anders als bei
/v1/climate/daily. Jene Grenze besteht, weil ein
Aufrufer, der die Reihe Tag für Tag ziehen kann, das Archiv nachbauen kann;
dieser Endpunkt gibt überhaupt keine Reihe zurück. Der vollständige Datensatz
kommt mit etwa 62 kB zurück — 100 kB mit daily=true — gegenüber den
einunddreißigtausend Tageszeilen, aus denen er reduziert wurde: er rekonstruiert
also nichts. Eine Anfrage ersetzt die neun begrenzten Tagesaufrufe, die dieselbe
Antwort sonst kosten würde.
daily=true ist nicht dasselbe wie
normals?daily=true
Und genau darin liegt der Unterschied. Der Normalwert-Endpunkt mittelt über ein dreißigjähriges WMO-Fenster; dieser mittelt über das Fenster, das Sie angefragt haben — standardmäßig das ganze Archiv.
Nur so lässt sich „9,4 °C über dem Normalwert für einen 30. Juli“
sagen, mit siebenundachtzig Jahren statt dreißig hinter der Aussage. Jeder Tag
trägt seine Stichprobenzahl, sodass die Erweiterung auf einen zentrierten
Fünfzehn-Tage-Normalwert
Σ(mean·samples) / Σ(samples) lautet — exakt, und ohne zweite
Anfrage.
Zwei Konventionen, die Sie vor einem Vergleich mit anderen Quellen kennen sollten
Ein Kalenderjahr geht nur dann in die Jahresreihe und den Trend ein, wenn das Archiv mindestens 360 seiner Tage enthält; das laufende Jahr ist damit ausgeschlossen. Ein halbes Jahr liest sich wie ein Einbruch des Niederschlags und zieht eine Trendgerade mit sich.
trends ist unterhalb von zehn vollständigen Jahren
null. Darunter ist eine Steigung nur Wetterrauschen im Gewand eines
Klimasignals, und wir veröffentlichen lieber nichts als eine selbstbewusst
falsche Zahl. Aus demselben Grund trägt jeder Trend seinen eigenen
p_value und sein significant-Flag — lesen Sie beide,
bevor Sie die Steigung zitieren.
WMO-Normalwerte#
normals3 CreditsEin dreißigjähriges Mittel über einen WMO-Referenzzeitraum.
Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
lat | float | — | Erforderlich. |
lon | float | — | Erforderlich. |
period | string | 1991-2020 | 1991-2020 oder 1961-1990. Beides sind WMO-Referenzzeiträume. |
fields | csv | Temperatur und Niederschlag | |
daily | bool | false | Die 366 Tagesnormalwerte mit ihren Streuungen sowie den Höchst- und Tiefstrekord jedes Kalendertages mitliefern. |
Ein Normalwert ist nicht der Mittelwert irgendeines Zeitraums, den Sie zufällig angefragt haben. Er ist ein dreißigjähriges Mittel über ein Fenster, das die Weltorganisation für Meteorologie festlegt, damit zwei Menschen, die einen Normalwert zitieren, dasselbe zitieren.
Dies erfordert den Scope normals, den
das Tagesarchiv nicht verlangt. Ein Schlüssel, der
/v1/climate/daily problemlos liest, kann hier dennoch ein
403 scope_denied bekommen — unter Tarife steht,
welche Stufe ihn enthält.
Wenn Sie „den Normalwert über den gesamten Datensatz“ statt über ein
WMO-Fenster wollen, verwenden Sie
/v1/climate/summary — er braucht nur den Scope
climate und gibt Ihnen siebenundachtzig statt dreißig Jahre.
Zwei Normalwerte vergleichen#
normals6 CreditsBeide WMO-Zeiträume und die Veränderung dazwischen, in einem Aufruf.
Das ist die Frage, die die meisten eigentlich stellen, wenn sie nach einem Normalwert fragen — nicht „was ist hier normal“, sondern „wie weit hat sich das Normale verschoben“.
Sie in einer einzigen Anfrage zu beantworten stellt sicher, dass die beiden Hälften nicht aus verschiedenen Läufen stammen können — genau das ist die Schwachstelle, wenn man es selbst aus zwei Aufrufen berechnet: das Archiv rückt dazwischen vor, und der Unterschied, den Sie veröffentlichen, enthält dann neben einer Klimaänderung auch einen Versionswechsel.
Abdeckung, Felder und Zellen#
Der ausgelieferte Lauf und die Daten, die er umfasst. Kein Schlüssel nötig.
Worauf dieser Lauf antworten kann, mit Einheiten, und welche Felder abgeleitet sind. Kein Schlüssel nötig.
climate1 CreditWelche Zelle für einen Punkt antwortet und wie weit sie entfernt ist.
Die Lizenzbedingungen dieses Archivs. Kein Schlüssel nötig.
cells/resolve beantwortet die Frage, die man jedem
Gitterprodukt stellen sollte, bevor man ihm traut: welche Zelle lese ich
eigentlich, und wie weit ist sie von dem Punkt entfernt, nach dem ich gefragt
habe? Bei 28 km kann dieser Abstand 20 km betragen, und ihn zu kennen ist
der Unterschied zwischen einer Zahl zitieren und eine Zahl verantwortungsvoll
zitieren.
fields bietet denselben Vertrag wie
/v1/historical/variables: es listet auf, was der
Lauf enthält, und nicht, was das Produkt eines Tages enthalten könnte, sodass
ein darauf gebauter Client nicht bricht, wenn das Archiv wächst.
Fixieren Sie die Zelle statt der Koordinate, wenn eine Basislinie über Jahre vergleichbar bleiben muss. Eine Koordinate ist stabil, aber die Zelle, die sie bedient, würde sich verschieben, wenn sich das Gitter je änderte — und eine Basislinie, die sich stillschweigend verschiebt, ist genau der Fehler, den dieser Endpunkt verhindern soll. Die Gradtag-API folgt demselben Muster, mit einem eigenen Pfad: siehe eine Zelle fixieren.