climatememory geliştiriciler

API referansı

Derece Gün API'si

ERA5-Land saatlik yeniden analizinden ısıtma ve soğutma derece günleri; 1950'ye kadar geriye, karada her yerde — 60 km içinde meteoroloji istasyonu bulunmayan yerler dahil. Tek bir scope — dju — bu sayfanın tamamını kapsar.

Derece günler#

GEThttps://api.climatememory.com/v1/degree-daysscope: dju2 kredi, aralıktaki her tam 365,25 günlük dönem için +1

Bir koordinat için ısıtma ve soğutma derece günleri.

Parametreler

ParametreTipVarsayılanAçıklama
latfloatZorunlu.
lonfloatZorunlu.
basenumber | preset | csv18°C cinsinden herhangi bir taban sıcaklığı ya da bir hazır ayar: uk (15,5), ashrae (18,333), iso, france, eurostat. Virgülle ayrılmış 60 taneye kadar, ek maliyeti olmadan — aşağıya bakın.
methodstringhourlyhourly, costic, mean ya da eurostat. Buna biz değil, sözleşmeniz karar verir.
startISO datebitiş yılının 1 Ocak'ıİstek başına en çok 10 yıl.
endISO datebugün
typestringbothHDD, CDD ya da both.
breakdownstringmonthlydaily, weekly, monthly ya da yearly.
elevationfloat (m)Sahanızın gerçek zemin yüksekliği. Seriyi hücrenin yüksekliğinden sizinkine kaydırır — aşağıya bakın.
formatstringjsonjson ya da csv. CSV ücretli plan özelliğidir.
{
  "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 } ]
}

quality bloğu süs değildir. 1,0'in altındaki bir coverage, arşivde saatlerin eksik olduğu anlamına gelir. provisional_days, nihai yeniden analiz yerine tahminden doldurulan günleri sayar; çünkü ERA5-Land yaklaşık beş günlük gecikmeyle yayımlanır.

Bu sayılarla bir sözleşme kapatıyorsanız ikisine de bakın. 0,98 kapsama üzerinden hesaplanmış bir toplam yanlış değildir ama 1,0 üzerinden hesaplanmışla aynı iddia da değildir — ve fark totals içinde görünmez.

Derece gün nedir, tek paragrafta

Bir ısıtma derece günü, dış havanın bir taban sıcaklığının ne kadar altında ve ne kadar süre kaldığını ölçer. 18 °C tabanında, 16 °C'de geçen bir saat (18 − 16) / 24 = 0.083 HDD katkı verir. Saatleri toplayın ve elinizde bir binanın ihtiyaç duyduğu enerjiyle orantılı bir sayı olsun. Soğutma derece günleri bunun aynasıdır: tabanın ne kadar üstünde. Havanın karşılaştırmadan çıkarılmasının ardından bir ısıtma sezonunu bir diğeriyle karşılaştırmanın standart yolu budur.

Çok taban, tek istek, tek fiyat#

GEThttps://api.climatememory.com/v1/degree-days?base=15,15.5,18,18.5,20scope: djusame as one base

Tek çağrıda 60 taban sıcaklığına kadar, bir tanesinin fiyatına.

Saatlik seriyi okumak ve çözmek, bir derece gün yanıtının bütün maliyetidir. O dizi bir kez bellekteyken başka bir taban, üzerinde bir çıkarma işlemidir; yani altmış taban istemek bir taban istemekle aynı maliyettedir.

Yanıt, listelediğiniz sırayla bütün tabanları taşıyan bir by_base dizisi kazanır. totals ve breakdown ilkini betimlemeyi sürdürür; böylece bu özellik var olmadan önce yazılmış kod değişmeden çalışır.

"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}
]

Bir sözleşmenin rakamlarını hangi tabanın yeniden ürettiğini henüz bilmediğinizde ya da aynı bina farklı taraflarca farklı tabanlarda kapatıldığında işe yarar — 15,5 kullanan bir mal sahibi ile 18 kullanan bir enerji tedarikçisi ikisi de haklıdır ve bu, ikisini tek çağrıda döndürür.

