시스템 아키텍처DEMO
위성 원격탐사 데이터가 어떻게 수집·처리·시각화되어 사용자에게 전달되는지의 전체 흐름.
1. 데이터 수집·처리 파이프라인
┌─────────────────────────────────────────────────────────────────┐
│ ① 위성 / 드론 원격탐사 데이터 (Raw) │
│ ───────────────────────────────────── │
│ Sentinel-2 (10m, 광학) ─┐ │
│ Landsat 8/9 (30m, 열적외) ─┤ │
│ MODIS Terra (250m, 일 단위) ─┼─► HDF5/GeoTIFF 저장 │
│ GPM IMERG (0.1°, 30분 강수) ─┤ │
│ 드론 RGB+TIR (5cm·1m) ─┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ② 전처리 (Backend ETL) │
│ - 방사·기하 보정 │
│ - 클라우드 마스킹 │
│ - NDVI / NDWI / NDMI 산출 │
│ - METRIC ET (에너지 균형) │
│ - 시·공간 격자 재투영 (EPSG:4326) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ③ 자료동화 + AI 모델 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ LSM (VIC) │+ │ AI (LSTM) │= │ EnKF 100 │ │
│ │ 물리 모델 │ │ 패턴 학습 │ │ 융합 앙상블 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ④ API 계층 (FastAPI · Redis) │
│ GET /grid?layer=ndvi&date=2024-08-15 │
│ GET /timeseries?lat=35.8&lon=126.9 │
│ GET /events?type=drought&from=2024-06-01 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ⑤ Frontend (Next.js + MapLibre + Canvas) │
│ - 한반도 raster 오버레이 (이 페이지의 메인 지도) │
│ - 시계열 차트 / 통계 요약 │
│ - 재해 알람 마커 │
└─────────────────────────────────────────────────────────────────┘2. 기술 스택
데이터 수집·저장
- ▸위성 API (Earthdata, Copernicus)
- ▸GeoTIFF / HDF5
- ▸PostgreSQL + PostGIS
- ▸TimescaleDB (시계열)
- ▸MinIO / S3 (오브젝트)
Backend · 처리
- ▸Python 3 + FastAPI
- ▸rasterio · xarray · numpy
- ▸Celery + Redis (큐)
- ▸LightGBM · PyTorch (AI)
- ▸Docker · Kubernetes
Frontend · API
- ▸Next.js 15 + React 19
- ▸MapLibre GL + Canvas
- ▸Zustand 상태관리
- ▸REST + GraphQL
- ▸WebSocket (실시간 알람)
3. 컨테이너 / 배포 구조
┌─────────────────────── Nginx (TLS, gzip) ─────────────────────┐ │ │ │ hydro.oceanmap.store → docker hydro_web :3030 │ │ │ │ ┌──────── docker compose.hydro ──────────────────────────┐ │ │ │ hydro_web (Next.js 15 + MapLibre) │ │ │ │ - 한반도 raster 오버레이 │ │ │ │ - 합성 / NASA GIBS 실제 위성 토글 │ │ │ │ - 드론 ↔ 위성 비교 swiper │ │ │ └─────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