Pola Harian & Musiman Bandung–Johor: Insight Sensor tentang Hujan, Angin, dan PM2.5

Bagaimana ritme harian dan musiman memengaruhi hujan, angin, dan partikulat halus—serta apa artinya bagi keputusan harian pengguna Satu Cuaca.

Ritme atmosfer di Bandung dan Johor dibentuk oleh topografi dan monsun tropis. Di Bandung, lembah–perbukitan memicu sirkulasi lokal siang–malam yang kuat; di Johor, pengaruh laut–daratan dan monsun timur laut–barat daya memberi stempel musiman yang jelas. Memahami pola ini penting agar informasi cuaca dan kualitas udara terasa relevan bagi aktivitas, bukan sekadar angka.

Data sensor menunjukkan siklus harian hujan yang khas daerah tropis: peluang konveksi meningkat dari siang menuju sore ketika pemanasan permukaan mencapai puncak. Di Bandung, konsentrasi awan konvektif sering memuncak sore–petang mengikuti konvergensi angin lembah dan pemanasan lereng; di Johor, pola siang–petang juga kuat, tetapi pada periode monsun tertentu bisa terjadi episode malam–dini hari yang lebih aktif karena gangguan sinoptik dan garis badai pesisir. Implikasi praktisnya sederhana: jadwalkan aktivitas luar ruang pagi–menjelang siang saat risiko hujan cenderung minimum harian.

Angin mengikuti pola termal lokal. Siang hari, angin cenderung upslope (Bandung) atau sea breeze (Johor), yang memperbaiki dispersi polutan; malam–dini hari, aliran berbalik (downslope/land breeze) sehingga adveksi melemah dan lapisan campur menipis. Perubahan ketebalan lapisan campur inilah yang sering menjelaskan mengapa udara terasa lebih “berat” menjelang pagi, meski lalu lintas belum padat.

Siklus harian PM2.5 umumnya menampakkan dua puncak: pagi (jam berangkat kerja + lapisan campur dangkal) dan sore–malam (arus balik + stabilisasi malam). Titik terendahnya terjadi siang–sore ketika turbulensi dan angin meningkat, serta ketika hujan terjadi karena wet scavenging. Ini menjelaskan mengapa notifikasi kualitas udara idealnya mempertimbangkan jam setempat, kecepatan/arah angin, dan presipitasi, bukan hanya nilai konsentrasi sesaat.

Musiman, Johor lebih terpengaruh Monsun Timur Laut (sekitar Nov–Mar) yang membawa kelembapan dan hujan lebih sering; pada fase basah ini, PM2.5 rata-rata cenderung lebih rendah karena pencucian atmosfer, tetapi episode intrusi atau kebakaran regional masih bisa memunculkan puncak pendek. Bandung mengikuti musim hujan–kemarau yang serupa (puncak hujan umumnya akhir tahun hingga awal tahun), dengan fase peralihan yang sering memunculkan badai petir sore yang cepat dan intens. Mengikat analisis PM2.5 ke fase musim sangat membantu memisahkan “anomali musiman” dari tren latar.

Curah hujan dan PM2.5 berelasi negatif, tetapi tidak linear. Hujan ringan yang sporadis mungkin tidak menurunkan PM secara berarti jika lapisan bawah tetap stabil dan sumber emisi lokal aktif; sebaliknya, hujan sedang–lebat yang meluas dapat menekan median dan upper tail (p95) secara signifikan. Karena risiko kesehatan banyak dikaitkan dengan paparan puncak, memantau p95 per jam/hari sering lebih informatif dibandingkan rata-rata saja.

Dari sisi operasional, insight ini kami terjemahkan menjadi rekomendasi: pagi–siang adalah window terbaik untuk aktivitas sensitif (olahraga luar ruang, kegiatan sekolah), sementara sore–malam perlu pemantauan lebih ketat pada periode kering atau saat pola angin lemah. Di dashboard, kami tampilkan heatmap diurnal untuk peluang hujan, kecepatan angin, dan PM2.5 sehingga pengguna melihat “jam-jam rawan” seketika.