Hesaplama yöntemleri#

GEThttps://api.climatememory.com/v1/degree-days/compare-methodsscope: dju2 kredi, aralıktaki her tam 365,25 günlük dönem için +1

Dört yöntemin tamamı, aynı dönem üzerinde, yan yana.

GEThttps://api.climatememory.com/v1/methodsanahtar gerekmez0 kredi

Yöntem tanımları ve hazır ayarları. Anahtar gerekmez.

Yöntem bir parametredir, çünkü ona biz değil, sözleşmeniz karar verir. Aynı veri, aynı taban, aynı yıl, Cezayir'de:

YöntemHDD 18 °CCDD 18 °CNe zaman kullanılır
hourly781.91331.6Varsayılan. Saatlik açığı integre eder — fiziksel olarak en sadık olanı.
costic741.71349.5Fransız DJU unifiés. Fransız enerji performans sözleşmelerinin zorunlu tuttuğu yöntem.
mean659.91267.8Günlük ortalamanın tabanla karşılaştırılması. En yaygın uluslararası kabul.
eurostat587.7656.6Avrupa istatistikleri. Eşikler tanımla sabitlenmiştir ve base değerini yok sayar.

Saatlik yöntem ile günlük ortalama, aynı veri üzerinde %18 ayrışır. Bu bir yuvarlama farkı değil — bir enerji faturası tartışmasını kazanmakla kaybetmek arasındaki farktır. Bir plana bağlanmadan önce sözleşmenizdeki rakamları yeniden üreten yöntemi seçin; compare-methods tam bunun içindir ve bir istek eder.

eurostat, base değerini tümüyle yok sayar: tanım kendi eşiklerini sabitler ve parametrenize uymak, Eurostat derece günü olmadığı hâlde öyleymiş gibi görünen bir sayı üretirdi.

/v1/methods anahtar gerektirmez. Arayüzünüzdeki bir yöntem seçicisini hiçbir şey harcamadan ve bayatlayacak bir listeyi koda gömmeden doldurmak için kullanın.

Şehre göre derece günler#

GEThttps://api.climatememory.com/v1/degree-days/city/{country}/{slug}scope: dju2 kredi, aralıktaki her tam 365,25 günlük dönem için +1

Aynısı, şehrin saat dilimi ve kentsel ısı adası düzeltmesiyle.

Çıplak bir koordinatın yapamayacağı iki düzeltmeyi uygular: günlerin yerel olarak kesilmesi için şehrin saat dilimi ve şehrin kalibre edilmiş kentsel ısı adası kayması.

Yeniden analiz, yapılaşmış alanları 1–3 °C düşük okur. Bu, soğutma derece günlerini olduğundan düşük gösterir — klima boyutlandırıyorsanız önemli, aramanız gerektiğini bilmiyorsanız görünmezdir.

Bu yolda elevation uygulanmaz ve bu eksiklik bilinçlidir. Şehir kayması zaten şehrin kendi rakımına normalleştirilmiş istasyonlara göre hesaplanır; ikinci bir düşüm oranı düzeltmesi aynı yüksekliği iki kez sayardı — hem de aynı yönde ve kimsenin fark etmeyeceği kadar makul biçimde. Belirli bir binanın rakımı gerekiyorsa elevation ile koordinat uç noktasını kullanın ve ısı adası düzeltmesinden vazgeçin.

Izgara hücresi için değil, binanız için derece günler#

GEThttps://api.climatememory.com/v1/degree-days?elevation={metres}scope: djusame

Hücrenin zemin yüksekliğinden sizinkine düşüm oranı düzeltmesi.

