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#
climate2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangTiga belas field harian untuk koordinat daratan mana pun, dari 1940 sampai pekan lalu.
Parameter
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
lat | float | — | Wajib. Koordinat mana pun di daratan; arsipnya global. |
lon | float | — | Wajib. |
start | ISO date | 1 Januari tahun akhir | Rentangnya dibatasi per permintaan — lihat Paket. |
end | ISO date | hari terakhir arsip | |
fields | csv | suhu dan curah hujan | Tanyakan ke /v1/climate/fields apa yang bisa dijawab run ini. |
series | bool | true | Sertakan nilai hari demi hari. Setel false bila Anda hanya ingin agregatnya. |
format | string | json | json 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#
climate2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangField 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#
climate3 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangNormal bulanan, deret tahunan, rekor, tren, dan Köppen — tanpa batas rentang.
Parameter
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
lat | float | — | Wajib. |
lon | float | — | Wajib. |
start | ISO date | hari pertama arsip | Meminta seluruh rekaman adalah cara normal memakai endpoint ini. |
end | ISO date | hari terakhir arsip | |
daily | bool | false | Menambahkan 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#
normals3 kreditRata-rata tiga puluh tahun pada periode acuan WMO.
Parameter
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
lat | float | — | Wajib. |
lon | float | — | Wajib. |
period | string | 1991-2020 | 1991-2020 atau 1961-1990. Keduanya periode acuan WMO. |
fields | csv | suhu dan curah hujan | |
daily | bool | false | Sertakan 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#
normals6 kreditKedua 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#
Run yang sedang dilayani dan rentang tanggalnya. Tanpa kunci.
Apa yang bisa dijawab run ini, dengan satuan, dan field mana yang diturunkan. Tanpa kunci.
climate1 kreditSel mana yang menjawab untuk sebuah titik, dan seberapa jauh letaknya.
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.