제주 드론 도로영상 지원: 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:
@@ -0,0 +1,51 @@
|
||||
# 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 색 폴백 → 그것도 없으면 기본 하늘색
|
||||
Reference in New Issue
Block a user