
경로 탐색에서 '고도'가 왜 중요할까?
길찾기 앱을 쓸 때 보통 거리와 시간만 생각하잖아요. 그런데 자전거를 타거나, 등산을 하거나, 전기차로 이동할 때는 경로의 오르막과 내리막이 엄청나게 중요해요. 같은 5km라도 평지와 언덕길은 소요 시간도, 에너지 소모도 완전히 다르거든요. 오픈소스 경로 탐색 엔진인 GraphHopper가 바로 이 고도(elevation) 데이터의 정밀도를 대폭 개선했다는 소식이에요.
GraphHopper가 뭐냐면, Java로 만들어진 오픈소스 라우팅 엔진이에요. OpenStreetMap(OSM) 데이터를 기반으로 자동차, 자전거, 도보 등 다양한 이동 수단의 최적 경로를 계산해주죠. 구글 Maps나 카카오맵 같은 상용 서비스의 경로 탐색 부분만 따로 떼어놓은 거라고 생각하면 돼요. 직접 서버에 설치해서 쓸 수 있어서, 물류 회사나 배달 서비스, 아웃도어 앱 같은 데서 많이 활용하고 있어요.
이번에 뭐가 달라졌나
기존에 GraphHopper는 고도 데이터로 주로 SRTM(Shuttle Radar Topography Mission) 데이터를 사용했어요. 이건 NASA가 2000년에 우주왕복선에서 레이더로 측정한 전 세계 지형 데이터인데, 해상도가 약 30미터(1 arc-second)예요. 30미터 격자 하나당 하나의 고도값을 갖는 거죠. 넓은 지역의 대략적인 지형 파악에는 충분하지만, 도심의 짧은 언덕이나 자전거 도로의 미세한 경사를 표현하기에는 한계가 있었어요.
이번 업데이트에서는 더 높은 해상도의 고도 데이터 소스를 지원하게 됐어요. 유럽 지역의 경우 EU-DEM이나 각국 정부에서 제공하는 LiDAR 기반 고도 데이터를 활용할 수 있게 됐는데, 이런 데이터는 해상도가 1~5미터급이에요. LiDAR가 뭐냐면, 레이저를 쏘아서 반사되는 시간을 측정해 지형의 높낮이를 아주 정밀하게 측정하는 기술이에요. 항공기에서 LiDAR를 쏘면 건물이나 나무까지 구분할 수 있을 정도로 정밀하죠.
기술적으로 보면, GraphHopper는 경로 그래프의 각 엣지(도로 구간)에 고도 프로필을 매핑하는 방식을 쓰는데요. 고도 데이터의 해상도가 높아지면 이 프로필이 훨씬 정확해져요. 예를 들어 500미터 길이의 도로 구간에 기존에는 고도 포인트가 15~16개 정도였다면, 새 데이터로는 100개 이상의 포인트가 생길 수 있어요. 이러면 "이 구간은 전반적으로 오르막"이라는 대략적인 정보가 아니라 "처음 200미터는 평지, 다음 100미터는 급경사, 나머지는 완만한 내리막"처럼 훨씬 세밀한 정보를 경로 계산에 반영할 수 있는 거예요.
또 하나 중요한 개선이 있는데, 고도 데이터의 노이즈 필터링 알고리즘도 함께 개선됐어요. 고해상도 데이터라고 해서 항상 좋은 건 아니거든요. GPS 오차, 측정 오류, 교량이나 터널 같은 인공 구조물 때문에 비현실적인 고도 변화가 생길 수 있어요. 이런 노이즈를 적절히 제거하면서도 실제 경사 정보는 보존하는 게 기술적으로 까다로운 부분인데, 이번에 이 부분의 알고리즘이 개선된 거예요.
비슷한 도구들과 어떻게 다른가
오픈소스 라우팅 엔진 세계에서 GraphHopper의 경쟁자로는 OSRM(Open Source Routing Machine)과 Valhalla가 있어요. OSRM은 C++로 만들어져서 속도가 빠른 게 강점이고, Valhalla는 Mapbox에서 시작된 프로젝트로 타일 기반 데이터 구조가 특징이에요.
고도 데이터 활용 측면에서 보면, OSRM은 고도를 경로 비용 계산에 직접 반영하는 기능이 상대적으로 약한 편이에요. Valhalla는 자전거 경로에서 고도를 꽤 잘 반영하는 편이고요. GraphHopper는 이번 업데이트로 고도 데이터 정밀도 면에서 한발 앞서게 된 셈이에요. 특히 자전거 내비게이션이나 하이킹 앱을 만들 때 이 차이가 크게 느껴질 거예요.
상용 서비스와 비교하면, 구글 Maps API도 고도 데이터를 제공하지만 경로 최적화에 얼마나 정밀하게 반영하는지는 블랙박스예요. 자체 서버에서 GraphHopper를 돌리면 고도 데이터 소스를 직접 선택하고, 경로 비용 함수를 커스터마이징할 수 있다는 게 큰 장점이죠.
한국 개발자에게 주는 시사점
한국은 산지가 국토의 70%를 차지하는 나라잖아요. 그래서 고도 데이터가 경로 탐색 품질에 미치는 영향이 특히 클 수밖에 없어요. 자전거 출퇴근 경로를 찾을 때 "가장 짧은 길"보다 "가장 평탄한 길"이 중요한 경우가 많거든요.
국토지리정보원에서 제공하는 한국 수치지형도(DEM) 데이터도 꽤 정밀한 편이에요. GraphHopper에 이런 국내 고도 데이터를 연동하면, 한국 지형에 최적화된 자전거 경로 탐색이나 등산 앱을 만들 수 있어요. 물류 분야에서도 전기 트럭의 배터리 소모를 예측할 때 경사도 정보가 핵심적인 변수거든요. 그리고 GraphHopper는 Java/Kotlin 기반이라 안드로이드 앱과 통합하기에도 좋고요.
정리하면
고도 데이터의 정밀도를 높인다는 건 단순히 숫자가 더 정확해지는 게 아니라, 경로 추천의 품질 자체가 달라지는 것이에요. 자전거, 하이킹, 전기차 등 고도에 민감한 이동 수단이 늘어나는 시대에 딱 맞는 개선이죠.
혹시 자전거 내비게이션이나 아웃도어 앱을 만들어보신 분 있으신가요? 고도 데이터를 어떻게 활용하고 계신지 경험을 나눠주세요!
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공