# 기상청 3차원 객관분석 기상 데이터 추출 및 바람 벡터 검증 시스템
> **KMA 3D Objective Analysis Grid Data Extraction & Wind Vector Verification System**

---

## 📌 프로젝트 3줄 요약
1. **정밀 격자 매핑**: 기상청(KMA) 3차원 객관분석 데이터(NetCDF)의 500m 해상도 격자망 내에서 대상 위·경도와 가장 근접한 주변 3x3 실제 격자점을 찾아 정확하게 맵핑합니다.
2. **고속 데이터 파이프라인**: 스레드 풀(Thread Pool) 멀티스레딩 방식을 채택하여, 5분 간격의 미세 기상 연속 데이터를 누락 없이 신속하게 추출 및 병합합니다.
3. **바람 벡터 과학적 검증**: 관측 기상 변수인 10분 평균 풍향/풍속 데이터와 물리적 동서(U)/남북(V) 바람 성분 데이터를 수학적으로 상호 역산(Vector Decomposition & Reconstruction)하고 오차 분석을 통해 기상청 API 산출식의 정밀도를 정량 검증합니다.

---

## 📖 프로젝트 배경 (KMA 3D Objective Analysis)
기상청의 **3차원 객관분석 기술**은 지상 관측, 위성, 레이더, 수치예보 모델 등 다양한 이기종 기상 관측자료를 공간적으로 통합하여 격자점 형태로 최적의 가치를 산출하는 첨단 기술입니다. 

본 프로젝트는 기상청 수치분석 시스템의 결과물인 NetCDF 격자망 파일(`sfc_grid_latlon.nc`)과 수치 변수 추출 API(`sfc_nc_var.php`)를 유기적으로 연계하여, 기상 서비스 신뢰성과 바람장 수치 모델의 유효성을 실증적으로 규명하기 위해 개발되었습니다.

---

## ⚙️ 프로젝트 핵심 모듈 구성
본 시스템은 총 4개의 핵심 데이터 파이프라인으로 구성되어 있습니다:

```mermaid
graph TD
    A[sfc_grid_latlon.nc 격자망 로드] --> B[verify_grid.py: 위/경도 기반 3x3 인접 격자점 정밀 탐색]
    B --> C[extract_continuous_data_fast.py: 멀티스레딩 기반 5분 간격 기상 연속 추출 API 연동]
    C --> D[verify_wind_vectors.py: 풍향/풍속 & U/V 성분 역산 검증]
    C --> E[analyze_relative_error.py: 바람 성분별 절대/상대/벡터 복합 오차율 정량화]
    C --> F[plot_weather_data.py: 온도/이슬점/풍속 시계열 & 관심 타임스탬프 하이라이팅 시각화]
```

1. **격자 좌표계 매핑 및 시각화 (`verify_grid.py`, `visualize_grid.py`)**
   - 대상 정밀 위도/경도를 기준으로 유클리드 거리를 측정하여 가장 근접한 기상청 수치 격자망 인덱스를 탐색합니다.
   - 격자망 공간을 가시화하고 실측된 9개 격자점의 절대 좌표를 추출하여 저장합니다.

2. **멀티스레드 기반 데이터 고속 추출 (`extract_continuous_data_fast.py`)**
   - 단일 스레드로 장기간(4월 1일 ~ 5월 7일) 5분 주기의 방대한 데이터를 수집할 때 발생하는 지연을 극복하기 위해 `ThreadPoolExecutor`를 구현(스레드 5개 병렬 동작).
   - API 네트워크 로드를 조율하며 전체 데이터를 고속으로 병합 정렬하여 로컬 CSV로 저장합니다.

3. **바람 벡터 과학적 역산 검증 (`verify_wind_vectors.py`, `analyze_relative_error.py`)**
   - 풍향(Degrees)과 풍속(m/s)을 삼각함수 기반 기상학적 공식($U = -WS \cdot \sin(\theta)$, $V = -WS \cdot \cos(\theta)$)을 통해 U(동서), V(남북) 벡터 성분으로 분해합니다.
   - 복원된 U/V 계산값과 API 제공 실측값을 매칭하여 오차율을 분석합니다.

4. **다중 차트 기반 기상 시계열 시각화 (`plot_weather_data.py`)**
   - `Matplotlib`를 활용하여 2중 축 그래프를 구현합니다. (좌측 축: 기온 및 이슬점 온도 변화, 우측 축: 풍속 변화)
   - 특정 주요 시점(`visible-times.txt`) 정보를 동적으로 파싱하여 그래프 상에 굵은 빨간색 수직 실선으로 매핑함으로써 데이터 분석의 가시성을 향상시킵니다.

---

## 📈 주요 연구 성과 및 오차 분석 결론
- **바람 벡터 성분 정합성 검증 완료**: U(동서), V(남북) 벡터의 역산값과 API 원천 데이터를 전수 조사한 결과, 평균 절대 오차가 **0.05 m/s 미만**으로 분석되었습니다. 이는 데이터 저장 규격의 소수점 반올림 오차(Rounding Error)에 해당하며, 기상청 API의 수학적 정밀함과 바람장 물리 모델의 일관성을 실증적으로 규명하였습니다.
- **연속 시계열 데이터 가시성 구축**: 특정 연구 시점(가시성이 저하되거나 특이 기상이 발생한 시점)에 격자 데이터가 어떻게 변화하는지 타임라인 상에 직관적으로 매핑할 수 있는 기틀을 마련하였습니다.
