Files
GhiVideo/docs/history/2026-06-25_0909_스테이션바-종점역-대전조차장-누락수정.md
b23042andClaude Opus 4.8 78fc090360 초기 커밋: 스테이션(측점) 기반 주행영상 플레이어
- 클라이언트(React/Vite): Video.js 플레이어, 하단 스테이션바, POI/구조물 영상 오버레이, 카메라 파라미터 보정, 미니맵/RoutePanel
- 서버(Express): Range 스트리밍, HLS 변환, 프레임 추출, tus 업로드, 주석 API
- 최근 작업: 스테이션바 종점역 표출/양끝 정렬/미도착(재생불가) 표시, POI 라벨 '구분' 우선·컴팩트 팝업·겹침제외 토글·동일좌표 다중행, 진행방향(상/하) 우선 표출, 커서 배지 크기·픽셀 떨림 개선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:37:57 +09:00

1.9 KiB

스테이션바 종점역(대전조차장) 누락 수정 + 라벨 우선순위 정리

소요 시간: 25분 Context 사용량: input 약 130k / output 약 9k tokens

증상

하단 스테이션바의 마지막 항목에 종점역 대전조차장(한국철도공사대전조차장역)이 표시되지 않음.

원인

Timeline.tsx의 구조물 라벨 겹침 방지 로직:

const structs = dedup(structures, 130);

기존 dedup은 px 오름차순으로 정렬해 130px 클러스터마다 가장 왼쪽 1개만 유지했다.

실데이터(하행)회덕-대전조차장 v2.0) 기준:

  • 종점역 대전조차장역 좌표: lat 36.371101 / lon 127.421776
  • 그 직전 법동가도교(상·하·인상 3건): lat ~36.3730 (≈200m 앞, 트랙 1509.5px 중 ~70px)

→ 법동가도교가 먼저(왼쪽) 유지되고, 130px 이내인 종점역이 dedup으로 탈락.

사용자 확정 규칙 (라벨 겹침 우선순위)

  • 화면상(영상) 라벨: 겹침 처리 동작 + 겹칠 경우 KAKAO_RAIL(철도역/역사) 우선 표출.
  • 하단 스테이션바: 겹쳐도 무방 → 역사는 dedup 대상에서 제외, 항상 표출.

조치

  1. 하단 스테이션바 Timeline.tsx
    • 역사(역, KAKAO_RAIL)는 dedup에서 제외하고 항상 표출.
    • 교량/터널만 기존 130px 겹침 방지 유지(라벨 텍스트가 길어 겹침 방지 필요).
  2. 영상 오버레이 StationOverlay.tsx
    • POI 겹침 억제 정렬을 dist만 → railRank(철도역/역사=0) → dist 로 변경.
    • 겹치면 KAKAO_RAIL 라벨이 유지되고 일반 POI가 숨겨짐.

검증

  • tsc --noEmit -p client/tsconfig.json → 통과(exit 0)
  • 실데이터 좌표·거리 계산으로 클러스터링 원인 확인