제주 드론 도로영상 지원: DJI 로그 어댑터·분할영상 연속재생·카메라 자동감지·오버레이 개선

- 제주 DJI 시간기반 비행로그(CSV) 파싱 어댑터: 세그먼트 창 정렬, 가상 fps 환산
- 분할 영상(이름 오름차순) 연속재생 + 좌상단 영상목록 콤보(선택 재생), 세그먼트별 드론 로그 재정렬
- KML 다중 파일 병합 파싱: STA 체이니지 측점(71개) + 지장물 신포맷(타입/이름/텍스트박스_색상)
- 시설물 라벨: 지정색 배경 박스 + 흰 글자, 팝업 중앙 정렬, 호버 구간 깜빡임 수정
- 카메라 자동감지(djmd: ZenmuseP1, focal 29.9mm) + <영상명>.camera.json PC 저장/폴더 자동 적용
- Yaw 자동추정(GPS 진행방위 기반) + 라벨 드래그 Yaw 역산 모드
- 스테이션바: GPS 이동거리 진행도(호버 시 정지), 노선밖 거리 표기, 원거리 구조물 마크 제외
- 서버: /api/camera 라우트, ecosystem 포트 54000·제주 데이터 경로
- docs/history: 작업 이력 21건

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 20:58:49 +09:00
co-authored by Claude Fable 5
parent d38b842e8d
commit 84f4921826
32 changed files with 1833 additions and 110 deletions
@@ -0,0 +1,39 @@
# 2026-07-09 Yaw 자동추정 + 드래그 역산 + 카메라값 PC 저장
**소요 시간**: 15분
**Context 사용량**: input 850k / output 8k tokens
## 작업 내용 (요청 3건)
### 1. Yaw 자동 추정 버튼 (2번 방안)
- 카메라 파라미터 패널 'Yaw ±' 아래 **[Yaw 자동추정 (비행경로 기준)]** 버튼
- 알고리즘: 전진 구간(속도≥2m/s)에서 GPS 진행 방위(1초 창 평활) − 짐벌 헤딩 차이 수집
(|차|≥60° 는 옆보기 촬영으로 간주 제외) → **중앙값을 Yaw± 로 설정**
- 실데이터 검증: 세그먼트1 유효 샘플 1889개, 중앙값 **16.3°**
— 사용자가 이전에 수동 튜닝했던 −16.5° 와 거의 일치 (알고리즘·기존 튜닝 상호 검증)
### 2. Yaw 드래그 역산 모드 (3번 방안)
- POI 편집 섹션에 **[🧭 Yaw 보정 — POI를 실제 위치(좌우)로 드래그]** 모드 추가
(편집/세로화각 모드와 상호 배제, 기존 fovMode 패턴 재사용)
- 역산: θ0=atan2(Xc,Zc)(현재 투영각) vs θ1=atan((px*0.5cx0)·sW/f)(드롭 지점 요구각)
`yawOffset += (θ0−θ1)`. |Δ|>45° 는 오조작으로 거부
- 게이팅(커서/히트/팝업/드래그 피드백) 4곳에 yawMode 연결
### 3. 카메라값 저장: 서버 → **사용자 PC 다운로드**
- 📷 줄 버튼 '서버에 저장' → **[PC에 저장]**: 현재 파라미터 전체(Yaw± 보정 결과 포함)를
`<영상이름>.camera.json` 으로 브라우저 다운로드
- 받은 파일을 영상 폴더에 넣으면 폴더 선택 시 최우선 자동 적용(기존 로더 그대로)
- 서버 라우트(/api/camera)는 유지하되 UI 에서는 미사용
## 검증
- tsc+vite 빌드 통과, 새 번들(index-D5ltlp17.js) 서빙
- Yaw 자동 추정 실데이터 시뮬레이션 −16.3° (수동값 −16.5° 부합)
## 사용 흐름 (사용자 안내)
1. [Yaw 자동추정] → 대략 정렬 2. [🧭 Yaw 보정] 모드에서 라벨 하나를 실제 지물로 드래그 → 미세 조정
3. [PC에 저장] → 받은 `<영상이름>.camera.json` 을 영상 폴더로 이동 → 이후 폴더 선택만으로 적용