네이버 지도는 어떻게 버스가 몇 분 뒤에 도착할지 알려줄까?
달리는 버스의 위치가 정류장의 도착 예정 시간으로 바뀌는 과정
아침에 정류장에 도착한 다은이는 네이버 지도를 열었습니다.
타려고 기다리는 버스가 ‘4분 후’라고 떠 있습니다. 편의점에 다녀올까 고민하는 사이 숫자가 ‘5분 후’로 금방 바뀌어 버립니다.
시간은 앞으로 흘렀는데 왜 버스가 도착하기까지 남은 시간은 오히려 늘었을까요?
1. 출발 시간표에 버스가 실제로 움직이는 정보가 더해집니다
시간표를 보면 언제쯤 버스가 운행할지 알 수 있습니다. 하지만 버스가 출발한 뒤에는 정체와 신호, 승하차에 따라 도착 시각이 달라집니다. 도착 시간을 계속 안내하려면 달리는 차량이 노선 어디쯤에 있는지 알아야 합니다.
서울의 사례를 보면, 교통 운영 시스템은 차량의 위치와 운행 정보를 모아 버스 운행을 관리하고 도착 안내에 활용합니다. GPS 같은 위치 정보가 들어오면 노선과 진행 방향, 차량이 지나온 구간과 연결해 정류장까지의 상태를 파악할 수 있습니다. 다은의 휴대폰 위치는 가까운 정류장을 찾는 데 도움이 되지만, 버스의 위치를 알아내는 데에는 별도의 차량 운행 정보가 필요합니다.
2. 버스와 정류장 사이의 거리에서 남은 시간을 추정합니다
정류장까지 얼마나 걸릴지는 지도 위에서 두 점 사이의 거리를 재는 것보다 복잡합니다. 가령 버스가 다은과 가깝게 보이더라도 노선을 따라 돌아오거나 중간 정류장에 서야 할 수 있습니다. 같은 두 정류장 거리여도 도로가 막힌 날은 더 오래 걸립니다.
일반적인 도착 예측은 차량의 최근 위치와 노선을 바탕으로 남은 구간에 걸릴 시간을 추정합니다. 설명을 위한 단순한 예로, 다음 정류장까지 1분, 승하차와 이후 구간에 3분이 예상된다면 약 4분으로 안내할 수 있습니다. 실제 계산에는 시스템마다 다른 자료와 규칙을 씁니다. 국토교통부의 공개 버스 도착정보에는 도착 예상 시간과 남은 정류장 수가 별도 항목으로 제공됩니다.
참고 : 국토교통부 버스도착정보 API
3. 지도는 조회한 정류장과 노선에 맞춰 안내를 보여 줍니다
다은이 지도에서 정류장을 누르면, 앱은 그 정류장과 관련된 버스 정보를 찾아 화면에 표시합니다. 같은 이름의 정류장이 도로 양쪽에 있을 수 있어, 이름뿐 아니라 어느 방향의 정류장인지 구분하는 것도 중요합니다. 네이버 지도는 버스 번호 검색, 정류장 아이콘이나 길찾기 결과에서 실시간 버스 정보를 확인할 수 있다고 안내합니다.
참고 : 네이버 지도 실시간 버스정보 안내
교통 시스템의 데이터를 다른 서비스에 전달할 때는 API처럼 정해진 인터페이스를 사용할 수 있습니다. 공개 버스도착정보 API는 이 구조를 보여 주는 예시입니다. 네이버 지도가 지역마다 어떤 경로로 데이터를 받거나 자체적으로 어떻게 보정하는지까지는 위 공개 자료만으로 확인할 수 없습니다.
4. ‘4분 후’는 초시계가 아니라 갱신되는 예상치입니다
버스가 신호에 오래 걸리거나 앞 정류장에서 승하차가 길어지면 새 위치 정보로 계산한 예상 시간이 늘어날 수 있습니다. 차량 위치가 수집되고 화면에 반영되기까지 시차도 생깁니다. 그래서 다은이 보는 숫자는 매분 정확히 1씩 줄어드는 초시계와 다르게 움직입니다.
다은은 편의점 대신 정류장에서 기다리기로 했습니다. 화면의 ‘5분 후’는 그때까지 확인한 운행 상황에서 계산한 값입니다. 다음 위치가 들어오면 달라질 수 있다는 점을 알면, 남은 시간이 늘어난 화면도 버스가 실제 도로를 달리고 있다는 모습과 연결해 이해할 수 있습니다.
이야기 속 IT 개념
- GPS
- 푸시
- 실시간 데이터
- 응용 프로그램 인터페이스
- 클라이언트