시스템 아키텍처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                                │ │
│  └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