Skip to content

Repository files navigation

🌤️ 대한민국 8개 주요 지역 실시간 기상 & 미세먼지 예보 대시보드

스마트하고 한눈에 들어오는 맞춤형 기상 통합 대시보드
기상청 초단기실황, 초단기예보, 단기예보 및 에어코리아 미세먼지 측정 데이터를 자동 수집·통합하여 실시간으로 표출합니다.


📌 주요 특징 (Key Features)

  • 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대 공공 데이터 통합 수집:
    1. 기상청 초단기실황 (T1H, PTY, RN1, WSD, VEC, REH)
    2. 기상청 초단기/단기예보 (SKY, PCP, TMN, TMX)
    3. 에어코리아 실시간 미세먼지/초미세먼지 (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에 자동 저장하고 우측 상단 원형 아이콘 버튼으로 즉시 전환 지원
  • 스마트폰 모바일 반응형: 모바일 화면에서도 깨짐 없이 가시성을 극대화한 반응형 레이아웃

📍 8개 주요 지역 관측소 정보 (Target Regions)

지역명 1차 메인 관측소 2차 백업 관측소 핀포인트 위치 및 기상특보 구역
양평 양평읍 가평읍 양평 서부 (노도성당)
경산 시지동 만촌동 경산 (제광파종기)
사천 사천읍 향촌동 사천 (후전삼거리)
함안 가야읍 내서읍 함안 (국군복지단 충무마트)
성주 성주군 다사읍 성주 (초전면)
세종 아름동 조치원읍 세종 북부 (세종레스텔 - 연서면)
계룡 엄사면 논산 계룡 (품안마을아파트)
임실 임실읍 삼천동 임실 (충경신병교육대)

💡 공공데이터포털 API vs 기상청 날씨누리 데이터 차이점 & 원인 비교

본 프로젝트는 공공데이터포털(apis.data.go.kr) 오픈 API를 활용하여 수치예보 데이터를 수집합니다. 기상청 공식 웹사이트인 날씨누리(weather.go.kr) 표기 수치와 일부 차이가 발생할 수 있으며, 그 주요 원인 및 차이점은 다음과 같습니다.

1. 주요 항목별 데이터 산출 차이

구분 공공데이터포털 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) 연동 에어코리아 및 기상청 내부 통합 연동 데이터

2. 수치 차이의 근본적 원인

  1. 원시 예보 데이터(Raw Grid Data) vs 예보관 가공 종합 서비스

    • 공공데이터포털 API: 기상청 수치예보 모델(LDAPS/RDAPS 등)이 수계 계산한 원시 격자예보 데이터를 제공합니다.
    • 기상청 날씨누리: 원시 예보 수치에 기상청 방재예보관의 정성적 보정 + 인근 실시간 기상관측장치(AWS) 실황 + 체감온도/열지수를 종합 가공한 최적의 화면을 표기합니다.
  2. 당일 일일 누적 강수량 시간별 합산 보존 시스템

    • 기상청 초단기실황 API(RN1)는 최근 1시간 강수량만 반환되는 특성이 있어 비가 그치면 수치가 사라집니다. 본 대시보드는 당일 시간대별(hourly_rn1) 강수 기록을 자동 합산 및 보존하여 하루 동안 발생한 실제 누적 강수량이 24시간 정확하게 유지되도록 처리되어 있습니다.
  3. 24시간 최저/최고 기온 산출 로직 적용

    • 기상청 단기예보 API의 TMN(06시) 및 TMX(15시) 고정 시각 수치 외에도, 강수나 기온 급변으로 최고 기온이 13~14시에 형성되거나 최저 기온이 밤 23시에 형성되는 기상 상황에 대비하여 오늘 24시간 전체 시간별 기온(TMP)과 실황 기온(T1H)을 통합 계산하여 실제 최저/최고 기온이 왜곡되지 않도록 수집 로직이 고도화되어 있습니다.
  4. 기상청 공식 계절별 체감온도 산출 및 폭염특보 연동

    • 기상청 초단기실황 API의 실시간 기온(T1H), 상대습도(REH), 풍속(WSD) 데이터를 활용하여 대한민국 기상청(KMA) 고시 공식 산출식을 자동 적용합니다.
    • 여름철 (5월~9월 또는 기온 ≥ 20℃): Stull 습구온도($T_w$) 기반 습도 체감온도 공식을 적용합니다. 높은 상대습도로 인해 실제 기온이 28~29℃이더라도 체감온도는 33℃/35℃ 이상으로 급상승할 수 있으며, 이는 기상청 폭염주의보/경보 발효 기준이 됩니다.
    • 겨울철 (10월~4월 또는 기온 ≤ 10℃ & 풍속 ≥ 1.3m/s): WMO/JAG/TI 바람 체감온도 공식을 적용하여 한파 대처에 활용합니다.

📜 Copyright

Copyright © Maj.cjh All rights reserved.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages