예전에 회원 한분이 스마트폰 GPS에서 왜 앱마다 고도값이 다른지에 대한 질문이 있었습니다 (http://cafe.daum.net/gpsyn/Pllz/1131 )
그 당시 구동원리로 미루어, 앱마다 고도값이 다르지는 않을 것이다 라는 엉성한 댓글을 달고서는, 뭔가 뒷부분이 찜찜했었습니다.
마침 시간도 나고 해서, 왜 그런 질문이 올라왔을까 궁금하여 직접 테스트해보았습니다.
아래는 동네 뒷산(?)에 올라 몇분간 프로그램 바꾸며, 테스트해본 프로그램들의 스샷입니다

<GPS Status> <Locus> <OruxMaps> <Androzic>
유심히 보면 아시겠지만, 프로그램에 따라 정확히 20m 고도차를 보여주고 있습니다.
이부분은 GPS Status 프로그램이 보여주듯이 '고도(+19m)' 에 따른 것이었습니다.
좀 더 자세히 설명하자면,
스마트폰의 경우, 각 GPS앱(프로그램)들은 해당 폰의 GPS 칩셋에서 보내주는 NMEA 데이터를 파싱하여,
각 프로그램에서 필요한 데이터를 사용하는 것입니다.
즉,

위 붉은 사각형으로 표시된 부분을 프로그램에서 파싱해서 보여주는 것이죠.
NMEA 데이터 파싱에 대해서는
http://danfunga.springnote.com/pages/6564097.xhtml
http://gtko.springnote.com/pages/5126153.xhtml 을 참조하십시오.
위 NMEA 문장 중 고도와 관련된 부분은
$GPGGA,072648.000,3727.060371,N,12655.647654,E,1,09,0.8,366.5,M,19.4,M,,*5D
즉, 평균해수면 기준 고도는 : 366.5 m,
해수면과 지오이드의 고도차가 19.4 m
* Altitude : 평균해수면(MSL) 기준으로한 고도
* Geoid Separation : 평균해수면(MSL)과 지오이드(Geoid : 지구모양, 평균 해면과 그 연장으로 생각되는 상상의 면)의 고도차
지구를 타원체로 모델링 할 경우에, 지표면상에서 정확한 위치를 구하기 위한 정보
결국 스마트폰 GPS 프로그램의 고도차는
아마도 'Geoid Separation' 이부분을 프로그램 고도값에 반영하느냐, 안하느냐에 따른 것 같습니다.
덧> 제가 올리는 글이 늘 그렇듯이, 여기저기 찾아보고 나름의 상상력으로 짜집기한 것이라 오류가 있을 수 있습니다.
잘못된 부분을 가르쳐주시면 바로 수정하겠습니다 -_-
첫댓글 좋은 정보 입니다.
자연지형지물의 높이는 평균해수면(Mean Sea Level)으로 부터의 높이로 나타내는데,
SiRF 칩은 평균해수면을 육지로 연장한 가상의 지구표면인 Goid로 부터의 고도를 출력하므로,
소프트웨어적으로 평균해수면으로 부터의 고도로 보정이 필요한 것으로 알고 있습니다.
혹시 본문의 NMEA 데이터가 SiRF칩으로부터 출력된 데이터가 아닌지요??
만약 그렇다면 짧은 지식으로는 해당 소프트웨어(위에서는 Locus 와 Andlozic)에서 보정이 필요한 부분으로 생각됩니다.
$GPGGA 문장에 Geoid Separation 위치에 null 값을 리턴하는 칩셋들이 제법 있는 걸 보면,
(http://durl.me/bssc7 아랫부분 Sample Streams 참조)
일반적으로 '고도'라고 할 때,해수면 기준 고도를 말하는 것이 아닐까 하는 생각입니다.
그렇다면 프로그램에서는 $GPGGA의 Altitude 값을 고도값으로 출력하게 하고,
Geoid Separation 값으로 보정을 거친 고도값은 별도의 고도컬럼을 두어 보여주는 것이 맞지 않을런지...
높이를 나타낼 때 기준면이 평균해수면이 아닌 것들도 있지만, 산의 높이는 평균해수면이 기준(0)인 것으로 알고 있습니다.
언급하신 NMEA Sentence 항목의 의미가 맞다면 그런식의 처리가 맞을 것 같군요.^^
예전에 해당 질문을 했던 사람으로서 오늘 이글을 보며 무척이나 감동받았습니다.
질문에 대한 답변이 맞고 틀리고를 떠나 직접 테스트를 해가며 분석하여 차후에까지 답변을 해주심에 다시한번 감사드립니다.
와~~ 대단들 하십니다... 배울게 많군요...^^
하~
무슨 말씀이신지 당췌~
전문가분들의 이야기네요