# 시간↔측점 대응표 그림 — 단계별 소스 파일 매칭

**소요 시간**: 5분
**Context 사용량**: input 60k / output 4k tokens (추정)

## 질문

`docs/그림_시간측점대응표.png` 그림의 4개 단계(영상 프레임 → 프레임÷fps=시간 / GPS→측점 투영 → 시간↔측점 대응표)에 해당하는 실제 소스 파일이 무엇인지.

## 답변 요약

| 그림 단계 | 파일 |
|-----------|------|
| ① 영상 프레임 + 드론 GPS 기록 (데이터 읽기) | `client/src/utils/geoData.ts` (CSV 파싱), `client/src/store/geoStore.ts` (보관), `client/src/types/geo.ts` (타입) |
| ② 프레임번호 ÷ fps = 시간 | `client/src/utils/timecode.ts` (`frameToSeconds`), `client/src/stationbar/StationBar.tsx` (videoFps 유도 + `f.frame / videoFps`), `client/src/App.tsx:161` (`handleSeek(frame / fps)`) |
| ③ GPS → 측점 (선로에 투영) | `client/src/stationbar/StationBar.tsx` (`projectChainage`, `stationLine`), `client/src/components/overlay/RoutePanel.tsx` (동일 계산), `client/src/utils/chainage.ts` (공유 유틸), 서버측 `server/src/services/geoMatch.ts` |
| ④ 시간 ↔ 측점 대응표 | `client/src/stationbar/StationBar.tsx` (ViewedPoint[] precompute = 대응표 그 자체), `client/src/components/overlay/StationOverlay.tsx` (시간→측점 표시), `client/src/components/geo/GeoSearch.tsx` (측점→시간 검색 이동) |

## 참고

- `utils/chainage.ts` 는 공유 유틸로 존재하나 현재 import 하는 곳이 없음 — StationBar/RoutePanel 이 각자 동일 로직을 내장하고 있음 (통합 여지 있음).
