climatememory pengembang

Referensi API

API Iklim

Delapan puluh tujuh tahun iklim harian, di seluruh daratan, dari satu arsip — 1 Januari 1940 sampai kurang dari sepekan lalu, pada grid ERA5 beresolusi 0,25° (sekitar 28 km). Menjawab apakah ini normal?, lengkap dengan buktinya.

Iklim harian#

GEThttps://api.climatememory.com/v1/climate/dailyscope: climate2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentang

Tiga belas field harian untuk koordinat daratan mana pun, dari 1940 sampai pekan lalu.

Parameter

ParameterTipeBawaanDeskripsi
latfloatWajib. Koordinat mana pun di daratan; arsipnya global.
lonfloatWajib.
startISO date1 Januari tahun akhirRentangnya dibatasi per permintaan — lihat Paket.
endISO datehari terakhir arsip
fieldscsvsuhu dan curah hujanTanyakan ke /v1/climate/fields apa yang bisa dijawab run ini.
seriesbooltrueSertakan nilai hari demi hari. Setel false bila Anda hanya ingin agregatnya.
formatstringjsonjson atau csv. CSV adalah fitur paket berbayar dan mengembalikan baris bulanan.

Ini bukan riwayat per jam yang diberi GROUP BY di depannya. Field harian diturunkan sekali saja, saat pencernaan data, pada batas hari yang dipilih demi fisika alih-alih demi kepraktisan, dan field turunan — suhu terasa, lama penyinaran matahari, kelembapan rata-rata — dihitung dari deret per jam yang utuh, bukan dari nilai ekstrem harian.

Hari dipotong pada tengah malam matahari, bukan pada zona waktu politis. Offsetnya adalah round(longitude / 15).

Ini pilihan yang disengaja dan bisa diukur: mengagregasi pada UTC menggeser suhu minimum harian sebesar 2,1 °C di Alice Springs, karena minimumnya jatuh tepat sebelum fajar. Zona waktu politis lebih buruk lagi — dua sel bertetangga di kedua sisi sebuah batas akan dipotong harinya pada saat yang berbeda, dan peta suhu maksimum harian akan menggambar garis batas zona waktu.

Nilainya milik sel grid, bukan milik titik. Kami tidak menyesuaikan suhu ke ketinggian persis lokasi Anda. Penyedia yang melakukannya karenanya akan berbeda dari kami beberapa persepuluh derajat pada koordinat yang sama — sampai 0,4 °C dalam pengukuran kami sendiri — dan tidak ada angka yang salah di antara keduanya. Angka kami adalah apa yang dikatakan reanalisis untuk sel itu; angka mereka adalah nilai tersebut ditambah lapse rate yang diterapkan pada selisih ketinggian. Kami menerbitkan selnya agar Anda tahu yang mana yang Anda dapat: lihat cakupan dan sel.

Agregat bulanan#

GEThttps://api.climatememory.com/v1/climate/monthlyscope: climate2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentang

Field yang sama, diagregasi per bulan kalender.

Jumlah untuk besaran akumulatif, rata-rata dan nilai ekstrem untuk sisanya. Harganya sama dengan deret harian, karena membaca kolom yang sama.

Mintalah ini bila yang benar-benar Anda gambar adalah angka bulanan, alih-alih mengambil tiga puluh kali lipat datanya lalu meringkasnya sendiri — yang lambat adalah transfernya, bukan aritmetikanya.

Iklim sebuah tempat, dalam satu panggilan#

GEThttps://api.climatememory.com/v1/climate/summaryscope: climate3 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentang

Normal bulanan, deret tahunan, rekor, tren, dan Köppen — tanpa batas rentang.

Parameter

ParameterTipeBawaanDeskripsi
latfloatWajib.
lonfloatWajib.
startISO datehari pertama arsipMeminta seluruh rekaman adalah cara normal memakai endpoint ini.
endISO datehari terakhir arsip
dailyboolfalseMenambahkan day_normals: normal setiap hari kalender dalam setahun pada jendela Anda, beserta jumlah pengamatan di balik masing-masing.

Semua yang dinyatakan sebuah halaman iklim tentang suatu lokasi, sudah diringkas: dua belas normal bulanan, satu baris per tahun kalender penuh, rekor sepanjang masa beserta tanggal terjadinya, tren pemanasan kuadrat terkecil beserta signifikansinya, dan kode Köppen-Geiger. Untuk koordinat daratan mana pun di Bumi.

Harganya mengikuti rentang, dan rentang bawaannya adalah seluruh arsip. Ditarifkan pada 3 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentang — jadi panggilan tanpa start mencakup 1940 sampai hari ini dan berbiaya 89 kredit, bukan satu. Pada paket gratis itu kira-kira 110 panggilan per bulan.

Itu pun tetap cara murah untuk mendapatkan jawaban ini: menyusunnya sendiri akan memerlukan sembilan panggilan berbatas ke /v1/climate/daily pada rentang yang sama, yang totalnya lebih mahal dan mengembalikan tiga puluh satu ribu baris yang masih harus Anda ringkas. Tetapi ini bukan sekadar pencarian, dan halaman yang memanggilnya untuk setiap pengunjung akan menguras kuota. Simpan di cache — jawaban untuk sebuah koordinat berubah paling banyak sekali sehari.

Kirim start bila Anda tidak butuh seluruh rekaman: tiga puluh tahun berbiaya 32 alih-alih 89.

