TANGERANG SELATAN WEATHER

Minggu, 02 Agustus 2026

Mendeteksi Hari Kering dari RH dan Angin ERA5

Indonesia dry season gradient transitioning from humid-green to dry-orange fire weather season

Apa itu Hari Kering dan Mengapa Penting

Setiap tahun, antara Juni hingga Desember, Indonesia memasuki musim kemarau yang memunculkan kondisi paling berbahaya untuk kebakaran lahan: kelembaban udara turun, angin menguat, dan bahan bakar vegetasi mengering. Kombinasi inilah yang membuat satu titik api kecil bisa meluas menjadi bencana asap regional dalam hitungan jam.

Masalahnya, "hari kering" di Indonesia tidak bisa diartikan sama dengan standar garis tengah bumi (mid-latitude). Di negara-negara dengan iklim kontinental, RH di bawah 30% baru dianggap kritis — tapi di Indonesia yang bersifat maritim tropis, RH jarang turun sejauh itu bahkan saat kemarau panjang. NASA mencatat bahwa bahkan di musim kemarau, kelembaban udara Indonesia tetap cukup tinggi dibanding wilayah temperate karena proximity terhadap laut. Artinya, kita perlu ambang batas yang disesuaikan dengan konteks tropis: RH di bawah 60% sudah tergolong kering ringan, dan di bawah 40% tergolong kering ekstrem.

BMKG pada musim kemarau 2024 secara eksplisit menandai kondisi kelembapan udara rendah yang dibarengi embusan angin lebih kuat sebagai akselerator utama penyebaran api — bukan satu atau yang lain, melainkan keduanya secara bersamaan. Dengan data ERA5, kita bisa mendeteksi hari-hari berbahaya ini secara objektif dan otomatis.

Memahami Kelembaban Relatif dan Angin di Musim Kemarau

Relative humidity (RH) mengukur seberapa dekat udara dengan titik jenuh uap airnya. Makin rendah RH, makin kering bahan bakar vegetasi — dan makin cepat pula api menjalar. NOAA CPC, dalam kerangka Canadian Forest Fire Weather Index (FWI), menggunakan RH 2 m dan kecepatan angin 10 m sebagai dua input meteorologi utama untuk memperkirakan bahaya kebakaran. Spread Component dalam sistem FWI secara langsung digerakkan oleh kecepatan angin: angin kencang meningkatkan laju penjalaran api secara dramatis bahkan ketika fuel moisture sudah agak kering.

Yang membedakan Indonesia dari konteks mid-latitude adalah baseline kelembaban yang lebih tinggi secara alami. NASA mendokumentasikan bagaimana bahkan partikel asap dari kebakaran Indonesia menyerap kelembaban residual dan membesar — bukti bahwa udara di sini tidak pernah sekering wilayah fire-weather temperate. Ini yang membuat kita perlu menyesuaikan threshold: di sinilah analisis ERA5 berbasis ambang tropis menjadi penting.

Musim kebakaran Indonesia dengan risiko tertinggi jatuh pada Agustus–Oktober, persis di puncak musim kemarau. Dalam periode ini, tutupan awan berkurang, radiasi matahari maksimal, dan angin dari benua Australia cenderung lebih kencang — semua faktor memperburuk kondisi fire weather secara bersamaan.

Bersiap dengan Data ERA5 Indonesia 2024

ERA5 adalah reanalysis terbaru dari ECMWF yang menyediakan rekonstruksi kondisi atmosfer global dari 1940 hingga kini, dengan resolusi spasial 0,25° dan temporal 1 jam. Untuk tutorial ini kita menggunakan data 6-jam (4 waktu per hari: 00, 06, 12, 18 UTC) yang cukup untuk menangkap variasi siang-malam dan puncak kemarau.

Empat variabel yang kita perlukan dari ERA5 single-level:

  • t2m — temperature 2 m (K), untuk menghitung RH
  • d2m — dewpoint temperature 2 m (K), pasangan Magnus formula
  • u10 — komponen angin zonal 10 m (m/s)
  • v10 — komponen angin meridional 10 m (m/s)

RH sendiri bukan output langsung ERA5, melainkan diturunkan dari t2m dan d2m. Kita download keempat file dari CDS menggunakan cdsapi — cukup satu kali, lalu kita olah lokal.

Memuat dan Mengeksplorasi Data ERA5

Snippet di bawah mendownload empat file ERA5 dari Climate Data Store (CDS) menggunakan cdsapi. Guard if not os.path.exists(fname) memastikan download hanya terjadi sekali — file yang sudah ada di direktori kerja kita tidak di-download ulang. Setelah semua file tersedia, kita load temperature dan dewpoint dengan xarray untuk memeriksa struktur dan rentang nilainya.

