OSRM은 개방형 지리적 데이터 OSM(Open Street Map)을 활용하여 자동차 자전거, 보행자의 라우팅 프로필을 제공하는 라우팅 엔진으로, 최단경로탐색_알고리즘 중 Customizable Contraction(CH) 알고리즘 기반이다.
OSRM은 도로 유형별 가중치, 시설물 진입 패널티, 실시간 도로 정보(road network), 차량 회전(turn costs) 등을 고려하여 목적지까지 최적 경로를 탐색한다. 또한, 사용자가 원하는 logic으로 라우팅 알고리즘과 가중치를 customization 하는 기능을 제공하여, 특정 도로 조건, 교통 패턴, 또는 지리적 특성에 따라 최적 경로를 조정할 수 있다.
관련 서비스에서의 CH, CCH
네이버 지도
2020년부터, 네이버 지도는 도보 경로 탐색 기능에 OSRM(Open Source Routing Machine)을 활용하고 있다. 네이버 지도는 이용자 중심 기획을 핵심 원칙으로 삼아, 보행자가 도보로 이동할 때 마주할 수 있는 신호등, 골목길 등 다양한 도로 상황을 고려하여 최적의 경로를 제공한다. 최적 경로와 최단 경로가 항상 일치하지 않을 수 있기 때문에, 네이버 지도는 OSRM을 활용하여 도로 유형별로 가중치를 부여하고, 시설물 진입시 패널티 적용, 다중 입구점을 고려한 경로 안내, 특정 도로에서의 회전 가중치를 달리하였다.
티맵은 CCH 알고리즘 기반, Thor라는 자체 엔진을 개발하였고 Inertial Flow로 ordering 하였다.
2주에 한번씩 shortcut을 만드는 Metric-Independent Preprocessing을 진행하고, 교통 정보, 유고 정보 등 다양한 정보로 인한 arc의 비용 변화로 인한 업데이트, Metric-Dependent Customization은 수시로 진행하고 있다.
티맵은 도로 유형별, 어린이 보호 구역 등을 고려하며 거리와 시간에 대한 가중치를 달리하여 경로를 제공하고 있다.
배달의 민족에서는 2021.12에 배달료를 직선거리가 아닌 내비게이션 실거리로 산정하기 위해 OSRM을 도입하였다. OSRM은 API 호출 건수에 따른 비용이 없고, 서버 운영 비용만 부담하면 되며, 트래픽도 줄일 수 있어 이러한 결정을 내렸다. 하지만 좌회전 금지, 유턴 금지, P턴과 등의 교통 규제를 제대로 반영하지 못해, 2023.02에 내비게이션 엔진을 아이나비시스템즈로 교체하였다.
본 프로젝트에서는 뽀송 도보 경로가 포함된 대중교통 경로를 제공하는 서비스 개발을 목표로 한다. 이를 위해 비를 막아주는 구조물이 있는 길, 예를 들어 터널(수로, 산사태 방지 통로, 파이프를 제외한 사람이 지나갈 수 있는 건축물 통로)이나 covered 속성(사람이 지나갈 수 있으며 부스, 아치형 지붕, 가로수, 지붕있는 통행로 등 비를 막아주는 객체)을 가진 길의 가중치를 낮추고, 어드밴티지를 부여하는 시스템을 구현한다. 이 시스템을 Docker를 활용하여 서버에 구축함으로써, 이용자들에게 비의 영향이 최소화된 최적의 대중교통 경로를 안내한다.
시스템 구조도
기상 정보 관리 모듈과 경로 생성 모듈 등으로 구성된 시스템 구조도를 설계하였다.
경로 생성 모듈에서는 기상 정보 관리 모듈에서 데이터베이스에 저장한 강수 정보를 활용하여, 강수에 최소한으로 노출되는 출발 시각과 대중교통 경로를 탐색한다. 강수의 영향을 최소화하기 위해 도로 유형별에 따라 가중치를 조정하고, 시설물 및 도로 진입에 패널티를 부여할 수 있는 OSRM을 활용한다. OSRM에서 사용하는 지도 레이어는 JOSM(Java OpenStreetMap Editor)을 이용하여 서울의 linestrings.shp만 추출하고, 교량, 터널 레이어를 병합하였다.(서울시_지리공간_데이터_만들기)
경로 안내 프로세스
사용자가 KAKAO API를 이용하여 출발지와 목적지를 입력하면, ODsay API를 통해 대중교통 경로를 탐색한다. 이렇게 전처리된 데이터를 바탕으로 대중교통 경로 내 각 도보 구간에서 비를 덜 맞는 경로를 탐색한다.
setup 단계에서는 사람이 통행할 수 없는 교량과 터널을 제외하도록 처리하였다.
process_way 단계에서는 일반 도보 경로의 속도를 낮추어 가중치를 높이고, 비를 막아주는 구조물이 있는 도보 경로의 속도를 높이고 어드밴티지를 부여하여 가중치를 낮추는 방식으로 데이터를 전처리 하였다.
안내 생성 단계 에서는 각 도보 구간의 소요 시간과 강수 정보를 결합하여 예상 강수량을 산출한다. 이 정보를 통해 2시간 이내에 강수에 최소한으로 노출되는 출발 시각을 결정한다.