내비 데이터 뷰어
차량 단말에서 수집된 DLT 바이너리 로그를 브라우저에서 파싱하고, GPS 궤적·경로 요청·음성 안내를 지도에 시각화하는 도구입니다.
개요
내비 데이터 뷰어는 다음 정보를 DLT 로그에서 자동으로 추출하고 시각화합니다.
- 위치 데이터 — GPS 원시값, DR_GPS 추측항법, MM GPS Pos, MM Match Pos
- 경로 요청 — RpLog REQ/RES 매칭 + 멀티-청크 JSON 파싱 + SessionID
- 음성 안내 — TTS 메시지, 발생 위치
추가 기능:
- TVAS 시각화 — 경로 요청 결과를 지도에 풀 시각화 (경로/안내점/위험지역/톨게이트/휴게소/충전소/복잡교차로/...)
- 교통정보(RTM) — TMAP 실시간 교통정보 오버레이
- 🛰️ Mock GPS — 드로잉/TVAS/DLT 모드로 에뮬레이터·실기기에 모의 위치 주입 (MnsMockGps 앱 연동)
- 링크/노드 — VSM 도로 네트워크 오버레이 + 링크 속성 해석
DLT 경로 요청 로그 (RpLog)
DLT 로그 안의 #RpLog[NNN]:[RP-XX-Type] 패턴을 자동 식별해 요청·응답을 짝지웁니다.
처리 흐름
--> POST <url>라인에서 엔드포인트 추출REQ: {...}JSON 시작 + 후속 멀티-청크 라인들 자동 흡수 (DLT 바이너리 헤더 제거 + JSON 깊이 추적)<-- 200 (Nms) SessionID: TPxxxx에서 응답 코드/응답시간/SessionID 매핑RES: [000000 success] (size: XXkB)에서 최종 결과 확정
지도 마커
- 요청 시점의 GPS 위치(스냅샷)에 보라색 🗺️ 마커 표시
- 같은 좌표에 여러 요청이 있으면 마커 우상단에 N 갯수 배지
- 마커 클릭 → 흰 팝업: 탭 형태로 각 RP-XX 전환 가능
- 팝업 내용: SessionID · 응답상태(SUCCESS/FAILED) · 출발/목적지 · 전체 REQ JSON (포맷팅)
- JSON 파싱 실패 시 노랑 ⚠ 배지 + 원본 그대로 표시
시스템 요구사항
| 브라우저 | Chrome 또는 Edge (Chromium 기반) 최신 버전 |
|---|---|
| 이유 | 폴더 단위 드래그앤드롭에 필요한 File System Access API, webkitdirectory를 사용합니다. Safari/Firefox는 미지원. |
| 확장 프로그램 | 경로 요청 기능 사용 시 CORS Unblock 확장 프로그램이 필요합니다. |
| 디스크 | 파일 크기 제한 없음. 수백 MB DLT도 처리 가능 (Web Worker 파싱). |
빠른 시작
DLT 폴더 로드
파일 선택 방법
- 버튼: 좌측 패널의 폴더 선택 버튼을 누르면 시스템 폴더 선택 창이 뜹니다.
- 드래그 앤 드롭: 드롭존에 폴더를 직접 끌어 놓아도 됩니다.
파싱 진행 상황
선택한 폴더의 하위 디렉토리까지 재귀적으로 .dlt 파일을 탐색합니다. 진행률 바에 현재 처리 중 파일명과 퍼센트가 표시됩니다.
통계
파싱 완료 시 다음 지표를 집계해 카드로 보여줍니다.
- 총 위치 포인트 / GPS / DR_GPS / MM GPS Pos / MM Match Pos 개수
- 경로 요청 건수, 음성 안내 건수
- 로그 시간 범위 (시작 ~ 종료)
YYYY/MM/DD HH:MM:SS.mmm 월별시계 또는 시작 기준 모노토닉 타임스탬프로 들어옵니다. Viewer는 두 포맷 모두 자동 인식합니다.
지도 레이어
좌측 레이어 토글 패널의 체크박스로 각 데이터 레이어를 독립적으로 켜고 끌 수 있습니다.
마커 팝업
각 포인트를 클릭하면 다음 정보가 팝업에 표시됩니다.
- 타임스탬프, 원본 SK 좌표 (X, Y), 변환 WGS84 좌표 (lat, lon)
- 속도, 방향, 해당 로그 라인
- 경로 요청의 경우 TVAS 파싱 결과 (경로요약, 차로안내, 위험지역, 톨게이트 등)
링크/노드 (VSM 도로 네트워크)
링크/노드 레이어 패널에서 Config 이름(기본 TMAP_AUTO_BMW_EVO)을 확인하고 VSM 불러오기를 누릅니다. 앱과 같은 VSM 서버에서 도로 네트워크 타일을 받아 그립니다 (사내망 필요).
- 표시 범위: 지도 레벨 16 이상에서 화면에 걸친 타일만 받아 링크(초록 선)와 노드(주황 점)로 그립니다. 받은 타일은 캐시합니다.
- 링크 클릭: 도로명·링크 ID·메시 ID·도로등급·링크종별·시설물·일방통행·차로수·제한속도·노드·방향각·통행시간을 풀어서 보여주고, 해석하지 않은 필드(BLANEST·GUIDEINFO 등)는 원본 값으로 덧붙입니다.
- 링크 선택 모드: 링크 선택 모드 ON이면 팝업 대신 패널에 상세를 띄웁니다.
- SDI (안전운전도우미): 같은 도로 네트워크의 SDI2 설치 지점을 앱과 같은 VSM 아이콘 패키지(
SAFE_DRIVE_ICON_ROUTE) 아이콘으로 그립니다. 패키지에 아이콘이 없는 종류는 분류별 색 점(빨강 단속카메라·노랑 주의/사고·파랑 편의시설·보라 기타)으로 대신합니다. 체크박스로 전체 또는 분류별로 켜고 끌 수 있고, 점에 마우스를 올리면 이름, 누르면 종류·제한속도(속도 단속만)·방향각·링크/메시/지점 ID를 보여줍니다. 정의표에 없는 번호는미정의(번호)로 표시합니다. - 노드: VSM 네트워크에는 노드 데이터가 따로 없어 링크 양 끝점(시작/끝 노드 ID)에서 만듭니다. 노드를 누르면 연결 링크 목록을 보여줍니다.
좌표 검색
임의의 좌표를 입력해 지도에 핀을 꽂을 수 있습니다.
입력 타입
- SK 좌표 — TMAP 내부 좌표계. 예: X=
4571910, Y=1347000 - WGS84 — 일반 경위도. 예: X(경도)=
127.0276, Y(위도)=37.4979
DLT 로그 마커 팝업에 표시된 좌표를 그대로 복사해 붙여넣어 위치를 재확인할 때 편리합니다.
줄자 (거리 측정)
- 줄자 모드 OFF 버튼을 눌러 ON으로 전환합니다.
- 지도에 시작점·다음 점을 순차 클릭하면 선분이 이어지고 누적 거리가 표시됩니다.
- 지우기로 측정선을 초기화합니다.
단위는 m / km 자동 전환이며, 하버사인 공식(지구구체 근사)으로 계산합니다.
경로 요청 (TVAS)
임의의 출발·경유·목적지로 TVAS 경로 서버에 직접 요청을 보내 응답을 파싱·시각화하는 기능입니다.
경로 서버(
ntmapstg.tmap.co.kr)는 브라우저의 교차 출처(CORS) 요청을 허용하지 않습니다.
CORS Unblock 확장 프로그램을 설치하고 ON 상태로 켜야 요청이 서버에 도달합니다. 끄면 브라우저가 즉시 차단합니다.
요청 흐름
- 우측 경로 요청 탭(또는 좌측 사이드바 버튼)을 엽니다.
- 지도에 우클릭해 출발지 / 경유지 / 목적지를 설정합니다. 설정된 지점은 패널 상단 출발지/목적지 바에 표시되고, 요청 body의 좌표 필드에 자동 반영됩니다.
- URL · Headers · Body(JSON) 을 필요에 따라 수정합니다. 정렬 버튼으로 JSON body를 깔끔하게 정리할 수 있습니다.
- 요청 전송을 누르면 응답이 바이너리로 오고, Viewer가 TVAS 스펙에 따라 파싱해서 지도에 그립니다.
- 필요하면 응답 저장으로 원본 바이너리를
.bin으로 내려받아 오프라인 분석에 씁니다.
결과 보기
응답 파싱 후 우측 패널의 결과 요약 영역에서 헤더 / IDX / TI / VX / RO4 / GP / DA5 / RN2 / DN5 / CN / TG4 / SA3 / TL5 / HW / CB / ES3 / LT2 / WP2 / RD5 / TC / UA / RS7 / MC4 등 전 섹션별 데이터를 펼쳐서 확인할 수 있습니다.
지도 시각화는 별도 TVAS 시각화 레이어 항목 참고.
TVAS 시각화 레이어
경로 요청 응답 또는 DLT 로그의 TVAS 데이터를 지도에 풀 시각화합니다. 우측 패널 상단의 레이어 토글로 켜고/끌 수 있습니다.
전체 ON/OFF
토글 첫 번째에 있는 초록색 전체 버튼으로 모든 레이어를 한 번에 토글할 수 있습니다.
레이어 목록
- 경로 — 도로 종별 색상 폴리라인 + 진행 방향 화살표 + 혼잡도 색
- 안내점 — 회전·연속회전·분기 아이콘 (RN2/DN5/CN 이름 라벨)
- 위험지역 (DA5) — 47개 타입별 SVG 아이콘 (속도카메라/구간단속/스쿨존/하이패스/철도건널목/안개주의/낙석/...). 클릭 시 상세 팝업: 타입 / VX 좌표 / 구간단속 GroupID·속도 / 연속 위험지역 / 가변단속 / 단속 시간정보
- 톨게이트 (TG4) — 명칭/요금/하이패스 전용 표시
- 휴게소 (SA3) — 청록색 🍽️ 전용 핀. 경로선을 가리지 않도록 말풍선 본체는 지점 위로 띄우고 아래 꼬리·점이 보간점 좌표만 가리킨다. 말풍선 안에 시설 배지(⛽ 주유소 / 🛢️ LPG / 🔧 정비소) 표시. 클릭 시 상세 팝업: 진입·진출 보간점 Idx와 좌표 / 주유소브랜드코드 / LPG충전소브랜드코드 / 안내정보 비트(주유소·LPG·정비소 유무 + raw 값) / 명칭 오프셋 / POIID. 결과 요약의 SA3 리스트 항목을 클릭하면 해당 휴게소로 이동해 팝업이 열린다
- 차로 (TL5) — 권장(초록)·유효(파랑)·비유효(빨강) 화살표 아이콘
- 충전소 (ES3) — EV 경로의 경유 충전소. 필수충전(빨강) / 경로상(초록) / 경로주변(노랑) 필터 칩으로 리스트 필터링
- 복잡교차로 (MC4) — 보라색 🚦 마커. 클릭 시 ☀ 주간 / 🌙 야간 이미지 탭 팝업 (외부 이미지 서버에서 다운)
- 방면 / 도로명 라벨 — 화면 줌에 따라 표시
- 경유지 (WP2), 돌발(UA), 정체(TC), 교차로(CN), 강제재탐색(DRG3), 교통정보(LT2), 시도경계(CB), 고속모드(HW)
- RP링크 (RD5) — 경로 비교용 링크 정보
- 화물차 제한구간 (WHR/HTR/WTR) — 폭/높이/중량 제한 표시
교통정보 (RTM)
TMAP 실시간 교통정보(돌발/정체/공사/사고 등)를 지도 위에 오버레이합니다.
- 좌측 사이드바의 교통정보 섹션에서 현재 영역 불러오기 또는 전국 영역 불러오기 클릭
- 카테고리별 토글로 표시할 종류 선택 (사고/공사/돌발/통제/CCTV 등)
- 지우기로 오버레이 제거
각 마커 클릭 시 발생 시각·유형·메시지·CCTV 영상 링크(가능 시)가 팝업으로 표시됩니다.
마커 아이콘은 앱(BMW Evo) 지도와 같은 교통표지 아이콘입니다. 세부 유형 코드(A01~E02)별로 사고·보행자사고·공사·낙석·결빙·통제 등을 고르고, 알 수 없는 유형은 통제 아이콘으로 표시합니다.
🛰️ Mock GPS
지도에서 그린 궤적 또는 TVAS/DLT 결과를 따라 에뮬레이터·실기기에 모의 위치를 주입하는 기능입니다. 우측 보라색 Mock GPS 탭에서 접근합니다.
아키텍처
[브라우저] --HTTP--> [adb-relay.py :21234] --TCP(adb forward 27042)--> [MnsMockGps 앱]
|
LocationManager 모의 위치 공급자
전제 조건
- PC 에 Python3 + ADB 설치 (Android Platform Tools)
- 릴레이 서버(
adb-relay.py)와 안드로이드 앱(MnsMockGps) 설치 → 자동 설치 참고 - 단말의 개발자 옵션 → 모의 위치 앱 선택에서 MnsMockGps 지정 (또는 릴레이가
appops로 자동 설정)
3가지 데이터 소스 모드
| ✏️ 드로잉 | 지도를 마우스로 드래그해 자유 선을 그리고 그 궤적을 따라 이동. 속도 슬라이더로 1초당 이동 거리 조절(보간). |
|---|---|
| 🛣️ TVAS | 현재 경로 요청 결과의 VX 보간점을 그대로 사용. 슬라이더 속도로 보간. |
| 📋 DLT 로그 | 분석된 DLT 의 GPS/DR_GPS/NMEA 중 선택해 원본 타임스탬프 그대로(1x 실시간) 재현. 속도·방위각·위치는 로그 값을 그대로 전송(속도 슬라이더 비활성). |
전송 설정
- 속도 (5~200 km/h) — 드로잉/TVAS 모드에서 보간 간격 결정. DLT 모드에서는 비활성(로그 속도 사용)
- 정확도 (0.5~100m) —
Location.accuracy로 앱에 전송. 1m/5m/15m/50m 프리셋 버튼 제공 - 위성 수 (0~12개) —
Location.extras.satellites로 전송. 정확도 슬라이더와 자동 연동(역비례) - 방위각 — DLT 모드는 로그의 방위각을 그대로 사용, 그 외에는 궤적 진행 방향(현재→다음 좌표)으로 자동 계산
UI 동작
- ADB 미연결 시: 데이터 소스/전송 설정/전송 제어 카드는 회색 + 점선 + 🔒 ADB 연결 후 사용 가능 표시
- 지도 드로잉 모드 ON/OFF: 드로잉 탭 안의 토글 (드래그 그리기 활성화 전용)
- 시작 시 첫 좌표 즉시 전송 → 이후 1초 간격(또는 DLT 타임스탬프 간격)
- 🚗 마커가 지도 위에서 실시간 이동, 진행률 바 + 현재 좌표(°) 표시
- 일시정지 / 정지: 정지 시 마커 제거, 일시정지 시 위치 유지
Mock GPS 자동 설치
처음 사용하는 PC 라면 패널 최상단의 보라색 "처음이세요?" 히어로 카드에서 자동 설치 가능합니다.
1️⃣ PC 설치 (한 번만)
- Mock GPS 패널 → 🍎 macOS / Linux 또는 🪟 Windows 자동 설치 버튼 클릭
- 명령이 클립보드에 자동 복사됨 → 터미널/PowerShell 열고 paste & Enter
- 30초 안에 다음이 자동 수행:
~/.mockgps/생성adb-relay.py+MnsMockGps.apk다운로드- 자동 시작 등록 (macOS=launchd, Linux=systemd, Windows=작업 스케줄러)
- 릴레이 즉시 실행
다운로드 방식: 위 자동 설치 다이얼로그의 📥 설치 스크립트 다운로드 버튼으로 받아서 더블클릭 실행할 수도 있습니다.
- macOS:
.zip내려받아 압축 해제 →.command우클릭 → "열기" (실행권한 보존됨) - Windows:
.bat더블클릭 → SmartScreen "추가 정보" → "실행"
2️⃣ 앱 자동 설치 (브라우저에서)
릴레이가 동작하고 ADB 가 에뮬레이터/단말을 인식하면, 패널의 📥 자동 설치 버튼이 노출됩니다.
- 한 번 클릭으로 APK 다운로드 +
adb install -r+appops set ... mock_location allow+adb forward tcp:27042자동 처리 - 설치 후 단말에서 MnsMockGps 앱 실행 → "시작" 버튼만 누르면 좌표 수신 대기
3️⃣ 두 번째 사용부터
- PC 부팅 시 릴레이 자동 시작 → 웹페이지 열면 즉시 사용 가능
- 릴레이 상태 확인: http://localhost:21234/ping
제거
- macOS:
launchctl unload ~/Library/LaunchAgents/com.mns.mockgps-relay.plist && rm -rf ~/.mockgps - Linux:
systemctl --user disable --now mockgps-relay.service && rm -rf ~/.mockgps - Windows:
Unregister-ScheduledTask -TaskName MnsMockGpsRelay -Confirm:$false ; Remove-Item -Recurse -Force $env:USERPROFILE\.mockgps
localhost 또는 *.github.io 호스트의 APK 만 허용합니다. 임의 URL 은 차단됩니다.
지도 우클릭 메뉴
지도 위 빈 공간을 우클릭하면 위치 기반 컨텍스트 메뉴가 뜹니다.
- 선택한 위치의 WGS84/SK 좌표가 경로 요청 body에 자동 삽입됩니다.
- 기존 지점을 다른 위치에 지정하면 덮어씁니다.
자주 묻는 질문
Q. 폴더 선택 버튼이 비활성화되어 있거나 동작하지 않아요.
Chrome 또는 Edge에서만 동작합니다. Safari/Firefox는 폴더 단위 선택을 지원하지 않아 해당 경고가 표시됩니다.
Q. 요청 전송 시 "CORS 차단" 모달이 뜹니다.
CORS Unblock 확장 프로그램을 설치/활성화하지 않았거나, 서버 응답이 아닌 네트워크 레벨에서 차단된 경우입니다. 확장 프로그램의 방패 아이콘이 녹색(ON)인지 확인하세요.
Q. DLT는 로드되는데 마커가 안 보여요.
레이어 토글이 OFF이거나, 현재 지도 뷰가 로그 위치와 많이 벗어난 경우입니다. 지도 하단 상태바의 점 개수가 0이 아니면 데이터는 있습니다. 지도 오른쪽 위 "홈" 버튼으로 전체 데이터가 보이게 축척을 맞추세요.
Q. VSM 불러오기를 눌렀는데 링크가 안 보여요.
VSM 서버는 사내망에서만 열립니다. 연결돼 있다면 지도를 레벨 16 이상으로 확대하세요. 패널 상태 문구에 화면 링크 수가 표시됩니다.
Q. 어떤 브라우저 키가 유용한가요?
Ctrl+Shift+R 하드 리로드로 모듈 캐시 무효화 · F12 → Network 탭에서 TVAS 요청/응답 확인 가능
Q. Mock GPS 패널이 잠겨있어요 (🔒 표시).
ADB 연결이 되어야 다른 메뉴가 활성화됩니다. 먼저 PC 설치로 릴레이를 띄우고, 에뮬레이터/실기기를 USB/네트워크로 연결한 다음 ADB 섹션의 새로고침을 누르세요.
Q. Mock GPS 시작했는데 단말 위치가 바뀌지 않아요.
3가지를 확인하세요:
- 단말의 개발자 옵션 → 모의 위치 앱 선택에서 MnsMockGps 가 지정되어 있는지 (또는 ADB 섹션의 ADB 설정 버튼 클릭)
- MnsMockGps 앱이 실행 중이고 "시작" 상태인지 (앱 상단 배지가 녹색 "포트 27042 수신 대기 중")
- 릴레이 터미널 로그에 좌표 전송 라인이 보이는지
Q. RP-XX 마커가 보이지 않아요.
해당 요청 시점에 위치 로그가 없었거나, 응답이 잘리거나 다음 파일에 있는 경우입니다. 폴더 단위로 분석하면 응답까지 매칭됩니다. 또는 팝업의 Response: UNKNOWN 표시를 확인하세요.
Q. 같은 위치에 RP-XX 마커가 여러 개일 때 어떻게 보나요?
마커 우상단의 빨강 숫자 배지가 갯수입니다. 클릭하면 흰 배경 팝업에 탭 형태로 RP-XX 마다 전환 가능합니다.
Q. 복잡교차로(MC4) 이미지가 안 떠요.
외부 이미지 서버(Main Domain URL)에서 다운로드하는데 CORS 또는 네트워크 제약으로 실패할 수 있습니다. 팝업의 fallback 메시지에 표시되는 URL을 새 탭에서 직접 열어 확인하세요.
Q. 자동 설치 명령에서 bash 오류가 납니다.
스크립트는 ASCII-only 입니다. bash --version으로 확인 후 4.x 이상인지, curl 이 설치되어 있는지 보세요. 또는 다운로드 버튼으로 .zip 받아서 더블클릭하는 방법을 사용하세요.