Bir meteoroloji istasyonu bulunduğu yükseklikte durur ve kimse onu sizin için vadi yamacında 600 m yukarı taşıyamaz. Bizim kaynağımız bir model olduğundan hücrenin zemin yüksekliği arşivde bir sayıdır ve fark aritmetiktir: her 100 m için 0,65 °C. Bir ısıtma sezonu boyunca bu bir yuvarlama hatası değildir.

İsteğe bağlıdır ve yanıt tam olarak ne yaptığını söyler:

"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."
}

Uyarı yalnızca bu sayfada değil, yanıtın içinde yolculuk eder; çünkü bu JSON'u altı ay sonra okuyacak kişi, belgeleri okumuş olan kişi değildir.

Bir referans karşılaştırılabilir kalsın diye hücreyi sabitlemek#

GEThttps://api.climatememory.com/v1/cells/resolvescope: dju1 kredi

Bir nokta için hangi hücre yanıt verirdi ve ne kadar uzakta.

GEThttps://api.climatememory.com/v1/degree-days/cell/{cell_id}scope: dju2 kredi, aralıktaki her tam 365,25 günlük dönem için +1

Adlandırılmış bir hücre için derece günler — en yakın hücre araması asla yapılmaz.

Diğer bütün konum biçimleri her istekte en yakın hücre aramasını yeniden çalıştırır; yani yanıt, arşivin bugün ne tuttuğuna bağlıdır. Tek seferlik bir sorgu için doğru varsayılan budur, bir referans için ise yanlış: çok yıllı bir karşılaştırma, ancak her yıl aynı yerden geliyorsa karşılaştırmadır.

Arşiv genişledikçe belirli bir sahaya en yakın hücre değişir — verinize başka türlü açıklanamayan bir basamak olarak ulaşacak bir kapsama iyileşmesi.

# bir kez, kurulumda
GET /v1/cells/resolve?lat=45.19&lon=5.72
  → { "id": "era5l_45.20_5.70", "distance_km": 1.4, "resolution_km": 9 }

# ondan sonra her seferinde
GET /v1/degree-days/cell/era5l_45.20_5.70?base=18&start=2015-01-01&end=2025-12-31

Sabitlenmiş bir istekte distance_km yapısı gereği 0'dır: hücreyi siz adlandırdınız, dolayısıyla yerine hiçbir şey konmadı. Artık var olmayan bir hücre, sessizce bir komşuya düşmek yerine 404 cell_not_found döndürür — komşuya düşmek, sabitleyerek kaçındığınız o yerine koymayı geri getirirdi.

/v1/cells/resolve aynı zamanda, en yakın hücrenin 60 km uzakta olduğunu veri için ödeme yapmadan önce öğrenmenin ucuz yoludur. Hiçbir şeyi çözmez ve hiçbir zaman serisi okumaz; fiyatı da buna göredir: bir kredi.

Ayrıntı dönemleri#

GEThttps://api.climatememory.com/v1/degree-days?breakdown={daily|weekly|monthly|yearly}scope: djusame

Aynı isteği, sözleşmenizin kapandığı döneme toplulaştırın.

Her derece gün yanıtı, istediğiniz döneme toplulaştırılmış bir breakdown dizisi taşır. Sözleşmeler farklı dönemler üzerinden kapanır; bu yüzden dördü de aynı istekte, aynı fiyata sunulur.

DönemHer satırın taşıdığı
dailytarih, HDD, CDD, en düşük/en yüksek/ortalama sıcaklık
weeklyISO yılı ve haftası, başladığı tarih, toplamlar
monthlyyıl, ay, toplamlar — varsayılan
yearlyyıl, toplamlar

Haftalar ISO haftalarıdır; yani bir hafta, perşembesinin düştüğü yıla aittir. 1 Ocak 2023, 2022'nin 52. haftasına düşer ve biz onu orada raporlarız — hesap tablonuzun da yapacağı budur ve hesap tablosuyla anlaşmazlığa düşmek, bir mutabakat toplantısının başlangıcıdır.

