KMA · NWP · Kakao — Fog & Sangodae Alert PWA Guide

📄 가이드 v4.6 · 2026-05-01

안개 & 상고대
위험도 앱 사용 안내

기상청 예보·Open-Meteo NWP·Kakao 지역 검색을 결합해 안개(연중)상고대(동절기) 발생 가능성을 계산하는 Colorwork 교육원 출사 지원 PWA 안내 문서입니다.

사진가용 출사 판단 앱

앱 개요

개발 배경

기상청 날씨 앱은 '안개'를 직접 알려주지 않습니다. 기온·습도·이슬점 수치를 따로 조합하며 경험으로 판단해야 했던 불편함을 줄이고, 출사 전날 밤 빠르게 안개·상고대 가능성을 확인할 수 있도록 만들었습니다.

두 가지 출사 기회 포착

🌫 안개 연중 — 수변·해안·골짜기 복사안개
🌨 상고대 동절기(11~3월) — 산 정상부 수빙

동작 방식 요약

  • 기상청 단기예보 API: 기온·습도·풍속·운량·강수 예보값 취득
  • Magnus 공식: 이슬점·이슬점차 산출
  • V2 다중시점 분석: 6~8개 시점 트렌드·복사냉각 조건 감지
  • V3 NWP 보강: Open-Meteo 경계층 높이·지형고도·시간대·계절 반영
  • Kakao 지역 검색: 전국 어디든 이름으로 검색 → 좌표 자동 취득
  • Web Push 알람: 안개·상고대 각각 독립 설정 후 서버 자동 발송

이 앱의 수치는 예보값 기반 추정치입니다. 지형·바람길·수면온도 등 예보에 담기지 않는 변수로 실제 발생 여부는 달라질 수 있습니다. 참고 지표로 활용하세요.

🌫 안개 위험도

안개 위험도 판단 기준

80 이상
매우 높음
새벽·수변·저지대·해안 출사 후보로 강하게 검토합니다.
65~79
높음
운해나 옅은 안개 가능성. 현장 확인 가치가 있습니다.
45~64
보통
지형·일출·수면 인접 여부에 따라 달라집니다.
44 이하
낮음
일반적인 시정 상태. 국지 골짜기·저수지는 예외 가능.

점수 산출 요소 (V2 + V3)

요소내용
습도97% 이상 최고 가점. 80% 미만 감점
이슬점차0.8°C 이하 고가점 — 공기 포화 상태
풍속0.8 m/s 이하 안개 유지에 최적. 4 m/s 초과 감점
습도 상승 트렌드예보 구간 습도가 8%p 이상 증가 시 보너스
기온 하강 트렌드예보 구간 기온이 4°C 이상 하락 시 보너스
복사냉각 조건맑은 하늘(SKY≤1.5)·약풍·무강수 동시 충족 최대 +14
BLH (NWP)경계층 높이 200m 이하 +13, 100m 이하 +18
시간대새벽 4~6시 +12, 낮 11~16시 −13
계절봄·가을(3·4·9·10월) +6, 여름(7·8월) −5
지형 유형valley/basin +7, river/lake +5, coastal +4
🌨 상고대(수빙)

상고대 위험도 판단 기준

상고대(霜高臺)는 과냉각 수적(안개·구름 입자)이 영하의 수목·지형에 충돌·결빙하여 형성됩니다. 산 정상부·능선의 주목·전나무 군락에서 주로 관찰됩니다.

필수 조건

① 기온 ≤ 0°C (영하가 아니면 자동 "불가" 판정)
② 상대습도 ≥ 75%
③ 이슬점차 ≤ 5°C (공기 포화에 가까울수록 유리)
80 이상
매우 높음
최적 조건. 일출 1시간 전 현장 도착 권장.
65~79
높음
능선·정상부 주목 군락지 탐색 권장.
45~64
보통
일부 고지대에서 옅은 수빙 관찰 가능.
44 이하
낮음·불가
현재 조건에서 형성 어려움.

점수 산출 요소

요소내용
기온−10~−15°C 최고 38점. −0.5°C 초과 시 0점(불가)
습도98% 이상 최고 30점. 75% 미만 불가
이슬점차0.5°C 이하 +22. 완전 포화 상태 = 구름 속
풍속0.5 m/s 이하 최적. 8 m/s 초과 −14 (결정 파괴)
구름 속 (BLH)BLH < 지형고도 → +15. 과냉각 수적 직접 공급

고도 보정 (자동)

Open-Meteo의 DEM 지형고도(terrainElev)를 자동 취득합니다. 덕유산 향적봉 좌표 입력 시 elevation ≈ 1,610m가 반환되고, NWP 모델이 해당 고도의 기온을 직접 제공합니다. 고도를 수동 입력할 필요가 없습니다.

주요 상고대 명소 (32곳, Kakao로 검색)

덕유산 향적봉 1614m 소백산 비로봉 1439m 태백산 천제단 1567m 계방산 1577m 오대산 비로봉 1563m 설악산 대청봉 1708m 지리산 천왕봉 1915m 한라산 윗세오름 1700m 외 24곳

