스마트하고 한눈에 들어오는 맞춤형 기상 통합 대시보드
기상청 초단기실황, 초단기예보, 단기예보 및 에어코리아 미세먼지 측정 데이터를 자동 수집·통합하여 실시간으로 표출합니다.
- 8개 주요 지역 정밀 예보 & 핀포인트(Pinpoint) 특보 매칭: 양평(노도성당 - 양평 서부), 세종(세종레스텔 - 세종 연서면/북부) 등 8개 타겟 지역의 핀포인트 격자 좌표 및 특보 세부 구역 기반 날씨 표출
-
📅 양평 지역 주간 기상예보 (개황, 기온, 풍향/풍속) 팝업: 메인 표와 분리된 독립 파일(
data/weather_yangpyeong_weekly.json)을 수집하고, 메인 표 하단 [양평] 열 바로 아래주간예보버튼 클릭 시 날짜별 개황(이모지), 최저/최고 기온, 풍향/풍속이 정돈된 가로-세로 피벗 주간 예보 모달 팝업 표출 -
🩺 종합 공공데이터 API 실시간 데이터 진단 시스템: 5개 주요 공공데이터 API (기상특보, 초단기실황, 초단기예보, 단기예보, 에어코리아)의 상태와 핑 속도를 점검하는 종합 진단 스크립트(
scripts/diag_all_api.py) 및data/api_diag_result.json연동. 대시보드 상단데이터 진단버튼 클릭 시 무장애 모달 팝업으로 5대 API 실시간 응답 상태 표출 - 날씨 이모지 곁들인 동네별 '한줄 기상예보': 8개 지역 수치 데이터(기온, 일교차, 하늘상태, 강수예보, 미세먼지, 기상특보)를 실시간 종합 분석하여 직관적인 날씨 이모지(☀️, ⛅, ☁️, ☔, 😷, 🌡️ 등)와 친근한 한줄 예보 문장 자동 생성
-
당일 일일 누적 강수량 시간별 합산 & 보존: 기상청 초단기실황(
RN1)을 당일 시간대별(hourly_rn1)로 합산 보존하여, 비가 그치더라도 하루 동안 내린 당일 총 누적 강수량이 리셋 없이 24시간 정확히 표출 (자정에 자동 초기화) -
미세먼지 점검 중 커스텀 글래스 툴팁 UI: 에어코리아 측정소 점검으로 인한
-표시 마우스 오버 시 투박한 브라우저 네이티브 툴팁 대신 대시보드 테마와 어우러지는 모던 글래스모피즘 툴팁 말풍선 표출 - 지역명 헤더 💬 툴팁 UI & 개황 셀 그래픽 표현: 지역명 옆 💬 버튼 호버/터치 시 글래스모피즘 기반 한줄 기상예보 툴팁 카드가 깔끔하게 표출되며, 개황 셀에도 날씨 이모지 시각 표현 적용
-
3대 공공 데이터 통합 수집:
- 기상청 초단기실황 (
T1H,PTY,RN1,WSD,VEC,REH) - 기상청 초단기/단기예보 (
SKY,PCP,TMN,TMX) - 에어코리아 실시간 미세먼지/초미세먼지 (
PM10,PM2.5) 및 1차 측정소 점검 시 2차 백업 관측소 자동 전환 (Fallback)
- 기상청 초단기실황 (
-
기상청 공식 계절별 체감온도 산출: 여름철 Stull 습구온도(
$T_w$ ) 기반 습도 체감온도 공식, 겨울철 WMO/JAG/TI 바람 체감온도 공식을 자동 적용하여 기온 셀 내 실시간 체감온도 통합 표출 -
기상특보 정밀 파싱 & 동일 계열 특보 단일화: 현시간 발효 특보 및 발효 예정 특보(
발효시각표시)를 파싱하며, 폭염경보+폭염주의보 등 동일 계열 중복 특보는 상위 특보로 자동 정돈하여 가독성 제공 -
일일 예상 강수량 (다음날 9시까지) 확장: 현재 시각부터 다음날 오전 09:00까지의 예상 강수 시간대별 강수량 표출 (
(내일)라벨 구분) - API 타임아웃 20초 & 재시도 3회 강화: 공공데이터포털 지연에 대비해 API 타임아웃을 20초로 상향하고 최대 3회 자동 재시도를 수행하여 데이터 수집 안정성 극대화
- 30분 간격 자동 수집 워크플로: GitHub Actions를 통해 매시 15분, 45분마다 (30분 간격) 백그라운드 자동 수집·갱신
- 스마트 폴링 & 웹 알림: [지금 갱신] 클릭 시 백그라운드 수집 완료를 자동 감지하여 토스트 및 브라우저 데스크톱 알림 제공
-
다크 / 라이트 모드: 선호도를
localStorage에 자동 저장하고 우측 상단 원형 아이콘 버튼으로 즉시 전환 지원 - 스마트폰 모바일 반응형: 모바일 화면에서도 깨짐 없이 가시성을 극대화한 반응형 레이아웃
| 지역명 | 1차 메인 관측소 | 2차 백업 관측소 | 핀포인트 위치 및 기상특보 구역 |
|---|---|---|---|
| 양평 | 양평읍 | 가평읍 | 양평 서부 (노도성당) |
| 경산 | 시지동 | 만촌동 | 경산 (제광파종기) |
| 사천 | 사천읍 | 향촌동 | 사천 (후전삼거리) |
| 함안 | 가야읍 | 내서읍 | 함안 (국군복지단 충무마트) |
| 성주 | 성주군 | 다사읍 | 성주 (초전면) |
| 세종 | 아름동 | 조치원읍 | 세종 북부 (세종레스텔 - 연서면) |
| 계룡 | 엄사면 | 논산 | 계룡 (품안마을아파트) |
| 임실 | 임실읍 | 삼천동 | 임실 (충경신병교육대) |
본 프로젝트는 공공데이터포털(apis.data.go.kr) 오픈 API를 활용하여 수치예보 데이터를 수집합니다. 기상청 공식 웹사이트인 날씨누리(weather.go.kr) 표기 수치와 일부 차이가 발생할 수 있으며, 그 주요 원인 및 차이점은 다음과 같습니다.
| 구분 | 공공데이터포털 API (본 프로젝트) | 기상청 날씨누리 (weather.go.kr) |
|---|---|---|
| 위치 기준 | 5km × 5km 격자 좌표 (nx, ny) 수치모델 데이터 |
행정동/법정동 단위 대표 관측소(AWS) 지점 매핑 |
| 현재 기온/날씨 | 초단기실황(T1H) 및 초단기예보(SKY, PTY) |
동 단위 무인관측소(AWS) 10분 단위 실시간 측정값 및 합성 데이터 |
| 최저 / 최고 기온 | 오늘 24시간 전체 예보(TMP), TMN(06시), TMX(15시), 실황(T1H) 통합 수치 산출 |
예보관 정성적 보정 수치 + 주간/중기예보 및 체감온도 고려 범위 표기 |
| 누적 / 예상 강수량 | 초단기실황(RN1) 당일 시간별 누적 합산 + 초단기/단기예보(PCP) 조합 수치 |
1시간/3시간 단위 강수 확률(POP, %) 및 범주형 강수량 표기 |
| 미세먼지 | 에어코리아(한국환경공단) 실시간 측정소 및 백업(Fallback) 연동 | 에어코리아 및 기상청 내부 통합 연동 데이터 |
-
원시 예보 데이터(Raw Grid Data) vs 예보관 가공 종합 서비스
- 공공데이터포털 API: 기상청 수치예보 모델(LDAPS/RDAPS 등)이 수계 계산한 원시 격자예보 데이터를 제공합니다.
- 기상청 날씨누리: 원시 예보 수치에 기상청 방재예보관의 정성적 보정 + 인근 실시간 기상관측장치(AWS) 실황 + 체감온도/열지수를 종합 가공한 최적의 화면을 표기합니다.
-
당일 일일 누적 강수량 시간별 합산 보존 시스템
- 기상청 초단기실황 API(
RN1)는 최근 1시간 강수량만 반환되는 특성이 있어 비가 그치면 수치가 사라집니다. 본 대시보드는 당일 시간대별(hourly_rn1) 강수 기록을 자동 합산 및 보존하여 하루 동안 발생한 실제 누적 강수량이 24시간 정확하게 유지되도록 처리되어 있습니다.
- 기상청 초단기실황 API(
-
24시간 최저/최고 기온 산출 로직 적용
- 기상청 단기예보 API의
TMN(06시) 및TMX(15시) 고정 시각 수치 외에도, 강수나 기온 급변으로 최고 기온이 13~14시에 형성되거나 최저 기온이 밤 23시에 형성되는 기상 상황에 대비하여 오늘 24시간 전체 시간별 기온(TMP)과 실황 기온(T1H)을 통합 계산하여 실제 최저/최고 기온이 왜곡되지 않도록 수집 로직이 고도화되어 있습니다.
- 기상청 단기예보 API의
-
기상청 공식 계절별 체감온도 산출 및 폭염특보 연동
- 기상청 초단기실황 API의 실시간 기온(
T1H), 상대습도(REH), 풍속(WSD) 데이터를 활용하여 대한민국 기상청(KMA) 고시 공식 산출식을 자동 적용합니다. -
여름철 (5월~9월 또는 기온 ≥ 20℃): Stull 습구온도(
$T_w$ ) 기반 습도 체감온도 공식을 적용합니다. 높은 상대습도로 인해 실제 기온이 28~29℃이더라도 체감온도는 33℃/35℃ 이상으로 급상승할 수 있으며, 이는 기상청 폭염주의보/경보 발효 기준이 됩니다. - 겨울철 (10월~4월 또는 기온 ≤ 10℃ & 풍속 ≥ 1.3m/s): WMO/JAG/TI 바람 체감온도 공식을 적용하여 한파 대처에 활용합니다.
- 기상청 초단기실황 API의 실시간 기온(
Copyright © Maj.cjh All rights reserved.