표고 체계 정비·설정 파일 단순화·선형 클리핑·시연 준비

- 타원체고 기준 자동 변환: route.json ellipsoidal_height 선언 시 드론 고도(CSV 정표고)를
  영상 메타(djmd 6.6 타원체고)와의 차(지오이드고 자동 산출)만큼 보정, 세그먼트 전환에도 유지
- KML 표고 파이프라인: 좌표 고도(z) 사용(POI/측점), *_byDem.kml 자동 생성(DEM 조회·높이 속성 포함)
  + 로더의 _byDem 우선 규칙, 선형중심선(LineString) 로딩·경로표고 앵커
- 설정 파일: camera.json/display.json/route.json 단순 이름 인식, 화면표시 옵션 PC 저장/자동 적용,
  초기화 버튼을 환경설정 파일 기준 복원으로 변경, 저장 파일명 단순화
- 선형 표시: 표출된 마지막 측점까지 클립(경계 세그먼트 절단 + 관통 현 처리 — 구간 실종 수정)
- 스테이션바: 시점(0k000) 마크(실통과 위치), 노선밖 프레임 통과 오인 방지, 커서 배지 1m 단위,
  배너 연장/소요 실측값(측점 체이니지·영상 길이 합) 우선
- 세그먼트 전환 라벨 깜빡임 구조 수정(캐시 초기화·최근접 키 조회·이중 재계산 제거) +
  사전계산 프레임 불변값 호이스팅(재생 지연 해소)
- UI: 슬라이더/값 입력칸 휠 조절, 패널 버튼 위치 정렬, 저장 버튼 중복 제거, dev_mode(route.json)로
  영상제어 UI 표시 제어, 지오이드 최대 200, 이격거리 측점 동반 적용
- 시연: start-demo.bat + docs/DEMO.md
- docs/history: 작업 이력 30건

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 20:37:46 +09:00
co-authored by Claude Fable 5
parent 84f4921826
commit 7d51ba9945
53 changed files with 1708 additions and 104 deletions
@@ -0,0 +1,36 @@
# 2026-07-13 타원체고 기준 자동 변환 (datum 통일)
**소요 시간**: 12분
**Context 사용량**: input 2570k / output 6k tokens
## 요청
지물(측점/지장물) 데이터가 타원체고 기준일 때, 그 기준으로 맵핑을 맞출 수 있는지 → 구현.
## 원리
- 드론 **타원체고**가 영상 메타(djmd 필드 6.6, mm)에 프레임별 기록됨: 174.42m
- CSV 고도는 **정표고**: 148.36m → 차이 26.06m = **그 지점의 지오이드고** (자동 산출 가능)
- 타원체고 데이터셋이면 드론 고도에 이 값을 더해 지물 z(타원체고)와 기준 통일
→ 지오이드/offZ 수동 보정 불필요
## 구현
- **cameraMeta.ts**: djmd 6.6 → `DetectedCameraInfo.ellipsoidalAltM` 추출 (0~10km 범위 검증)
- **geoData.ts (loadFolderGeoData)**: route.json `routeInfo.ellipsoidal_height` 가 선언된 폴더 =
타원체고 기준 데이터셋 신호 → `altitudeOffsetM = djmd 타원체고 CSV 정표고` (|값|<60m 검증)
를 모든 드론 프레임 altitude 에 가산. FolderGeoData/geoStore 에 오프셋 보존
- **geoStore.loadSegment**: 세그먼트 전환 재파싱 프레임에도 동일 오프셋 적용
- 정표고(DEM) 데이터셋(ellipsoidal_height 없음)은 오프셋 0 — 기존 동작 무변화
## 검증
- 실파일: djmd 174.42 CSV 148.36 = 26.06m 자동 산출 ✓ (제주 지오이드고와 부합)
- 경로 1-3 route.json 에 ellipsoidal_height(100.823) 존재 확인 → 해당 폴더 자동 발동
- tsc+vite 빌드 통과, 새 번들(index-D4bVLsb9.js) 서빙
## 사용 안내
- 타원체고 기준 폴더: route.json 에 `ellipsoidal_height` 만 있으면 자동 변환 —
지오이드 0/offZ 0 으로 두고 지면고도 모드 사용 권장
- 콘솔 로그: `[geo] 타원체고 기준 데이터셋 — 드론 고도를 타원체고로 변환 (+26.06m …)`