Her kova ayrıca days taşır; böylece aralığınızın kenarındaki eksik bir ay sessizce kısa kalmak yerine görünür olur. "days": 12 olan bir şubat, tam bir şubatla karşılaştırmamanız gereken bir şubattır.

Bir yılın aylık toplamları#

GEThttps://api.climatememory.com/v1/degree-days/monthlyscope: dju2 kredi

Bir takvim yılı için on iki aylık toplam, günlük seri olmadan.

GEThttps://api.climatememory.com/v1/coverageanahtar gerekmez0 kredi

Arşivin tuttuğu şey: veri içeren ilk ve son gün ve büyüyeceği eksen. Anahtar gerekmez.

Yaygın durum için bir kısayol: ?lat=&lon=&year=2025 ve on iki satır döner. Aynı aralıkta /v1/degree-days?breakdown=monthly ile aynı veri; yanlış yazılacak daha az parametre.

/v1/coverage arşivin ilk ve son gününü ve çözünürlüğünü bildirir, anahtar gerektirmez ve şimdiki zamanın kenarına yakın bir dönem istemeden önce bakılacak doğru yerdir — ERA5-Land yaklaşık beş gün geriden gelir ve yanıtınızdaki provisional_days bunun sonucudur.

{
  "start": "1950-01-01",
  "end": "2026-07-29",        // veri TUTAN son gün
  "axis_end": "2026-12-31",   // bu koşunun büyümeyi bırakacağı yer
  "hours": 671256, "axis_hours": 674976,
  "cells": 86274, "resolution_km": 9.0,
  "run": "world-1950-2026-p1000"
}

end ile axis_end farklı sorulardır ve yalnızca ilki veriyle ilgilidir. Bir koşu, sonunda dolduracağı bütün takvime karşı yazılır — 1950-2026 arşivi her saati 31 Aralık 2026'ya kadar ayırır — ve tamamlama, Copernicus yayımladıkça burayı doldurur.

2026-08-03'e kadar bu uç nokta ekseni end olarak bildiriyordu; yani arşive, boş olan yaklaşık beş aylık saati fazladan yazıyordu. Bugün isteyebileceğiniz şey end'dir; tümüyle onun ötesinde kalan bir istek, toplamı sıfır çıkan düzgün bir yanıt değil, 404 outside_archive'dır.

CSV dışa aktarma#

GEThttps://api.climatememory.com/v1/degree-days?format=csvscope: dju4× the JSON call

Ayrıntı satırları CSV dosyası olarak. Yalnızca ücretli planlar.

Herhangi bir derece gün isteğine format=csv ekleyin. breakdown satırlarını bir CSV dosyası olarak alırsınız; dosya adı konum ve tarihlerden türetilir, böylece altı ay sonra indirilenler klasöründe hâlâ tanınabilir olur.

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

Yalnızca ücretli planlar ve sınırlı: JSON isteğiyle aynı en büyük aralık, yalnızca toplulaştırılmış satırlar — saatlik seri asla — ve eşdeğer JSON çağrısının her bir kredisine karşılık dört kredi. Ücretsiz bir anahtar 402 export_not_in_plan alır.

Bu, gönülsüzlükten değil, bilinçli bir tercihtir. Ödediğiniz şey arşivdir ve sınırsız bir dışa aktarma, bir rakibin onu bir öğleden sonrada edinme yoludur. Bu formatın var olabilmesini sağlayan şey, o sınırlardır.

Saatlik geçmiş#

GEThttps://api.climatememory.com/v1/historicalscope: dju(years + 1) × (variables ÷ 2), rounded down, min 1

Yeniden analiz arşivi ham hâliyle: 1950'ye kadar geriye saatlik hava durumu.

Parametreler

