# 2026-07-09 드론 카메라 자동 감지 + 라벨 박스 스타일 + 영상목록 콤보 **소요 시간**: 16분 **Context 사용량**: input 430k / output 12k tokens ## 작업 내용 (요청 4건) ### 1. 드론 카메라 정보 자동 감지 → 카메라 파라미터 적용 (POI 매핑 어긋남의 핵심 원인) DJI MP4의 `djmd` 데이터 트랙(프레임별 protobuf 텔레메트리)을 분석해 필드 구조 해독: | 필드 | 내용 | 제주 값 | |------|------|--------| | 1.1.2 | 카메라 모델 | **DJI ZenmuseP1** (풀프레임 측량 카메라) | | 1.7 / 1.6 / 1.8 | 해상도 / fps | 3840×2160 / 59.94 | | 6.4 / 6.5 / 6.6 | 위경도(라디안) / 타원체고(mm) | 33.40°/126.29°/174.4m | | **8.6** | **초점거리 (0.1mm, 35mm 환산)** | **299 → 29.9mm** | - 기존 기본값 24mm vs 실제 29.9mm(DL 24mm 렌즈 × 4K 비디오 크롭 ≈1.25) → FOV 과대 → POI 어긋남 - `client/src/utils/cameraMeta.ts` 신규: 브라우저에서 영상 File 앞 8MB를 읽어 djmd 첫 샘플 파싱 (모델 문자열 탐색 → 샘플 경계 역추적 → protobuf 필드 수집). 실파일 검증 완료 - `loadFolderGeoData`: 감지 정보를 FolderGeoData/geoStore(cameraInfo)에 적재, 드론 프레임 focalLen에도 반영 - StationOverlay: **저장된 보정(localStorage calib)이 없는 데이터셋은 감지 focal 자동 적용**, 카메라 파라미터 패널에 "📷 모델 · 초점 · fps" 표시 + **[적용] 버튼**(수동 적용 — 이미 튜닝한 데이터셋은 자동 적용을 건너뛰므로 이 버튼 사용) ### 2. '드론 높이와 POI 이격거리' 슬라이더 최대값 120 → 300 ### 3. 영상목록 → 좌상단 타이틀 아래 콤보 드롭다운 - 우하단 패널/하단 버튼 제거 → 노선 배너(타이틀) 아래 `left:8, top:paramTop` 콤보 버튼 (현재 파일명 + n/m + ▼). 클릭 시 목록이 아래로 펼쳐지고 선택 시 즉시 전환·접힘 - RoutePanel이 paramTop+40부터 시작해 겹침 없음 ### 4. POI 라벨: 십자/아이콘 제거, 지정색 배경 + 흰 글자 - 캔버스 렌더를 "텍스트 박스"로 변경: 배경 = KML 텍스트박스_색상(라운드 사각형), 글자 = 흰색 - POI 지점에 가로 중앙 정렬, 히트박스도 박스 영역으로 갱신 ## 검증 - tsc+vite 빌드 통과, 54000 포트 새 번들(index-Bn6Gs0g2.js) 서빙 - 카메라 감지 알고리즘을 실파일 앞 8MB로 재현 검증: ZenmuseP1 / 29.9mm / 3840×2160@59.94 정확 추출 ## 다음 단계 참고 - **이미 캘리브레이션이 저장된 데이터셋(이번 세션에서 슬라이더 만진 경우)은 focal 자동 적용이 건너뛰어짐** → 카메라 파라미터 패널의 [적용] 버튼으로 29.9mm 반영 필요 - djmd 6.x(위경도 라디안/타원체고)는 CSV보다 정밀한 포즈 소스 — 향후 CSV 대체 후보 - 8.8(변화 필드)은 포커스 거리로 추정 — 미사용