[GIS] BlackPoint, 모바일 GIS 엔진, 블랙포인트의 GPS 연동 기능

안드로이드 기반의 GIS 엔진인 블랙포인트의 GPS 연동 기능입니다. 사무실에서 창가에 모바일 기기를 위치해 놓고 캡춰한 화면입니다.

아이폰이라면 기본적인 기기자체의 화면 캡춰 기능으로 외부에서 테스트해 볼 수 있겠지만.. 이 안드로이드는 USB로 붙여 놔야 화면 캡춰가 가능한 관계로 사무실 안에서 테스트 해봅니다.

사용자 삽입 이미지
투명한 초록색이 오차 범위를 나타냅니다. 그리고 노란색 조막만한 애가 GPS가 보내는 위치입니다. 배경 지도는 강남쪽 일부에 대한 건물과 도로 SHP 파일을 올려 놓은 것이구요.

사무실이라 그런지.. 오차가.. 위의 캡춰한 이미지를 기준으로 30m 정도나네요.. 이건 좀 예외적인건데.. 실내에서 아무리 창가라고 해도 상당한 오차가 납니다. 근데 실외로 나가도 이 정도 오차는 납니다. 휴대용 GPS 오차가 있을테고.. 지도 자체의 좌표변환 오차가 있을테고 말입니다.

무척 오래전에 GPS Logger를 구입해 볼까했던 적이 있었습니다. 그때는 스마트폰이 활성화 되기 이전인데.. 가격이 싸게는 몇만에서 십만원 정도 했더랬습니다. GPS Logger는 내가 그날 하루 움직인 경로에 대한 좌표를 단순히 기록만 해주는 장치인데.. 이 기록을 USB에 연결해 파일로 받아 볼 수 있는 매우 단순한 기기입니다. 뭐…. 시간이 흘러서.. 이런 GPS Logger는 이제 돈주고 살필요가 없겠군요. 언제 기회가 닿으면 블랙포인트 솔루션으로 이 GPS Logger를 만들어 봐야겠습니다..

[Android] GPS 기능 관련 API 예제

모바일이 이미 충분히 대중화되었음으로 해서.. GIS 분야 중 하나인 LBS(Location Based System; 위치 기반 시스템)을 활용할 수 다양한 앱이 꽃을 피울 기회를 맞이 한지 이미 꽤 오래되었습니다.

이에 안드로이드가 탑재된 모바일 기기의 GPS를 통해 현재 자신의 위치를 얻을 수 있는 안드로이드 API를 활용하는 샘플 코드를 공유해 봅니다. 아래는 샘플 코드에 대한 스크린 샷입니다.

사용자 삽입 이미지
위치(WGS84 타원체에 대한 경위도)는 물론이고 현재 이동 속도과 위치 정확도(휴대용 GPS의 경우 최고의 정확도 오차는 10m로 제한됨) 등을 얻어와 화면에 표시하고 있습니다. 또한 GPS의 원체 데이터 형식인 NMEA0183을 표시하고 있습니다.

GPS에게 위치데이터 힌트를 제공하는 인공위성의 수 역시 제공하고 있는데요. 이 인공위성의 수는 NMEA0183 데이터로부터 얻어올 수 있습니다. 긴 설명보다는 실제 실행 가능한 예제 코드 샘플을 공유합니다.

인터넷 상에서 공유되고 있는 다양한 소스를 취합하여 이 하나의 예제 샘플을 제작했습니다. 안드로이드에서 GPS로부터 위치 데이터 등을 취득하고자 하시는 개발자 분들에게 조금이라도 도움이 되시길 바랍니다.

GPS로부터 수신받은 좌표(WGS84 타원체의 경위도 좌표)를 다른 좌표계로 변환하기 위한 방법은 다음 URL을 통해 살펴보시기 바랍니다.