Daftar akun CDS terlebih dahulu di cds.climate.copernicus.eu dan konfigurasikan file ~/.cdsapirc sebelum menjalankan snippet ini.

import os, cdsapi, xarray as xr, numpy as np

COMMON = {
    "product_type": "reanalysis",
    "year": "2024",
    "month": [f"{m:02d}" for m in range(1, 13)],
    "day":   [f"{d:02d}" for d in range(1, 32)],
    "time":  ["00:00", "06:00", "12:00", "18:00"],
    "area":  [6, 95, -11, 141],   # N, W, S, E — bbox Indonesia
    "format": "netcdf",
}

DOWNLOADS = [
    ("era5_t2m_indonesia_2024_6h.nc", ["2m_temperature"]),
    ("era5_d2m_indonesia_2024_6h.nc", ["2m_dewpoint_temperature"]),
    ("era5_u10_indonesia_2024_6h.nc", ["10m_u_component_of_wind"]),
    ("era5_v10_indonesia_2024_6h.nc", ["10m_v_component_of_wind"]),
]

c = None
for fname, var in DOWNLOADS:
    if not os.path.exists(fname):
        if c is None:
            c = cdsapi.Client(quiet=True)
        c.retrieve(
            "reanalysis-era5-single-levels",
            {**COMMON, "variable": var},
            fname,
        )

# Load dan inspeksi struktur
ds_t = xr.open_dataset("era5_t2m_indonesia_2024_6h.nc")
ds_d = xr.open_dataset("era5_d2m_indonesia_2024_6h.nc")

print("Dimensi:", dict(ds_t.sizes))
print("Variabel:", list(ds_t.data_vars))
print(f"T2m  : {float(ds_t.t2m.min()) - 273.15:.1f} hingga {float(ds_t.t2m.max()) - 273.15:.1f} °C")
print(f"D2m  : {float(ds_d.d2m.min()) - 273.15:.1f} hingga {float(ds_d.d2m.max()) - 273.15:.1f} °C")
Dimensi: {'valid_time': 1464, 'latitude': 69, 'longitude': 185}
Variabel: ['t2m']
T2m  : 6.9 hingga 39.3 °C
D2m  : 4.6 hingga 29.7 °C

Output menunjukkan dimensi (valid_time, latitude, longitude) untuk seluruh 2024 — ribuan timestep dengan grid yang menutupi seluruh wilayah Indonesia. Rentang suhu yang muncul mencerminkan variasi diurnal dan spasial dari dataran rendah tropis hingga puncak pegunungan Papua. Perhatikan bahwa D2m selalu lebih rendah atau sama dengan T2m — kondisi sebaliknya secara fisik mustahil dan menjadi penanda data error jika terjadi.

Menghitung Kelembaban Relatif dari Rumus Magnus

Relative humidity dihitung dari pasangan temperature dan dewpoint menggunakan pendekatan August–Roche–Magnus:

$$\text{RH} = 100 \times \frac{\exp\!\left(\dfrac{17{,}625\; T_d}{243{,}04 + T_d}\right)}{\exp\!\left(\dfrac{17{,}625\; T}{243{,}04 + T}\right)}$$

di mana \(T\) adalah temperature 2 m dalam Celsius dan \(T_d\) adalah dewpoint 2 m dalam Celsius. Kecepatan angin resultante dari dua komponen dihitung sebagai:

$$W = \sqrt{u_{10}^2 + v_{10}^2}$$

Snippet di bawah menerapkan kedua formula ini ke seluruh grid ERA5 menggunakan NumPy vectorization — tidak ada loop eksplisit, komputasi berlangsung di seluruh dimensi time, lat, dan lon sekaligus.

ds_u = xr.open_dataset("era5_u10_indonesia_2024_6h.nc")
ds_v = xr.open_dataset("era5_v10_indonesia_2024_6h.nc")

# Konversi ke Celsius
T  = ds_t.t2m - 273.15
Td = ds_d.d2m - 273.15

# Rumus Magnus untuk RH
rh = 100.0 * (np.exp(17.625 * Td / (243.04 + Td)) /
              np.exp(17.625 * T  / (243.04 + T)))

# Kecepatan angin resultante (m/s)
wind = np.sqrt(ds_u.u10**2 + ds_v.v10**2)

# Statistik ringkasan
rh_flat   = rh.values.ravel()
wind_flat = wind.values.ravel()

print(f"RH (%)     — min: {rh_flat.min():.1f}  mean: {rh_flat.mean():.1f}  max: {rh_flat.max():.1f}")
print(f"Wind (m/s) — min: {wind_flat.min():.2f}  mean: {wind_flat.mean():.2f}  max: {wind_flat.max():.2f}")