목록에 없는 산도 Kakao 검색으로 좌표를 취득하면 즉시 계산됩니다.

계절 게이트 — 상고대 탭은 연중 표시되지만, 동절기(11~3월) 외에는 기온 조건으로 자동 "시즌 외" 판정이 반환됩니다. 여름에 실수로 상고대 탭을 열어도 오해 없이 안내됩니다.
Open-Meteo NWP V3

NWP V3 정확도 보강 레이어

기존 Magnus 공식(V1)과 KMA 다중시점 분석(V2) 위에, Open-Meteo 무료 NWP(수치예보모델) 변수를 추가로 반영하는 V3 보강 레이어를 적용합니다. V3 호출 실패 시 V2/V1 결과를 그대로 사용하므로 서비스에 영향이 없습니다.

BLH
경계층 높이

대기 혼합이 일어나는 높이. 낮을수록 수증기 축적 → 안개·상고대에 유리. 100m 미만 시 +18점.

cloud_cover_low
하층운량

맑을수록(≤5%) 야간 복사냉각 강화 → 복사안개·상고대 유리. 80% 이상이면 복사냉각 억제 −8점.

temperature_2m
NWP 기온

DEM 지형고도 반영 기온. 산 정상부 조회 시 실제 고도에서의 기온 제공. 상고대 고도 보정에 핵심 활용.

V3 보강 점수 조정 범위 : BLH +18/+13/+7, 하층운 ±8, 시간대 +12/−13, 계절 ±6, 지형 +7/+5/+4, 강수 중 −10
최종 점수 = MIN(100, MAX(0, V2점수 + V3보정))

※ "세계 최고" 수준의 FogNet 딥러닝·ECMWF 고해상도 NWP·LiDAR는 인프라 비용 문제로 적용 불가합니다. 이 앱은 무료 API 조합으로 가능한 최대 정확도를 달성합니다.

천리안 위성 2A호 · KMA GK2A

기상청 안개 영상 판독법

앱 하단의 위성 영상은 RGB 합성 데이터입니다. 색상으로 지표·구름·안개를 구분합니다.

하늘색 안개 및 하층운. 사진가가 가장 주목할 색상. 강줄기·산 골짜기를 따라 고여 있다면 안개일 가능성이 매우 높습니다.
분홍·빨강 상층운(높은 구름). 안개를 가릴 수 있습니다. 하늘색과 겹치면 안개 확인이 어렵습니다.
초록·노랑 지표면·해수면. 구름·안개 없는 맑은 영역. 복사냉각이 일어나기 좋은 조건입니다.

현장 판독 순서

전체 화면에서 하늘색 영역의 위치와 두께를 확인합니다.
출사 예정지 주변이 초록(맑음)인지 하늘색(안개)인지 확인합니다.
분홍·빨강 상층운이 덮여 있으면 안개가 가려진 상태일 수 있습니다.

위성 영상은 안개 측정 자료가 아닌 참고 자료입니다. 기상청 원본 시각이 바뀔 때만 이미지가 갱신됩니다.

Web Push 자동 알림

안개 알람과 상고대 알람을 각각 독립으로 설정합니다. 지역과 발송 시각, 기준 점수를 별도로 지정할 수 있습니다.

안개 알람 (연중)

기본 설정: 매일 05:00 자동 검사
예시: 안개 위험도 88% — 출사 준비
목포 안개 가능성 높음. 습도 96%, 이슬점차 0.8℃, 풍속 0.5m/s

상고대 알람 (동절기 자동 ON)

기본 설정: 매일 05:10 자동 검사 (동절기 11~3월만 동작)
계절 자동 전환: 11월이 되면 자동 ON, 4월에 자동 OFF (💾 저장 시 수동 모드로 전환)
예시: 상고대 위험도 78% — 출사 준비 🌨
덕유산 향적봉 가능성 높음. 기온 −8.3°C, 습도 94% ☁ 구름 속

알림 등록 순서

PWA 홈 화면 아이콘으로 앱을 엽니다. (Safari 브라우저 직접 접속 시 iOS Push 불가)
알림허용 버튼 → 시스템 팝업에서 허용 선택.
Web Push 등록 버튼 클릭 → "✅ 등록 완료" 토스트 확인.
각 알람(안개·상고대)을 탭하여 펼친 뒤 시각·기준점수·지역 설정 후 💾 저장.
테스트 발송으로 내 기기에만 알림 도착 여부 확인.
테스트 발송 = 내 기기 전용
Web Push 등록 후에만 동작합니다. 등록된 다른 사용자 기기에는 발송되지 않습니다.
자동 알람(크론)은 조건 충족 시 등록된 모든 기기에 발송됩니다.

모바일 PWA 설치 방법

🍎 iPhone / iPad Safari

Safari에서 fog.colorwork.kr 접속
하단 공유 버튼(□↑) 선택
홈 화면에 추가 선택
홈 화면 아이콘으로 앱 실행 후 알림 허용

🤖 Android Chrome

Chrome에서 앱 주소 접속
설치 배너 또는 메뉴 → 홈 화면에 추가
앱 실행 후 알림 허용 → Web Push 등록 진행

