# 2026-07-13 KML 선형중심선(LineString) 로딩

**소요 시간**: 8분
**Context 사용량**: input 950k / output 4k tokens

## 요청

제주_중산간도로.kml 로딩 — 측점(STA 71)·지장물은 이미 로딩 중이므로,
유일하게 미사용이던 **선형중심선(LineString)** 을 로딩해 사용.

## 수정 내용

### client/src/utils/geoData.ts
- `parseKmz`: Placemark 의 LineString 지오메트리를 중심선 폴리라인으로 수집
  (연속 중복 정점 제거, 한국 범위 좌표만, 여러 개면 가장 긴 것). 반환에 `centerline` 추가
- `loadFolderGeoData`: 중심선 소스 우선순위 — **KML 선형중심선(146정점, 실제 도로 곡선)**
  → 없으면 기존 측점 폴리라인(100m 간격 직선 연결)

### client/src/components/overlay/StationOverlay.tsx
- 선형(중심선) 오버레이 투영 시 **표고 미상(z≤0) 정점을 '경로 표고' 평면에 앵커** —
  기존엔 z=0(해수면) 그대로 투영되어 실제 도로와 크게 어긋났음(측점/POI 라벨과 동일 기준으로 통일)

## 효과

- 선형 ON 시 곡선 구간에서 각지지 않는 실제 도로 선형 표시(146정점 vs 측점 71개 직선 연결)
- 측점 라벨 스냅(nearestCL)도 더 정밀한 선형 기준으로 동작
- 콘솔: `[KMZ] POI 33 · 구조물 3 · 측점 71 · 중심선 146점 로드(원본)` + `[geo] 중심선: KML 선형중심선 146점 사용`

## 검증

- tsc+vite 빌드 통과, 새 번들(index-Cc-unyK5.js) 서빙
- 참고: 폴더에 사용자가 저장한 DJI_20260629121835_0002.camera.json 확인됨 — 폴더 선택 시 자동 적용됨

## 다음 단계 참고

- 스테이션바의 체이니지 투영(stationLine)은 여전히 측점 기반(km 값 필요) — 변경 없음
