스테이션바/측점(체이니지) - 역 재진입 마커 누락 수정: 측점기준 탐지에 좌표근접(pxPassesTo) 합집합 보강(중복 24px 제거) - kmExists 판정: 좌표 반경만으로 잡힌 통과는 측점값 라벨/검색에서 제외(마커 동그라미는 유지) - 측점값 라벨 겹침 숨김(좌측 우선), 동일항목 브래킷 클러스터 - 측점 검색 순환(통과방향 다음→끝에서 처음), 마커 기준 후보 산출, 입력값 유지/blur 삭제 - 연속 체이니지 수직투영 유틸 분리(client/src/utils/chainage.ts), Minimap 컴포넌트 추가 영상 컨트롤 UI - 선형/드론궤적/좌측패널 토글을 재생바로 통합(settingsStore 공유·persist) - 드론 GPS·고도 HUD 상시 표시, 경로표고·투명도 항상 노출, 겹침제외 버튼 숨김 - 재생바 요소 재배치(좌측패널→선형→드론궤적→드론위치정보→시설등급), 활성색 amber 통일 문서/도구 - 종합 기술명세서(인계+특허 기초) md/html/pdf 3종, UI개선 보고서 3종 - md→html→pdf 변환 스크립트(scripts/md2docs.sh) + 스타일(docs/assets/report.css) - 작업 히스토리 다수 추가(docs/history/) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.2 KiB
3.2 KiB
역사(역) 통과 마커 누락 수정 — 좌표근접 합집합 보강
소요 시간: 약 30분 Context 사용량: input ~150k / output ~9k tokens
결론
대전조차장역처럼 같은 역을 여러 번 지날 때, 일부 통과(예: 162k080 재진입)에 스테이션바 동그라미(역사 원형 마커)가
빠지던 문제를 수정. 측점-기준 탐지에 더해 좌표근접(pxPassesTo) 통과를 합집합으로 보강해 누락된 재진입까지 마커를 찍는다.
원인
- 파일:
client/src/stationbar/StationBar.tsx(structureMarks) - 역사(대전조차장역)는
geoData에서 좌표(lat/lon)만 있고 측점값(station)이 없는 RouteStructure 로 들어온다. - 통과 탐지가
projectChainage(좌표)한 값으로pxPassesAtMileage만 수행. - 탐지 체인이
if (!passes.length)단락 평가라, 측점-기준이 통과를 하나라도 찾으면 좌표근접 탐지가 안 돌아감. - 종점/조차장 구역은 측점선(폴리라인) 투영이 불안정 → 한 통과는 투영 측점이 ±
stationTolerance(기본 20m) 안에 들어와 잡히지만, 다른 통과는 20m 밖으로 벗어나 누락. 첫 통과를 이미 찾았으니 좌표근접 보강도 안 돌아 영영 빠짐.
변경 내용
cat === '역사'이고 lat/lon 이 있으면, 측점-기준 탐지 결과에pxPassesTo(lat, lon, off)통과를 합집합으로 추가.- 같은 통과(거의 동일 px)는 24px 임계로 중복 제거 → 멀리 떨어진 실제 재진입만 추가됨. (TRACK_WIDTH_PX = 1509.5, 24px ≈ 1.6% → 동일 best 프레임 중복만 합쳐지고 떨어진 재진입은 보존)
- km 라벨 동작(stationKmVal 우선)은 기존 유지 — 이번 수정은 '마커 누락'만 대상.
검증
tsc --noEmit+vite build통과 (node v20.20.2,~/.nvm/versions/node/v20.20.2/bin).- 사용자 화면(포트 55000)에서 폴더 재선택 후 162k080 재진입 동그라미 표출 확인 완료.
★ 진짜 블로커 — 빌드/서빙 구조 (이번 세션 최대 교훈)
- 증상: 소스를 여러 번 고쳐도 화면이 전혀 안 바뀜("여전히 빠져있어" 반복).
- 원인: 사용자가 보는 화면은 dev 서버가 아니라 PM2 앱
ghiVideo(포트 55000) 이고,server/dist/.../app.js가express.static(client/dist)로 빌드 결과를 서빙한다(ecosystem.config.js). →client/src만 고치면 절대 반영 안 됨.client/dist가 6/26 빌드로 고정돼 있었음. - 형제 디렉토리 혼선도 있었음:
videoplayer(PM2, 5173),defVideo(PM2) 가 함께 떠 있음. 작업 경로는 GhiVideo. - 해결:
npm run build -w client(node 20) 로client/dist갱신 → 강력 새로고침(Ctrl+Shift+R) → 폴더 재선택. - 메모리에 구조 기록:
ghivideo-serve-build.
참고 / 후속
stationTolerance타입 주석(geo.ts:139)은 "기본 40"으로 적혀 있으나 실제 코드 기본값은?? 20. 불일치 정리 권장.- 좌표근접 탐지 임계는
pxPassesTo내부Math.max(100, gmin*3)(StationBar.tsx:499) — 측점 tolerance(20m)와 별개. - 출발점 부근 '조기 통과' 오탐 우려는 역사 마커에 한해 합집합으로 한정 → 일반 측점-기준 동작에는 영향 없음.