PWA로 설치하면 풀스크린 앱처럼 실행되고, 브라우저가 닫혀 있어도 Web Push 알림을 수신합니다.

버전 히스토리

v4.6 2026-05-01 자동 알림 UI 아코디언 재설계 + 안정화 — 안개·상고대 알람 펼침/접힘 아코디언 방식으로 전환, 헤더에 ON·시각·기준% 요약 표시. 테스트 발송이 내 기기에만 가도록 /api/test-push-self 도입(localStorage 기반 subscription 저장). iOS Safari getSubscription() DOMException 완전 우회. 상고대 알람 동절기 자동 ON/OFF(autoSeason 플래그). "처음 설정/지역 변경" 안내 박스 제거. 서비스워커 캐시 버전 v12로 강제 무효화.
v4.5 2026-05-01 알람 패널 구조 개편 — "05:00 자동 안개 알림" 단일 패널에서 상고대·안개 독립 2섹션으로 분리. Web Push 등록·테스트 발송 버튼을 최상단으로 이동. 저장 버튼 아이콘(💾) + 색상 강조. 판단 기준 섹션에 상고대 4단계 나란히 추가. 상단 "테스트 알림" 버튼 제거.
v4.3 2026-05-01 드롭다운 짤림 해결 + 테스트 발송 내 기기 전용화 — backdrop-filter stacking context로 짤리던 지역 검색 드롭다운을 body 포탈 방식으로 전환. 스크롤·리사이즈 시 포탈 위치 자동 재계산. 구버전 sendPushToAll() 테스트 발송을 내 기기 전용 sendPushToOne()으로 교체.
v4.2 2026-05-01 UI 전면 세련화 — 안개|상고대 탭바(컴팩트), 판단기준 섹션 안개·상고대 8칸 나열, 즐겨찾기 칩 폰트 축소, 메인 타이틀 "안개 & 상고대 위험도"로 변경. PC 2컬럼 오른쪽 빈 공간 수정(right-col 래퍼 추가).
v4.1 2026-05-01 가이드 v5 업데이트 — 모바일 PWA 설치 방법을 iPhone/Android 2열 가로 배치로 변경(PC 우측 공백 해소). 상고대 시스템·NWP V3·즐겨찾기 전면 반영. 버전 히스토리 확장.
v4.0 2026-05-01 상고대 시스템 전면 추가 — calculateSangodaeScore() 엔진, DEM 고도 자동 보정, BLH 구름 속 보너스, 동절기 계절 게이트, 전국 32개 산정 목록(Kakao 검색으로 무제한 확장). 안개·상고대 독립 알람 (05:00 / 05:10). 상고대 API 3종 추가. UI에 안개|상고대 탭 추가, 시즌별 기본 탭 자동 전환.
v3.3 2026-05-01 locations.js 완전 제거 — Kakao Local API(KAKAO_LOCAL_KEY) 연동 및 즐겨찾기(☆) 시스템으로 대체. 최대 12개 저장, localStorage 영구 보존. 검색·탭 연동.
v3.2 2026-05-01 버그 수정 — calculateDewPoint() 및 convertToGrid() 함수 선언 누락(서버 배포본 손상) 복구. 문법 오류 2건 수정 후 문법 검사(node --check) 통과.
v3.1 2026-05-01 Open-Meteo NWP V3 보강 레이어 추가 — boundary_layer_height(BLH), cloud_cover_low, dew_point_2m, precipitation, temperature_2m 5개 변수 취득. 시간대 가중치(새벽+12/낮−13), 계절 인자(봄·가을+6/여름−5), 지형 유형 보정(valley/basin+7, river/lake+5, coastal+4). V3 실패 시 V2/V1 자동 폴백.
v3.0 2026-04-30 정확도 1단계 업그레이드 — 단기예보 6~8개 시점 다중 분석(V2), 기온 하강·습도 상승 트렌드 보너스, 복사냉각 조건(맑은 하늘·약풍·무강수) 감지, V2 실패 시 V1 자동 폴백.
v2.3 2026-04-30 검색 결과 최대 6건 제한, 하단 페이드 힌트 + 극세 스크롤바로 UX 개선.
v2.2 2026-04-29 테스트 알림·조건검사·위험도 로드 시 Web Speech API 한국어 음성 안내 추가.
v2.1 2026-04-29 주요 출사지 드롭다운 제거, 검색 버튼 추가 (Enter·버튼·자동 디바운스 3중 지원).
v2.0 2026-04-29 지역 검색 기능 추가 — Vworld API(시·군·읍·면·동) 우선, Nominatim 무료 폴백.
v1.9 2026-04-29 KMA 위성영상 로딩 버그 수정 (서버 재부팅 후 timestamp TDZ 오류).
v1.7 2026-04-26 안내 문서 내 위성 영상 판독 가이드(색상별 의미) 섹션 추가.
v1.5~1.6 2026-04-26 소개 페이지 추가, PWA 설치·업데이트·알림 등록 안내, 버튼 구조 정리.
v1.0~1.4 기본 기능 구축 및 서버 API 최적화, 모바일 UI 보정.