# Fraksi grid-timestep di bawah ambang kekeringan tropis
frac_60 = float((rh < 60).mean()) * 100
frac_40 = float((rh < 40).mean()) * 100
print(f"\nGrid-timestep RH < 60% : {frac_60:.1f}%")
print(f"Grid-timestep RH < 40% : {frac_40:.1f}%")
RH (%)     — min: 18.8  mean: 82.0  max: 100.0
Wind (m/s) — min: 0.00  mean: 3.96  max: 21.93

Grid-timestep RH < 60% : 1.0%
Grid-timestep RH < 40% : 0.0%

Nilai mean RH yang muncul biasanya berada di kisaran 70–85% untuk rata-rata seluruh Indonesia 2024 — jauh di atas ambang kekeringan, yang mengonfirmasi bahwa kondisi kering ekstrem bersifat episodik, bukan baseline. Fraksi grid-timestep dengan RH di bawah 40% yang relatif kecil itulah yang menjadi target identifikasi kita.

Mengidentifikasi Hari Kering Menggunakan Ambang Tropis

Kita menetapkan tiga kriteria berbasis ambang batas yang disesuaikan untuk konteks tropis Indonesia:

  • Kering ringan (hari kering ringan): RH < 60 %
  • Kering ekstrem (hari kering ekstrem): RH < 40 %
  • Angin elevasi: \(W > 5\) m/s

Mengapa 60% dan bukan 30% seperti standar mid-latitude? Karena di Indonesia, bahan bakar gambut dan vegetasi tropis sudah cukup kering untuk terbakar pada RH 50–60%, jauh di atas nilai kritis negara-negara beriklim kontinental. NOAA CPC sendiri menggunakan persentil historis (bukan nilai mutlak) untuk menyesuaikan threshold dengan iklim lokal — prinsip yang sama kita terapkan di sini dengan konteks data tropis.

Snippet berikut menghitung fraksi grid cell Indonesia yang melewati ambang kekeringan tiap harinya — persentase wilayah dengan RH < 60% dan RH < 40% per hari — lalu memvisualisasikan time series fraksi tersebut sepanjang 2024 untuk melihat kapan dan seberapa luas kondisi kering terjadi.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np

# Fraksi grid cell per hari yang melewati ambang kekeringan tropis
frac60 = (rh < 60).mean(dim=["latitude", "longitude"]) * 100
frac40 = (rh < 40).mean(dim=["latitude", "longitude"]) * 100

frac60_daily = frac60.resample(valid_time="1D").mean()
frac40_daily = frac40.resample(valid_time="1D").mean()

times = frac60_daily.valid_time.values

fig, ax = plt.subplots(figsize=(13, 5))

# Garis utama: fraksi wilayah dengan RH < 60%
ax.plot(times, frac60_daily.values, color="#E67E22", linewidth=1.6,
        label="% wilayah RH < 60% (kering ringan)")

# Garis sekunder: fraksi wilayah dengan RH < 40%
ax.plot(times, frac40_daily.values, color="#C0392B", linewidth=1.2,
        alpha=0.7, label="% wilayah RH < 40% (kering ekstrem)")

# Span musim kemarau puncak Agustus–Oktober 2024
t_start = np.datetime64("2024-08-01")
t_end   = np.datetime64("2024-10-31")
ax.axvspan(t_start, t_end, alpha=0.10, color="#F0B27A",
           label="Puncak fire season (Agu–Okt 2024)")

ax.set_ylabel("Fraksi Wilayah Indonesia (%)", fontsize=10)
ax.set_xlabel("Bulan (2024)", fontsize=10)
ax.set_ylim(0, None)

ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b %Y"))
plt.setp(ax.xaxis.get_majorticklabels(), rotation=30, ha="right", fontsize=9)

ax.legend(loc="upper left", fontsize=9, framealpha=0.85)
ax.set_title(
    "Fraksi Wilayah Indonesia dengan RH < 60% dan < 40%, 2024\n"
    "(% grid cell per hari yang melewati ambang kekeringan tropis)",
    fontsize=11, pad=10,
)
fig.tight_layout()
plt.savefig("rh_fraction_indonesia_2024.png", dpi=150, bbox_inches="tight")
print("Plot disimpan: rh_fraction_indonesia_2024.png")

Time series of Indonesian grid cell fraction with RH below 60% and 40%, daily 2024

