API Derajat-Hari
Derajat-hari pemanasan dan pendinginan dari reanalisis per jam ERA5-Land, mundur sampai 1950, di mana saja di daratan — termasuk tempat yang tidak punya stasiun cuaca dalam radius 60 km. Satu scope — dju — mencakup seluruh halaman ini.
Derajat-hari#
dju2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangDerajat-hari pemanasan dan pendinginan untuk sebuah koordinat.
Parameter
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
lat | float | — | Wajib. |
lon | float | — | Wajib. |
base | number | preset | csv | 18 | Suhu basis berapa pun dalam °C, atau sebuah praatur: uk (15,5), ashrae (18,333), iso, france, eurostat. Sampai 60 nilai dipisah koma, tanpa biaya tambahan — lihat di bawah. |
method | string | hourly | hourly, costic, mean, atau eurostat. Kontrak Andalah yang menentukan ini, bukan kami. |
start | ISO date | 1 Januari tahun akhir | Maksimum 10 tahun per permintaan. |
end | ISO date | hari ini | |
type | string | both | HDD, CDD, atau both. |
breakdown | string | monthly | daily, weekly, monthly, atau yearly. |
elevation | float (m) | — | Ketinggian tanah sebenarnya dari lokasi Anda. Menggeser deret dari ketinggian sel ke ketinggian Anda — lihat di bawah. |
format | string | json | json atau csv. CSV adalah fitur paket berbayar. |
{
"location": {
"latitude": 36.75, "longitude": 3.06,
"grid_cell": { "latitude": 36.7, "longitude": 3.1,
"distance_km": 6.61, "resolution_km": 9 }
},
"parameters": {
"base_temperature_c": 18.0, "method": "hourly",
"start": "2025-07-01", "end": "2026-06-30"
},
"totals": { "hdd": 781.86, "cdd": 1331.61 },
"quality": {
"days": 365, "coverage": 1.0,
"missing_hours": 0, "provisional_days": 0
},
"breakdown": [ { "year": 2025, "month": 7, "hdd": 0.0, "cdd": 289.4, "days": 31 } ]
}
Blok quality bukan hiasan.
coverage di bawah 1,0 berarti ada jam yang hilang dari arsip.
provisional_days menghitung hari yang diisi dari prakiraan alih-alih
dari reanalisis final, karena ERA5-Land terbit dengan jeda sekitar lima hari.
Jika Anda menyelesaikan sebuah kontrak berdasarkan angka-angka ini, periksa
keduanya. Total yang dihitung atas cakupan 0,98 tidak salah, tetapi ia bukan
klaim yang sama dengan total atas 1,0 — dan selisihnya tidak terlihat di
totals.
Apa itu derajat-hari, dalam satu paragraf
Satu derajat-hari pemanasan mengukur seberapa jauh udara luar berada di bawah
suhu basis, dan selama berapa lama. Pada basis 18 °C, satu jam pada 16 °C
menyumbang (18 − 16) / 24 = 0.083 HDD. Jumlahkan jam-jamnya dan
Anda mendapat angka yang sebanding dengan energi yang dibutuhkan sebuah
bangunan. Derajat-hari pendinginan adalah cerminannya: seberapa jauh
di atas basis. Inilah cara baku membandingkan satu musim pemanasan
dengan musim lainnya setelah faktor cuaca dikeluarkan dari perbandingan.
Banyak basis, satu permintaan, satu harga#
djusame as one baseSampai 60 suhu basis dalam satu panggilan, dengan harga satu.
Membaca dan mendekode deret per jam adalah seluruh biaya sebuah jawaban derajat-hari. Begitu larik itu ada di memori, basis tambahan hanyalah pengurangan di atasnya, jadi meminta enam puluh basis berbiaya sama dengan meminta satu.
Respons mendapat tambahan larik by_base yang membawa semua basis
sesuai urutan yang Anda sebutkan. totals dan breakdown
tetap menggambarkan basis pertama, sehingga kode yang ditulis sebelum
fitur ini ada tetap berjalan tanpa perubahan.
"by_base": [
{"base": 15.0, "hdd": 402.11, "cdd": 1731.4},
{"base": 15.5, "hdd": 431.02, "cdd": 1706.3},
{"base": 18.0, "hdd": 781.86, "cdd": 1331.6}
]
Berguna ketika Anda belum tahu basis mana yang mereproduksi angka sebuah kontrak, atau ketika bangunan yang sama diselesaikan pada basis berbeda oleh pihak berbeda — pemilik gedung memakai 15,5 dan pemasok energi memakai 18, keduanya benar, dan ini mengembalikan keduanya dalam satu panggilan.
Metode perhitungan#
dju2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangKeempat metode atas periode yang sama, berdampingan.
Definisi metode beserta praaturnya. Tanpa kunci.
Metode dijadikan parameter karena kontrak Andalah yang menentukannya, bukan kami. Data sama, basis sama, tahun sama, di Aljir:
| Metode | HDD 18 °C | CDD 18 °C | Kapan dipakai |
|---|---|---|---|
hourly | 781.9 | 1331.6 | Bawaan. Mengintegralkan defisit per jam — paling setia secara fisis. |
costic | 741.7 | 1349.5 | DJU unifiés Prancis. Diwajibkan oleh kontrak kinerja energi di Prancis. |
mean | 659.9 | 1267.8 | Rata-rata harian terhadap basis. Konvensi internasional yang paling umum. |
eurostat | 587.7 | 656.6 | Statistik Eropa. Ambangnya sudah ditetapkan definisi dan mengabaikan base. |
Metode per jam dan rata-rata harian berbeda 18 % pada data yang
sama. Itu bukan selisih pembulatan — itu selisih antara memenangkan dan
kalah dalam perdebatan tentang tagihan energi. Pilih metode yang mereproduksi
angka di kontrak Anda sebelum Anda terikat pada sebuah paket; untuk
itulah compare-methods ada, dan biayanya satu permintaan.
eurostat mengabaikan base sepenuhnya: definisinya
menetapkan ambangnya sendiri, dan menuruti parameter Anda akan menghasilkan
angka yang bukan derajat-hari Eurostat padahal mengaku demikian.
/v1/methods tidak butuh kunci. Pakai untuk mengisi pemilih
metode di antarmuka Anda tanpa mengeluarkan biaya apa pun, dan tanpa menanam
daftar yang akan basi.
Derajat-hari per kota#
dju2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangSama, dengan zona waktu kota dan koreksi pulau bahang perkotaannya.
Menerapkan dua koreksi yang tidak bisa dilakukan koordinat telanjang: zona waktu kota, agar hari dipotong secara lokal, dan offset pulau bahang perkotaan yang sudah dikalibrasi.
Reanalisis membaca kawasan terbangun terlalu rendah sebesar 1–3 °C. Itu membuat derajat-hari pendinginan bias ke bawah — berarti besar jika Anda sedang menghitung kapasitas pendingin udara, dan tak terlihat jika Anda tidak tahu harus mencarinya.
elevation tidak diterapkan pada jalur ini, dan
kelalaian itu disengaja. Offset kota sudah dihitung terhadap stasiun yang
dinormalkan ke ketinggian kota itu sendiri, jadi koreksi lapse rate kedua akan
menghitung ketinggian yang sama dua kali — ke arah yang sama, dan cukup masuk
akal sehingga tak seorang pun menyadarinya. Jika Anda butuh ketinggian sebuah
bangunan tertentu, pakai endpoint koordinat dengan elevation dan
lepaskan koreksi pulau bahangnya.
Derajat-hari untuk bangunan Anda, bukan untuk sel grid#
djusameKoreksi lapse rate dari ketinggian tanah sel ke ketinggian Anda.
Sebuah stasiun cuaca berada pada ketinggian tempatnya berdiri, dan tak seorang pun bisa memindahkannya 600 m ke atas lereng lembah demi Anda. Sumber kami adalah model, jadi ketinggian tanah sel itu adalah sebuah angka di dalam arsip dan selisihnya tinggal aritmetika: 0,65 °C per 100 m. Sepanjang satu musim pemanasan, itu bukan galat pembulatan.
Bersifat opsional, dan responsnya menyebutkan persis apa yang dilakukan:
"elevation": {
"applied": true,
"model_elevation_m": 42.0,
"location_elevation_m": 1200,
"temperature_offset_c": -7.53,
"caveat": "Lapse-rate correction. It assumes temperature falls smoothly with
height, which a valley floor under a winter inversion does not."
}
Peringatannya ikut di dalam respons, bukan hanya di halaman ini, karena orang yang membaca JSON itu enam bulan lagi bukanlah orang yang membaca dokumentasinya.
Menyematkan sel, agar sebuah baseline tetap bisa dibandingkan#
dju1 kreditSel mana yang akan menjawab untuk sebuah titik, dan seberapa jauh letaknya.
dju2 kredit, +1 untuk setiap periode penuh 365,25 hari dalam rentangDerajat-hari untuk sel bernama — tanpa pencarian sel terdekat, sama sekali.
Semua bentuk lokasi lain menjalankan ulang pencarian sel terdekat pada setiap permintaan, jadi jawabannya bergantung pada isi arsip hari ini. Itu perilaku bawaan yang tepat untuk pencarian sekali jalan, dan keliru untuk sebuah baseline: perbandingan lintas tahun baru menjadi perbandingan jika setiap tahun berasal dari tempat yang sama.
Seiring meluasnya arsip, sel terdekat dari sebuah lokasi bisa berubah — perbaikan cakupan yang jika tidak disematkan akan masuk ke data Anda sebagai lompatan tanpa penjelasan.
# sekali, saat penyiapan
GET /v1/cells/resolve?lat=45.19&lon=5.72
→ { "id": "era5l_45.20_5.70", "distance_km": 1.4, "resolution_km": 9 }
# setiap kali sesudahnya
GET /v1/degree-days/cell/era5l_45.20_5.70?base=18&start=2015-01-01&end=2025-12-31
distance_km bernilai 0 pada permintaan tersemat
sejak awal: Anda menyebut selnya, jadi tidak ada yang digantikan. Sel yang sudah
tidak ada mengembalikan 404 cell_not_found alih-alih diam-diam
jatuh ke sel tetangga — yang justru akan menghadirkan kembali penggantian yang
ingin Anda hindari dengan menyematkannya.
/v1/cells/resolve juga cara murah untuk mengetahui
sebelum Anda membayar data bahwa sel terdekat ternyata 60 km jauhnya.
Ia tidak mendekode apa pun dan tidak membaca deret waktu, dan harganya pun
sepadan: satu kredit.
Periode rincian#
djusameAgregasikan permintaan yang sama ke periode tempat kontrak Anda diselesaikan.
Setiap respons derajat-hari membawa larik breakdown yang
diagregasi ke periode yang Anda minta. Kontrak diselesaikan pada periode yang
berbeda-beda, jadi keempatnya tersedia pada permintaan yang sama dengan harga
yang sama.
| Periode | Setiap baris membawa |
|---|---|
daily | tanggal, HDD, CDD, suhu min/maks/rata-rata |
weekly | tahun dan pekan ISO, tanggal mulainya, total |
monthly | tahun, bulan, total — bawaan |
yearly | tahun, total |
Pekan memakai pekan ISO, jadi sebuah pekan menjadi milik tahun yang memuat hari Kamisnya. 1 Januari 2023 jatuh pada pekan 52 tahun 2022, dan di situlah kami melaporkannya — sama seperti yang akan dilakukan lembar sebar Anda, dan berbeda pendapat dengan lembar sebar adalah awal dari sebuah rapat rekonsiliasi.
Setiap keranjang juga membawa days, sehingga bulan yang tidak
utuh di tepi rentang Anda terlihat alih-alih diam-diam lebih pendek. Bulan
Februari dengan "days": 12 adalah Februari yang tidak boleh Anda
bandingkan dengan Februari yang utuh.
Total bulanan untuk satu tahun#
dju2 kreditDua belas total bulanan untuk satu tahun kalender, tanpa deret harian.
Apa isi arsip: hari pertama dan terakhir yang berisi data, dan sumbu tempat ia akan tumbuh. Tanpa kunci.
Jalan pintas untuk kasus umum: ?lat=&lon=&year=2025 dan
dua belas baris kembali. Data yang sama dengan
/v1/degree-days?breakdown=monthly pada rentang yang sama; lebih
sedikit parameter yang bisa salah.
/v1/coverage melaporkan hari pertama dan terakhir arsip beserta
resolusinya, tidak butuh kunci, dan merupakan hal yang tepat diperiksa sebelum
Anda meminta periode dekat batas kekinian — ERA5-Land tertinggal sekitar lima
hari, dan provisional_days di respons Anda adalah
konsekuensinya.
{
"start": "1950-01-01",
"end": "2026-07-29", // hari terakhir yang MEMUAT data
"axis_end": "2026-12-31", // tempat run ini akan berhenti tumbuh
"hours": 671256, "axis_hours": 674976,
"cells": 86274, "resolution_km": 9.0,
"run": "world-1950-2026-p1000"
}
end dan axis_end adalah dua pertanyaan
berbeda, dan hanya yang pertama berbicara tentang data. Sebuah run
ditulis terhadap seluruh kalender yang pada akhirnya akan diisinya — arsip
1950-2026 mengalokasikan setiap jam sampai 31 Desember 2026 — dan pengisian
susulan melengkapinya seiring terbitnya data Copernicus.
Sampai 2026-08-03 endpoint ini melaporkan sumbu itu sebagai end,
sehingga arsipnya dianggap punya sekitar lima bulan jam yang sebenarnya kosong.
end adalah yang bisa Anda minta hari ini; permintaan yang
seluruhnya melewatinya menghasilkan 404 outside_archive, bukan
jawaban rapi bertotal nol.
Ekspor CSV#
dju4× the JSON callBaris rincian sebagai berkas CSV. Hanya paket berbayar.
Tambahkan format=csv ke permintaan derajat-hari mana pun. Anda
mendapat baris breakdown sebagai berkas CSV, dinamai menurut lokasi
dan tanggalnya sehingga enam bulan kemudian masih bisa dikenali di folder
unduhan.
year,month,hdd,cdd,days,t_mean,coverage,provisional
2024,1,205.03,2.88,31,11.48,1.0,false
2024,2,168.44,4.10,29,12.31,1.0,false
Hanya paket berbayar, dan dibatasi: rentang maksimum yang
sama dengan permintaan JSON, hanya baris teragregasi — tidak pernah deret per
jam — dan biayanya empat kredit untuk setiap satu kredit yang dikenakan
panggilan JSON setara. Kunci gratis mendapat
402 export_not_in_plan.
Itu disengaja, bukan setengah hati. Arsip inilah yang Anda bayar, dan ekspor tanpa batas adalah cara pesaing memilikinya dalam satu sore. Batas-batas itulah yang membuat format ini bisa ada sama sekali.
Riwayat per jam#
dju(years + 1) × (variables ÷ 2), rounded down, min 1Arsip reanalisis yang dilayani mentah: cuaca per jam mundur sampai 1950.
Parameter
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
lat | float | — | Wajib. |
lon | float | — | Wajib. |
start | ISO date | — | Rentang satu permintaan dibatasi — lihat Paket. |
end | ISO date | — | |
variables | csv | sebagian yang masuk akal | Tanyakan ke /v1/historical/variables apa isi arsip ini. |
hourly | bool | true | Sertakan deret jam demi jam. |
daily | bool | false — true untuk kota | Sertakan agregat harian, dipotong pada hari kalender lokal. |
Arsip yang sama yang menjadi dasar derajat-hari, dilayani langsung: per jam,
mundur sampai 1950, pada grid 9 km, di seluruh daratan. Host yang sama dan scope
dju yang sama — jika Anda bisa memanggil derajat-hari, Anda bisa
memanggil ini.
Hari ini arsip ini memuat suhu dan tidak ada yang lain. Ia dicerna untuk keperluan derajat-hari, dan derajat-hari hanya butuh satu variabel. Halaman ini menjanjikan "kelembapan, angin, curah hujan, dan radiasi matahari" sampai 2026-08-03 padahal arsipnya tidak pernah memuat satu pun dari itu.
/v1/historical/variables adalah jawaban yang selalu mutakhir —
ia membaca run yang dipromosikan, bukan kalimat ini, tidak butuh kunci, dan
tidak berbiaya. Panggil itu sebelum Anda membangun sesuatu di atas sebuah
field.
Yang membuatnya layak dibayar adalah konsistensinya. Rekaman stasiun cuaca membawa setiap pemindahan, setiap penggantian instrumen, dan setiap lubang dalam sejarahnya, sehingga tren tiga puluh tahun yang dihitung darinya sebagian merupakan tren instrumentasi. Reanalisis tidak punya persoalan itu: modelnya adalah model yang sama untuk setiap tahun dalam rekaman.
Untuk nilai harian sepanjang periode panjang, atau untuk normal dan tren, gunakan API Iklim — ia menyimpan field harian yang sudah diturunkan, tidak punya batas 9 km/1950, dan menjawab satu klimatologi utuh dalam satu panggilan.
Riwayat per kota#
dju(years + 1) × (variables ÷ 2), rounded down, min 1Identik, dengan zona waktu kota dan koreksi pulau bahangnya.
Dua hal yang tidak bisa dibawa koordinat: zona waktu kota, agar hari dipotong
sesuai yang benar-benar dialami kota itu, dan koreksi pulau bahang perkotaannya
yang sudah dikalibrasi. Di sini daily bernilai true secara bawaan,
karena permintaan per kota hampir selalu merupakan permintaan tentang hari.
Variabel yang tersedia#
Apa yang dimuat arsip saat ini, dengan satuan, dan field mana yang diturunkan. Tanpa kunci.
Menampilkan apa yang dimuat arsip saat ini, lengkap dengan
satuannya, dan field mana yang diturunkan alih-alih disimpan. Arsip yang dicerna
hanya untuk derajat-hari hanya memuat suhu, dan endpoint ini mengatakannya
terang-terangan alih-alih mengembalikan kolom berisi null.
Sebagian field dihitung, bukan disimpan: kelembapan dari titik embun,
kecepatan dan arah angin dari komponen u dan v. Menyimpan sesuatu yang bisa
dihitung dalam mikrodetik akan menambah sepertiga ukuran arsip tanpa guna —
tetapi field turunan baru muncul ketika sumbernya ada di dalam run, dan
karena itulah kebenaran tentang apa yang bisa Anda minta adalah endpoint ini,
bukan daftar yang ditulis di sebuah halaman. Pada arsip yang dipromosikan hari
ini sumber-sumber itu tidak ada, jadi jawabannya hanya
temperature_2m.