Untuk menjaga kualitas kesimpulan, pipeline Satu Cuaca menjalankan QC (outlier, de-spike, data completeness) dan normalisasi meteorologi saat mengevaluasi tren. Sensor biaya rendah dikalibrasi melalui co-location—terutama penting pada kelembapan tinggi agar pembacaan PM tidak bias. Evaluasi dilakukan terpisah untuk Bandung (region id) dan Johor (my) agar efek topografi/laut tidak tercampur.

Di bawah ini contoh kueri yang bisa kamu jalankan di database produksi untuk menurunkan pola diurnal. Kueri pertama menghitung rata-rata per jam lokal untuk PM2.5 dan peluang hujan (indikator precip_mm > 0), dipisah region:

-- Bandung (id) vs Johor (my)
WITH wx AS (
  SELECT s.region,
         EXTRACT(HOUR FROM wh.obs_time) AS h,
         (wh.precip_mm > 0)::int AS is_rain
  FROM public.tbt_weather_hourly_history wh
  JOIN public.tbm_station s ON s.station_id = wh.station_id
  WHERE wh.obs_time >= now() - INTERVAL '180 days'  -- rentang analisis
),
aq AS (
  SELECT s.region,
         EXTRACT(HOUR FROM ah.obs_time) AS h,
         ah.pm25
  FROM public.tbt_airquality_hourly_history ah
  JOIN public.tbm_station s ON s.station_id = ah.station_id
  WHERE ah.obs_time >= now() - INTERVAL '180 days'
)
SELECT a.region,
       a.h AS hour_local,
       ROUND(AVG(a.pm25)::numeric, 1)        AS pm25_avg,
       ROUND(PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY a.pm25)::numeric, 1) AS pm25_p95,
       ROUND(AVG(w.is_rain)::numeric, 3)     AS rain_prob
FROM aq a
LEFT JOIN wx w ON w.region = a.region AND w.h = a.h
GROUP BY a.region, a.h
ORDER BY a.region, hour_local;

Untuk pola musiman, kelompokkan per bulan (atau definisikan sendiri fase monsun/hujan–kemarau). Contoh berikut menghitung median PM2.5 dan p95 per bulan, sekaligus rainy fraction:

-- Musiman per bulan
WITH base AS (
  SELECT s.region,
         DATE_TRUNC('month', ah.obs_time) AS mon,
         ah.pm25,
         (wh.precip_mm > 0)::int AS is_rain
  FROM public.tbt_airquality_hourly_history ah
  JOIN public.tbm_station s ON s.station_id = ah.station_id
  LEFT JOIN public.tbt_weather_hourly_history wh
         ON wh.station_id = ah.station_id AND wh.obs_time = ah.obs_time
  WHERE ah.obs_time >= now() - INTERVAL '18 months'
)
SELECT region,
       TO_CHAR(mon, 'YYYY-MM') AS month,
       ROUND(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY pm25)::numeric, 1) AS pm25_median,
       ROUND(PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY pm25)::numeric, 1) AS pm25_p95,
       ROUND(AVG(is_rain)::numeric, 3) AS rainy_fraction
FROM base
GROUP BY region, mon
ORDER BY region, mon;

Akhirnya, nilai praktis bagi pengguna ada pada kombinasi pola ini. Pola diurnal membantu menentukan jam terbaik beraktivitas, pola musiman membantu perencanaan mingguan/bulanan (misalnya kalender sekolah atau jadwal wisata), dan statistik p95 menjaga fokus pada puncak risiko. Dengan pengukuran yang disiplin, kalibrasi yang baik, dan analisis yang peka terhadap konteks lokal, Satu Cuaca dapat mengubah ritme atmosfer Bandung–Johor menjadi keputusan harian yang sederhana dan berguna.