Files
GhiVideo_v4/docs/history/2026-07-09_1715_지장물KML-신포맷-파싱.md
T
b23042andClaude Fable 5 84f4921826 제주 드론 도로영상 지원: 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>
2026-07-09 20:58:49 +09:00

52 lines
2.9 KiB
Markdown

# 2026-07-09 지장물 KML 신포맷 파싱 (다중 KML + 라벨 색상)
**소요 시간**: 13분
**Context 사용량**: input 300k / output 8k tokens
## 문제
새로 받은 `제주_중산간도로_지장물.kml`(구글어스 Pro에서 CSV 변환, 지장물 33개)의
좌표/라벨 색상이 화면에 표시되지 않음.
## 원인
1. **parseKmz 가 KML 을 1개만 읽음**`files.find(...)` 라 폴더에 KML 이 2개(측점 KML + 지장물 KML)면
첫 파일만 파싱되고 지장물 KML 은 통째로 무시됨 (핵심 원인)
2. 신포맷은 폴더(교량/터널 등) 구분이 없고 Placemark 직속 + Schema
(`타입/타입상세/텍스트박스_색상/이름/연장/X/Y/높이`) — 기존 desc HTML 표 기반 분기와 불일치
3. 라벨 색상 개념이 렌더러에 없음 — 캔버스 라벨이 고정색(#64c8ff) 단일
## 수정 내용
### client/src/utils/geoData.ts
- **parseKmz 다중 파일 병합**: 폴더 내 모든 .kml/.kmz 를 순회 파싱해 pois/structures/stations 병합
(파일 단위 실패는 경고 후 건너뜀)
- **신포맷(지장물 스키마) 브랜치**: `타입` SimpleData 존재로 감지 —
- title=`이름`(폴백 name), category=`타입`(교차로/도로/교량/강.하천/마을/산/지장물/지장물L)
- 좌표는 SimpleData X/Y(저정밀)가 아닌 **Point coordinates(고정밀)** 사용
- `높이`는 표고가 아닌 구조물 높이 → z=0 유지(팝업 props 로만 노출)
- 타입 교량/터널은 구조물(스테이션바·노선패널 마크)로도 중복 등록 (연장→lengthM)
- **라벨 색**: `텍스트박스_색상` 한국어명(검정/남색/빨강/연두/주황/초록/파랑 등 13색) → CSS 매핑,
없으면 인라인 IconStyle 색(KML aabbggrr → #rrggbb) 폴백 → `GeoPoint.labelColor`
### client/src/types/geo.ts
- `GeoPoint.labelColor?: string` 추가
### client/src/components/overlay/StationOverlay.tsx
- labelColor 를 poiCand → poiMarkers(라벨 캐시) → 캔버스 렌더로 전달
- 십자 마커·라벨 텍스트를 지정 색으로 렌더, 어두운 색(검정·남색)은 외곽선을 밝게 반전(가독성)
- CATEGORY_EMOJI 확장: 교차로🚦 도로🛣️ 강.하천🌊 마을🏘️ 산⛰️ 지장물L🏢
## 검증
- tsc+vite 빌드 통과, 54000 포트 새 번들(index-CLmojEn3.js) 서빙
- 지장물 KML 데이터 검증: 33개 전부 파싱, 색상 매핑 33/33, 교량 3건 구조물 중복 등록,
좌표 불량 0 (Point coordinates 고정밀 사용)
- 기존 측점 KML(STA 71개)과 병합 로드 확인 (다중 KML)
## 다음 단계 참고
- 신포맷 감지 키는 `타입` SimpleData — 회덕 desc표/STA 스키마와 충돌 없음
- styleUrl(#pointStyleMap1) → StyleMap 참조 해석은 미구현 (인라인 Style 이 항상 존재해 불필요)
- 색상명 미정의 시(예: 새로운 색 이름) 인라인 IconStyle 색 폴백 → 그것도 없으면 기본 하늘색