- 제주 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>
45 lines
2.3 KiB
Markdown
45 lines
2.3 KiB
Markdown
# 2026-07-09 스테이션바 진행도 — 드론 정지 시 커서 정지 (이동거리축 폴백)
|
|
|
|
**소요 시간**: 10분
|
|
**Context 사용량**: input 240k / output 5k tokens
|
|
|
|
## 문제
|
|
|
|
드론이 이동을 멈췄는데(호버링) 하단 스테이션바 커서는 계속 증가.
|
|
|
|
## 원인
|
|
|
|
StationBar의 진행도 축(chainRef: 시간→누적 이동거리 비율)은 **측점 폴리라인 체이니지 기반**으로만
|
|
구성됨 (`frames + stations + stationLine` 필요). 제주 데이터셋은 측점이 없어 `ready=false`
|
|
→ `cumFracAtTime`이 **시간 선형 폴백**(`t / duration`) 사용 → 드론이 멈춰도 커서는 시간 비례로 전진.
|
|
|
|
실데이터 확인: 세그먼트 2에서 드론이 t=8~128s(120초), t=178~198s 두 번 호버링 —
|
|
사용자가 관측한 구간과 일치.
|
|
|
|
## 수정 내용 — client/src/stationbar/StationBar.tsx
|
|
|
|
- precompute useEffect에 **측점 없음 폴백** 추가: 드론 프레임만 있으면 GPS(위경도)를
|
|
±8프레임 이동평균으로 평활 후 프레임 간 수평거리 누적 → 정규화(frac)해 chainRef 구성.
|
|
측점 기반 기능(배지/구간색/구조물 마크)은 기존대로 ready=false 비활성 유지
|
|
- `cumFracAtTime` / `timeAtFrac` 가드에서 `!ready` 제거 — chainRef 존재 여부만 확인
|
|
(폴백 chainRef도 사용). 바 클릭 seek도 이동거리축 역변환으로 동작
|
|
- depChain/arrChain은 방향색 전용이라 폴백에선 더미(0/1)
|
|
|
|
## 검증 (실데이터 시뮬레이션, 세그먼트 2)
|
|
|
|
| 시점 | 기존(시간선형) | 수정(이동거리) |
|
|
|------|--------------|--------------|
|
|
| t=8s (호버 시작) | 4.1% | 8.0% |
|
|
| t=68s (호버 중) | 34.5% | 8.4% |
|
|
| t=128s (호버 끝) | 65.0% | 9.0% |
|
|
|
|
호버 120초 동안 커서가 사실상 정지(+1.0%p). 세그먼트 2 총 이동거리 460.2m.
|
|
tsc+vite 빌드 통과, 54000 포트 새 번들(index-quVWnwfd.js) 서빙 확인.
|
|
|
|
## 다음 단계 참고
|
|
|
|
- 정지 구간에서 커서가 멈추므로, 그 동안 시간은 흐르는데 커서가 안 움직이는 게 정상 동작
|
|
(좌측 시간 배지는 계속 증가 — 서로 다른 축)
|
|
- 드론이 전 구간 정지(총 이동거리 0)인 극단 케이스는 frac 전부 0 → 커서 시작점 고정
|
|
- 세그먼트 전환(loadSegment) 시 frames 교체 → chainRef 자동 재구성됨
|