Plot menunjukkan bahwa fraksi wilayah Indonesia dengan RH < 60% kecil secara absolut — rata-rata sekitar 1% grid cell per hari sepanjang 2024 — tetapi sinyal musimnya nyata: pada periode Agustus–Oktober (ditandai bayangan oranye muda), fraksi tersebut hampir dua kali lipat dibanding paruh pertama tahun (sekitar 1,8% vs 0,8% per hari). Sementara itu, fraksi wilayah dengan RH < 40% mendekati nol sepanjang tahun, mengonfirmasi bahwa kekeringan ekstrem bersifat episodik dan terlokalisasi — bukan pergeseran baseline domain-luas — sesuai karakter Indonesia sebagai negara kepulauan tropis-maritim.

Lonjakan fraksi kering pada Agustus–Oktober ini mencerminkan kondisi yang langsung terdokumentasi BMKG. Data BMKG untuk 2024 mencatat sebagian besar wilayah Jawa, Bali, dan Nusa Tenggara mengalami 21–30 hari atau lebih tanpa hujan (Hari Tanpa Hujan / HTH), yang BMKG gunakan sebagai indikator kekeringan meteorologis. ERA5 mengonfirmasi kondisi ini dari sisi lain: fraksi wilayah dengan RH rendah naik dua kali lipat selama tiga bulan tersebut. Kecepatan angin 10 m sendiri relatif stabil sepanjang tahun (rata-rata sekitar 4 m/s untuk seluruh domain) — tapi begitu angin elevasi di atas 5 m/s bertepatan secara lokal dengan RH rendah, kombinasi keduanya tetap menjadi akselerator penyebaran api sesuai kerangka BMKG.

Yang membuat periode ini sangat berbahaya adalah koeksistensi dua faktor: RH rendah mengurangi kadar air bahan bakar vegetasi dan gambut, sementara angin kencang meningkatkan laju penjalaran api secara eksponensial. ASEAN FDRS, yang diproduksi harian oleh Malaysian Meteorological Department, menggunakan suhu, RH, curah hujan, dan kecepatan angin — persis keempat variabel ERA5 yang kita pakai — sebagai input Fire Danger Rating untuk seluruh Asia Tenggara.

Foto satelit MODIS berikut diambil pada 2 Oktober 2023, ketika kondisi serupa berlangsung selama El Niño: plum asap tebal menutupi sebagian besar Kalimantan dan Sumatra.

MODIS true-color satellite image showing thick smoke plume over Borneo and Sumatra from Indonesian fires during dry season, October 2023 Sumber: NASA Earth Observatory image by Lauren Dauphin (link)

NASA mencatat bahwa hingga 2 Oktober 2023, sekitar 267.900 hektare lahan di Kalimantan Selatan dan Tengah telah terbakar — melampaui total burned area seluruh 2022. Metode identifikasi hari kering berbasis ERA5 yang kita bangun di tutorial ini memberikan sinyal kuantitatif yang menjelaskan mengapa periode seperti ini begitu destruktif.

Langkah Selanjutnya dan Eksplorasi Lebih Lanjut

Tutorial ini membangun fondasi untuk fire-weather monitoring berbasis ERA5 yang sepenuhnya reproducible. Beberapa ekstensi yang bisa kita coba selanjutnya:

Multi-year climatology. Ulangi analisis untuk 2015, 2019, dan 2023 (tahun-tahun dengan El Niño kuat) dan bandingkan distribusi frekuensi hari kering. Data ERA5 tersedia sejak 1940, sehingga analisis tren jangka panjang juga memungkinkan.

Fokus regional. Alih-alih mean spasial seluruh Indonesia, pilih titik grid tertentu — misalnya Palangkaraya (Kalimantan Tengah, area gambut berisiko tinggi) atau Palu (Sulawesi, sering kena angin Foehn) untuk karakterisasi lokal yang lebih tajam.

Integrasi data hotspot. Korelasikan hari kering ERA5 dengan titik panas MODIS Active Fire dari NASA FIRMS. Ini memungkinkan validasi empiris: apakah hari-hari dengan RH < 40% + wind > 5 m/s benar-benar diikuti lonjakan hotspot dalam 1–3 hari ke depan?

Refine dengan curah hujan. Tambahkan variabel ERA5 total_precipitation untuk memisahkan "kering karena tidak hujan" dari "kering angin kencang saja" — kombinasi keduanya memberikan signal paling kuat.

Dengan metodologi yang sama, kita juga bisa mengintegrasikan output ini ke dalam early-warning workflow yang mengirimkan alert otomatis ketika ambang batas RH dan angin terlampaui di wilayah tertentu, sejalan dengan framework kewaspadaan kemarau yang BMKG kembangkan.

Eksplorasi artikel meteorologi lainnya di meteo.my.id

Referensi

Tidak ada komentar:

Posting Komentar