Di sini tidak ada batas rentang, tidak seperti /v1/climate/daily. Batas itu ada karena pemanggil yang bisa menarik deret hari demi hari dapat membangun ulang arsipnya; endpoint ini sama sekali tidak mengembalikan deret. Rekaman lengkapnya kembali sekitar 62 kB — 100 kB dengan daily=true — dibanding tiga puluh satu ribu baris harian asalnya, jadi ia tidak membangun ulang apa pun. Satu permintaan menggantikan sembilan panggilan harian berbatas yang jika tidak akan dibutuhkan untuk jawaban yang sama.

daily=true tidak sama dengan normals?daily=true

Dan justru di situlah bedanya. Endpoint normal merata-ratakan pada jendela WMO tiga puluh tahun; yang ini merata-ratakan pada jendela yang Anda minta — seluruh arsip secara bawaan.

Inilah satu-satunya cara mengatakan "9,4 °C di atas normal untuk sebuah 30 Juli" dengan delapan puluh tujuh tahun di belakang pernyataan itu, bukan tiga puluh. Setiap hari membawa jumlah sampelnya, jadi memperlebar ke normal terpusat lima belas hari ditulis Σ(mean·samples) / Σ(samples) — persis, dan tanpa permintaan kedua.

Dua konvensi yang perlu diketahui sebelum membandingkan dengan sumber lain

Sebuah tahun kalender hanya masuk ke deret tahunan dan ke tren jika arsip memuat setidaknya 360 harinya, sehingga tahun berjalan dikecualikan. Setengah tahun terbaca sebagai anjloknya curah hujan dan menyeret garis tren bersamanya.

trends bernilai null di bawah sepuluh tahun penuh. Di bawah itu, sebuah kemiringan hanyalah derau cuaca yang berpakaian sinyal iklim, dan kami lebih suka tidak menerbitkan apa pun daripada menerbitkan angka keliru dengan percaya diri. Karena alasan yang sama setiap tren membawa p_value sendiri dan penanda significant — bacalah keduanya sebelum mengutip kemiringannya.

Normal WMO#

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

Rata-rata tiga puluh tahun pada periode acuan WMO.

Parameter

ParameterTipeBawaanDeskripsi
latfloatWajib.
lonfloatWajib.
periodstring1991-20201991-2020 atau 1961-1990. Keduanya periode acuan WMO.
fieldscsvsuhu dan curah hujan
dailyboolfalseSertakan 366 normal harian beserta sebarannya, serta rekor terpanas dan terdingin untuk setiap hari kalender.

Normal bukanlah rata-rata dari periode yang kebetulan Anda minta. Ia adalah rata-rata tiga puluh tahun pada jendela yang ditetapkan Organisasi Meteorologi Dunia, sehingga dua orang yang mengutip sebuah normal mengutip hal yang sama.

Ini memerlukan scope normals, yang tidak diperlukan arsip harian. Kunci yang membaca /v1/climate/daily dengan lancar tetap bisa mendapat 403 scope_denied di sini — lihat Paket untuk mengetahui tingkat mana yang menyertakannya.

Jika yang Anda inginkan adalah "normal atas seluruh rekaman" alih-alih atas jendela WMO, pakailah /v1/climate/summary — ia hanya butuh scope climate dan memberi Anda delapan puluh tujuh tahun alih-alih tiga puluh.

Membandingkan dua normal#

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

Kedua periode WMO beserta perubahannya, dalam satu panggilan.

Inilah pertanyaan yang sebenarnya diajukan kebanyakan orang ketika mereka meminta sebuah normal — bukan "apa yang normal di sini" melainkan "seberapa jauh yang normal itu bergeser".

Menjawabnya dalam satu permintaan berarti kedua paruhnya tidak mungkin berasal dari run yang berbeda, dan itulah mode kegagalan menghitungnya sendiri dari dua panggilan: arsipnya maju di antara keduanya, dan selisih yang Anda terbitkan lalu memuat perubahan versi selain perubahan iklim.

Cakupan, field, dan sel#

GEThttps://api.climatememory.com/v1/climate/coveragetanpa kunci1 kredit

Run yang sedang dilayani dan rentang tanggalnya. Tanpa kunci.

GEThttps://api.climatememory.com/v1/climate/fieldstanpa kunci1 kredit

Apa yang bisa dijawab run ini, dengan satuan, dan field mana yang diturunkan. Tanpa kunci.

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

Sel mana yang menjawab untuk sebuah titik, dan seberapa jauh letaknya.

GEThttps://api.climatememory.com/v1/climate/licensingtanpa kunci0 kredit

Ketentuan lisensi untuk arsip ini. Tanpa kunci.

cells/resolve menjawab pertanyaan yang seharusnya diajukan kepada setiap produk bergrid sebelum ia dipercaya: sel mana yang sebenarnya saya baca, dan seberapa jauh sel itu dari titik yang saya tanyakan? Pada 28 km jarak itu bisa mencapai 20 km, dan mengetahuinya adalah beda antara mengutip sebuah angka dan mengutipnya dengan bertanggung jawab.

fields punya kontrak yang sama dengan /v1/historical/variables: ia menampilkan apa yang dimuat run, bukan apa yang mungkin suatu hari dimuat produknya, sehingga klien yang dibangun berdasarkan itu tidak rusak ketika arsipnya bertambah.

Sematkan selnya, bukan koordinatnya, bila sebuah baseline harus tetap bisa dibandingkan selama bertahun-tahun. Koordinat itu stabil, tetapi sel yang melayaninya akan bergeser jika gridnya berubah — dan baseline yang bergeser diam-diam adalah mode kegagalan yang justru ingin dicegah endpoint ini. API derajat-hari punya pola yang sama, dengan jalur khusus: lihat menyematkan sel.