목차
링크와 버텍스 위에서 계산하는 GPS 구간 속도 (2022-07)
원문 정보
- 원문: GPS 정보로 교통정보 생성하는 방법
- 부제: 13편 – 특정 시간대에 특정 도로의 교통정보를 계산해보자
- 매체 · 게시일: 티맵모빌리티 테크노트(브런치) · 2022-07-28
- 저자: 티맵모빌리티 (본문에 저자 미표기)
- 원문 내용을 바탕으로 재구성한 요약입니다.
GPS 정보와 감안해야 할 오차
내비게이션이 차량 위치를 확인하며 길안내를 하는 동안 앱에는 GPS 정보가 쌓입니다. 이 정보로 운전자가 어느 도로를 얼마의 속도로 달렸는지 알 수 있고, 모으면 그 도로의 교통정보가 됩니다. 원문은 여기에 쓰는 GPS 정보에 개인식별정보가 없다고 밝힙니다.
GPS는 4개 이상의 위성 신호로 위치를 계산하는 위성항법시스템입니다. 위도, 경도, 고도, 시간 등을 담지만 이 글은 위도와 경도 좌표, 시간만 씁니다. GPS 자체에 오차가 있는 데다, 3차원 도로와 차량 위치를 2차원의 점과 선으로 바꿔 속도를 계산하므로 오차는 감안해야 합니다.
링크와 버텍스로 단순화한 도로
현실의 도로는 양방향이고 차선이 여럿이지만, 시스템은 아직 오차 때문에 차선을 구별하지 못합니다. 그래서 도로 하나를 양방향 선으로, 차량 위치를 점으로 단순화합니다. 차량마다 차선이 다르고 GPS에 오차가 있어서 점은 선과 정확히 겹치지 않고 주변에 흩어집니다.
도로 전체의 교통정보를 한꺼번에 만들 수는 없으므로 도로를 구간으로 자르는데, 이 구간이 링크이고 링크를 이루는 점이 버텍스입니다. 구간을 나누는 기준은 길이, 교차로, 도로 특성 등으로 다양하며 지도 전문 인력이 작업합니다. 교통정보 쪽에서는 이를 계산 수단으로만 씁니다. 링크는 곡선일 수 있어서 곡선을 표현하려고 버텍스를 많이 넣습니다.
가장 가까운 점으로 구한 속도
가장 쉬운 방법은 링크 시작점 N1, 끝점 N2와 가장 가까운 GPS 포인트를 고르는 것입니다. N1에 가까운 점을 Gb, N2에 가까운 점을 Gz라 하면 링크 길이 L은 N1과 N2 사이의 거리입니다. 통과 시간 T는 Gz의 측정 시간에서 Gb의 측정 시간을 뺀 값이고, 속도 S는 L을 T로 나눈 값입니다.
수선의 발과 비례식으로 줄인 오차
오차를 더 줄이려면 각 GPS 포인트를 수선의 발로 링크 위에 옮겨 놓습니다. N1을 사이에 둔 두 점 Ga와 Gb까지의 거리를 d1, d2라 하고 N1을 지난 시점까지 걸린 시간을 t1, 이후 시간을 t2라 하면 d1 대 d2가 t1 대 t2와 같다는 비례식으로 N1의 통과 시점을 구합니다. N2도 같은 방식입니다. 두 점 사이를 등속으로 움직였다는 가정이 필요하지만, 두 점 사이가 대체로 몇 초 이내라서 오차가 줄어든다고 설명합니다.
링크 중간에서 끝난 주행
양 끝점을 기준으로 하면 GPS가 링크를 통과한 경우에만 쓸 수 있습니다. 링크 중간에 목적지가 있거나 GPS가 끊기면 차량이 어디까지 갔는지부터 알아야 합니다. 직선 도로라면 시작점에서 마지막 GPS 포인트까지의 거리를 재면 되지만 그런 도로는 많지 않습니다.
그래서 마지막 GPS 포인트 Ge와 가장 가까운 버텍스를 찾아, 거기까지 달렸다고 가정합니다. 예시에서는 V4이고, 운행 거리는 N1부터 V4까지 버텍스 사이 거리의 합입니다. 운행 시간은 Ge의 측정 시간에서 N1 통과 예상 시간을 뺀 값입니다. 여기서도 수선의 발을 쓰면 V4와 Ge 사이 거리까지 반영할 수 있습니다.
이렇게 얻은 개별 차량의 구간 속도를 시간대별, 도로 구간별로 묶어 한 번 더 계산하면 특정 시간대의 특정 도로 교통정보가 됩니다. 교통정보에는 사고 정보 같은 것도 있지만 기본은 속도 정보이고, 만들어진 정보는 티맵 길찾기에 쓰입니다. 도로 상황을 빠르게 파악하는 구조는 도로 상황 정보 글에서 이어집니다.
원문의 속도 계산식
| 방식 | 식 |
|---|---|
| 기본 | L = N1과 N2 사이 거리, T = Gz 측정 시간 - Gb 측정 시간, S = L / T |
| 수선의 발과 비례식 | d1 : d2 = t1 : t2, t1 + t2 = Gb 측정 시간 - Ga 측정 시간 |
| 링크 중간 종료 | 거리 = N1~V1 + V1~V2 + V2~V3 + V3~V4, 시간 = Ge 측정 시간 - N1 통과 예상 시간 |