요즘은 아이나비나 파인드라이브보다 스마트폰 맵이 더 좋다.

장단점이 다르긴 한데, 편리성을 따지자면 스마트폰이 갑이다.


어디에 있던 정확히 내 위치를 찍어주니 신기할 따름이다.

어떤 앱으로 보면 고도정보까지 나온다. 그래서 상상한다.

"이걸로 비행기 내비게이션도 만들 수 있지 않을까?"


그런데 몇가지 알아야 할 것이 있다.

보이는 게 전부가 아니다.


GPS 손목시계(사진 @Pixabay)



1. GPS 정보는 오차가 있다.

실제 코딩하려고 GPS로그를 찍어보면 GPS 좌표가 자꾸 흔들린다.

왜일까? 이건 미국위성이 신호에 노이즈를 섞어 보내기 때문이다.

보안 알고리즘 때문인데 자세한 건 많은 기사에 나와 있다.


※ 한겨레 기사 : GPS는 언제나 공짜일까? 한반도 상공의 위성항법 전쟁


원래는 오차가 100 미터 이상이었는데, 2,000년 이후 대폭 줄어든 것이다.

지금은 소프트웨어 보정을 하면 3~5 미터 이내로 오차가 줄어든다.


보정 알고리즘은 비즈니스마다 달라서 고정된 룰이 없다.

예를 들어 내비게이션은 운행중일 때 도로가 아닌 값이 들어오면 그 값을 버린다.

그러니, GPS기반 앱을 만들고자 한다면 보정 알고리즘은 자체 개발해야 한다.


2. GPS 의 고도정보는 정확하지 않다.

GPS 앱에 나오는 고도정보를 믿는 경우가 있다.

그런데 이거 정확하지 않다.

고도오류는 보통 +/- 20미터 정도 된다.


GPS고도는 위성신호의 전달시간으로 계산하는데, 이때 기준이 되는 지구가 이론상의 타원체이다.

하지만 현실지구는 정확한 타원체라기 보다 쫌 못생긴 짱구 모양이다.

그리고 지표 때문에 울퉁불퉁해서 고도가 달라진다.


더구나 고도는 해수면을 기준으로 한다.

조수간만 때문에 높이가 바뀐다. 날짜, 장소에 따라 변한다.

그래서 나라마다 표준위치와 보정 후 표준을 정한다.

자연공식이 아닌거다.

그래서 GPS 고도와 실제 해발이 다를 수 있다.

현실은 해발이 맞는 값이다.


참고로 우리나라 기준점은 인하공업전문대학교 내에 있다.

인천앞바다의 평균값을 내어 표지석으로 박아두었다.


3. 그래서 기압계를 사용한다.

그래서 고도가 필요한 곳엔 기압센서를 사용한다.

해수면의 기압이 1기압이기 때문이다.

따라서 기압을 알면 절대 고도를 측정할 수 있다.


물론 이론상으로만 그렇다.

기압은 날씨에 따라 자꾸 변한다.

그래서 기압계는 상대값만 유효하다.


기압센서는 변화가 조금 늦다.

갑자기 높아지거나, 낮아지면 반박자 늦게 따라온다.

측정원리 때문에 그렇다.


그래서 요즘은 GPS와 기압센서를 모두 참고해서 사용한다.

이 알고리즘은 소프트웨어가 담당한다.


4. 정확한 고도측정방법은 없나?

아예 지표 정보를 읽어서 고도값을 측정해두고 데이터를 읽으면 된다.

그래서 아예 비행기가 떠서 지형을 수치지도로 만든다.

그 데이터를 DEM(Digital Elevation Model) 이라고 한다.

맑은 날 LiDAR 라는 레이저를 쏘면서 지표정보를 읽는거다.


이 데이터는 어마어마하게 크다. 전국토 데이터니까 당연하다. 

작은 기계에는 안들어간다. 등산용GPS 기기엔 이 데이터가 없다.

보통 필요할 때 온라인에서 읽어온다.


이 데이터는 구글맵에 있다.

API센터에 가면 X,Y 좌표를 던져 고도를 Return 받는 API가 있다.

Elevation API, 그걸 쓰면 된다.


Google Map API : https://developers.google.com/maps/documentation/elevation/start


5. 스포츠업계는 어떻게 하고 있나?

선두주자로 "Garmin"이 있다.

고도측정 목적으로 기압센서만 사용한다.

그런데 기압센서는 상대값만 측정하기 때문에 등반 중에는 유용할 수 있다.

하지만, 다녀온 이후에는 아니다.

11시 40분에 올랐던 설악산 봉우리의 해발고도가 궁금하기 때문이다.

그래서 가민은 웹서비스에 "구글맵 보정" 기능을 넣었다.

GPS로그를 업로드한 후 고도는 선택해서 볼 수 있게 해주었다.


"스포츠트래커"나 "스트라바" 등 앱들은 GPS고도를 쓰기도 하고, 구글맵 고도를 쓰기도 한다.

어쨌든 GPS기록을 쓰려면 튀는 값을 보정해 주어야 한다.

아쉽지만 현재는 이게 최선인 것 같다.


끝.


+ 최신글

+ 많이 본 글