ParametreTipVarsayılanAçıklama
latfloatZorunlu.
lonfloatZorunlu.
startISO dateBir isteğin aralığı sınırlıdır — bkz. Planlar.
endISO date
variablescsvmakul bir alt kümeBu arşivin neyi tuttuğunu /v1/historical/variables'a sorun.
hourlybooltrueSaat saat seriyi dahil et.
dailyboolfalse — şehirler için trueYerel takvim günlerine göre kesilmiş günlük toplulaştırmaları dahil et.

Derece günlerin üzerine kurulduğu arşivin doğrudan sunulmuş hâli: saatlik, 1950'ye kadar geriye, 9 km'lik ızgarada, karada her yerde. Aynı sunucu ve aynı dju scope'u — derece günleri çağırabiliyorsanız bunu da çağırabilirsiniz.

Bugün bu arşiv sıcaklık tutuyor, başka hiçbir şey tutmuyor. Derece günler için alındı ve derece günlerin tek bir değişkene ihtiyacı var. Bu sayfa 2026-08-03'e kadar "nem, rüzgâr, yağış ve güneş radyasyonu" vaat ediyordu; arşiv bunların hiçbirini hiçbir zaman tutmadı.

/v1/historical/variables her zaman güncel olan yanıttır — bu cümleyi değil, yayına alınmış koşuyu okur, anahtar gerektirmez ve hiçbir şey harcamaz. Bir alanın üzerine bir şey kurmadan önce onu çağırın.

Bunu ödemeye değer kılan şey tutarlılıktır. Bir meteoroloji istasyonu kaydı, geçmişindeki her taşınmayı, her cihaz değişikliğini ve her boşluğu taşır; dolayısıyla ondan hesaplanan otuz yıllık bir eğilim, kısmen cihazlardaki bir eğilimdir. Yeniden analizde bunların hiçbiri yoktur: model, kaydın her yılı için aynı modeldir.

Uzun bir dönemdeki günlük değerler ya da normaller ve eğilimler için bunun yerine İklim API'sini kullanın — günlük alanları önceden türetilmiş hâlde tutar, 9 km/1950 sınırı yoktur ve bütün bir iklimolojiyi tek çağrıda yanıtlar.

Şehre göre geçmiş#

GEThttps://api.climatememory.com/v1/historical/city/{country}/{slug}scope: dju(years + 1) × (variables ÷ 2), rounded down, min 1

Aynısı, şehrin saat dilimi ve ısı adası düzeltmesiyle.

Bir koordinatın taşıyamayacağı iki şey: günlerin şehrin onları gerçekten yaşadığı yerde kesilmesi için şehrin saat dilimi ve şehrin kalibre edilmiş kentsel ısı adası düzeltmesi. Burada daily varsayılan olarak doğrudur; çünkü bir şehir isteği neredeyse her zaman günlerle ilgili bir istektir.

Kullanılabilir değişkenler#

GEThttps://api.climatememory.com/v1/historical/variablesanahtar gerekmez0 kredi

Arşivin şu anda neyi tuttuğu, birimleriyle ve hangi alanların türetildiğiyle. Anahtar gerekmez.

Arşivin şu anda neyi tuttuğunu birimleriyle birlikte ve hangi alanların saklanmak yerine türetildiğini listeler. Yalnızca derece günler için alınmış bir arşiv sadece sıcaklık tutar ve bu uç nokta, null sütunları döndürmek yerine bunu açıkça söyler.

Bazı alanlar saklanmaz, hesaplanır: nem çiy noktasından, rüzgâr hızı ve yönü u ve v bileşenlerinden. Mikrosaniyede hesaplanan bir şeyi saklamak, arşivi hiç yoktan üçte bir büyütürdü — ama türetilmiş bir alan ancak kaynakları koşuda olduğunda görünür; işte bu yüzden neyi isteyebileceğinizin doğrusu, bir sayfaya yazılmış bir liste değil, bu uç noktadır. Bugün yayına alınmış arşivde kaynaklar yok; dolayısıyla yanıt tek başına temperature_2m'dir.