2009/02/15

GPS Waypoint를 다음맵, 구글맵과 연동

CompeGPS에 다음맵이나 구글맵을 연동하는 방법을 찾다보니 GPS에서 맵을 바로 볼게 아니라면
차라리 반대로 하는게 더 낫겠다는 생각이 들었다.

CompGPS의 waypoint 파일을 업로드해서 그걸 다음맵이나 구글맵에 표시하는 방식이다.
이를 위해서 이미 구글맵 API와 다음지도 API 키를 발급받았고, 특정지점의 좌표를 xml파일로 만들어서 맵에 표시하는 기능까지 테스트를 마친 상태이다.

waypoint 파일을 파싱해서 xml로 만들어 서버에 저장하는 기능만 구현하면되는데, wpt 파일 열어보니까 다행이 text 형식으로 저장되있었다. xml 형식이 아닌건 좀 아쉽긴 하지만....

인터넷에서 다운 받은 주요 활공장의 wpt 파일들을 열어보니까 아래와 같은 형식으로 저장되어 있었다.

A type:
G WGS 84
W H01 52S 347932.0 3906870.0 27-MAR-62 00:00:00 0.000000 곡성 고달교
w 6,0,0.0,16777215,255,1,7,,-1.0
W H02 52S 365446.0 3897518.0 27-MAR-62 00:00:00 0.000000 하중마을 댐
w 6,0,0.0,16777215,255,1,7,,-1.0

B type:
G WGS 84
U 1
W *VL001 A 36.5782003857튞 127.9883753912튓 27-MAR-62 00:00:00 191.600000
w 6,0,-1.0,16777215,255,1,7,,0.0
W CL1014 A 36.6272665292튞 127.5282337690튓 27-MAR-62 00:00:00 0.000000
w 6,0,-1.0,16777215,255,1,7,,0.0
위에서 보인바와 같이 A, B 두가지 형태의 타입이 있었는데, 공통점과 차이점을 분석해보자면

공통점
  • 각 waypoint 레코드는 W 로 시작한다.
  • W 행에는 좌표정보 (이름, 좌표, 고도, 설명...) 가 기술되어 있다.
  • W행 아래에는 w 로 시작하는 행이 따라오는데 W에 정의된 좌표의 부가정보를 표시하는 듯 하다.
  • waypoint 리스트가 시작하기 전에 G, U 로 시작하는 헤더가 존재한다.
  • 각 열에서 컬럼 값을 구분하는 구분자는 space 이다.
  • w 열을 제외 하고는 첫 문자 다음에는 두개의 구분자가 있다.
  • 열 구분자는 \r\n 이다.
차이점
  • 헤더에 U 가 있는 파일은 좌표체계를 UTM 방식을, 그렇지 않은 파일은 WGS84 방식을 쓰는 듯 하다.
  • UTM방식을 쓰는 파일은 waypoint레코드에서 wapoint 이름 다음에 A 라는 값이 있고, WGS84에서는 52S 가 있는데 아마도 이는 우리나라가 속한 지역은 52번째 섹터라서 그런듯...
  • WGS84방식을 쓰는 파일은 좌표값뒤에 이상한 문자가 들어가 있는데, 값을 일정길이로 맞추려고 padding을 추가하면서 그런것 같다. 파싱할때 숫자가 아닌 값은 무시하도록 해야겠다.
구글맵이나 다음맵의 좌표체계는 WGS84 방식이라서 UTM을 쓰는 파일인 경우는 별도의 변환과정이 필요하다. 변환하는 공식도 찾아봤는데 찾다가 지쳤고, CompeGPS에서 변환할수 있는 방법을 찾았기에 WGS84 방식으로 된 파일만 파싱하기로 결정했다.

UTM형식의 파일을 WGS84형식으로 변환하는 방법은 이곳을 참조.




댓글 없음: