Android 단말의 위치 데이터 활용 – 기본 개념 및 GPS 위치 제공자의 특성

October 7, 2024 서윤화 조회수 2,973

이 글에서는 Android 기반 단말에서 얻을 수 있는 위치 데이터에 대한 기본적인 사항, GPS(GNSS) 위치 제공자(Location Provider)의 특징, GPS로 구한 위치를 사용할 때 고려해야 할 점 등을 설명합니다.

들어가며

위치 기반 서비스(Location Based Service)의 중요성은 더해가고 있지만 위치 서비스 개발에 필요한 정보로서 단순한 API 또는 샘플 코드 정도만 한국어 문서로 제공되어 아쉬운 생각이 듭니다. 이 글에서는 위치 데이터 활용 서비스를 기획/개발하기 전에 필수적으로 알아야 하는 값들의 정의와 GPS 위치 제공자(GPS Location Provider)의 특성을 살펴보고자 합니다.

Android에서 제공하는 위치 데이터

2차원 지도 상의 위도와 경도로 표시되는 지점을 본인의 현재 위치라고 생각하는 경우가 많지만, AOSP(Android Open Source Project)의 Location 클래스에서는 위치 관련하여 이보다 더 많은 정보를 제공합니다.

 

 

그림 1. Android Developers에서 제공하는 Location 클래스의 메서드와 그 설명


각 메서드는 위도(Latitude), 경도(Longitude), 정확도(Accuracy), 고도(Altitude), 위치 제공자(Location Provider) 값을 반환합니다. 위도와 경도는 지구의 위치 좌표를 나타냅니다. 고도를 추가하면 위치가 3차원 공간으로 확장되는데 고도 데이터는 위치 제공자에 따라 포함되지 않을 수도 있습니다. 일반적으로 고도 데이터는 GPS로 구한 위치에는 포함되지만 Network Location Provider(이하 NLP)로 구한 위치에는 포함되지 않습니다. 위치 제공자는 위치를 구하는 방식 혹은 모듈을 말합니다. 위치 제공자에는 대표적으로 GPS Provider와 NLP(Network Location Provider)가 있으며, 각각 GPS 위성 신호와 주변 Wi-Fi 또는 셀룰러 네트워크 신호로 위치를 추정합니다. 이외에도 여러 센서 데이터 등을 결합하여 위치를 추론하는 통합 위치 제공자(Fused Location Provider)와 같은 위치 제공자도 존재합니다.


GPS가 GNSS보다 일반적으로 더 친숙하기 때문에 이 글에서는 GNSS 대신 GPS로 표기하고 있습니다. 하지만 엄밀히 정의하자면 지구 궤도에 위성을 배치하고 그 위성 신호를 토대로 지구 상의 사용자가 어디에 위치해 있는지를 추론할 수 있도록 하는 시스템을 지칭하는 것은 GNSS(Global Navigation Satellite System)이며, GPS는 GNSS의 한 종류입니다. 따라서 GPS Location Provider가 아닌 GNSS Location Provider가 더 정확한 표기라고 할 수 있겠죠. GPS는 1978년 미국에서 군사용으로 사용하던 위성과 시스템을 민간에서 사용할 수 있도록 공개한 것이며, 이외에도 러시아의 GLONASS, 유럽의 Galileo, 중국의 Beidou, 일본의 QZSS, 인도의 NavlC, 한국에서 개발 중인 KPS와 같은 시스템이 있습니다.

위치 정확도(Accuracy)의 정의

일반적으로 위치 제공자 중 GPS 제공자로부터 받은 위치가 가장 믿을 수 있고 정확한 것으로 알려져 있습니다. 환경적 조건이 잘 갖추어진 경우 Samsung 모바일 단말에서 GPS로 구한 위치는 10m 이내의 정확도 값을 갖습니다. Google의 NLP 솔루션을 사용할 경우 최적의 환경 조건에서 대략 20m 내외, 일반적으로 100m 이내의 정확도를 갖습니다. 하지만 근처에 Wi-Fi AP 등이 없고 통신사 기지국만 존재하는 경우 국내에서는 약 2km의 정확도를 가지며, 기지국이 매우 드문 해외에서는 10km 이상의 정확도를 갖기도 합니다.

위와 같은 사실을 종합해보면 흔히 2차원 지도 상의 점으로 인식되는 위치는 단순한 점이 아니라 2차원의 원 또는 3차원의 구에 더 가깝다는 것을 알 수 있습니다. 그럼 위/경도 좌표에 찍힌 점과 정확도 반경으로 구성되는 도형으로서 위치 데이터의 정확한 정의를 알아보도록 하겠습니다.


 

그림 2. 정확도(Accuracy)까지 고려할 때 완전히 달라지는 위치 데이터


정확도 값을 해석하기 위해서는 확률 분포 그래프에 대한 지식이 약간 필요합니다. 정규분포 그래프가 있을 때 중심에서의 표준편차(시그마)에 대해 들어보셨을 텐데요. 정규분포 그래프라면 관측값 하나가 중심점에서 -1~1 시그마 범위에 해당할 확률은 약 68%이며, 2 시그마 범위에 해당할 확률은 약 95%, 3 시그마 범위에 해당할 확률은 약 99.7%가 되는 규칙을 68-95-99.7 규칙(rule)이라고 합니다.[1]


 

그림 3. 정규 분포 그래프의 1, 2, 3 시그마 범위[1]


Samsung 모바일 단말에서 GPS 제공자로 구하는 위치 범위(위/경도를 중심으로 하고 정확도 값을 반지름으로 사용)에 모바일 기기가 실제로 존재할 확률은 일반적으로 90% 이상이며, 다른 위치 제공자들이 보장하는 확률은 위치 제공자마다 달라질 수 있습니다. 위치가 정확할수록 이 확률 범위는 작아지며(Accuracy 값 감소), 위치가 부정확할수록 이 확률 범위는 커집니다(Accuracy 값 증가). 


 

그림 4. 위치 데이터의 구체적 의미


 

그림 5. 정확한 위치(위)와 부정확한 위치(아래)


실제 위치 서비스를 개발할 때는 정확도라는 값의 의미만 대략적으로 이해하면 되며 구체적인 확률 분포나 그 값들까지는 필요 없을 수 있습니다. 특정 범위 내에 기기가 존재할 확률이 아무리 높다고 하더라도 이후에 설명할 환경적 요인 때문에 정확도뿐 아니라 위치 데이터 자체를 신뢰할 수 없는 경우가 종종 발생하기 때문입니다. 

위/경도 좌표에서 행정 주소 구하기

여담으로, 이 분야를 완전히 처음 접해본 사람 혹은 일반인은 위치 데이터와 주소 데이터를 혼동하는 경우가 있습니다. 위치 제공자로부터 제공받는 위/경도는 일종의 raw data로 볼 수 있으며, 이것을 각 나라의 시스템에 맞는 행정 주소로 변환해 주는 서비스를 Geocode 서비스라고 합니다. Google 및 우리나라 국토교통부 등에서도 지오코더 API를 제공하고 있습니다. 


 

그림 6. 국토교통부에서 제공하는 지오코더 API (공공데이터포털) [2]

GPS 위치 제공자의 특성

GPS 기반으로 위치를 구하기 위해서는 지구 궤도에 위치한 GPS 위성 신호가 필요합니다. 그리고 일반적으로 좋은 환경적 조건이 갖추어진 상황에서 이는 모바일 기기에서 얻을 수 있는 가장 정확한 위치 정보입니다. 하지만 GPS 신호를 직접 받아야 하므로 실내에서는 정상적인 동작을 기대하기 어렵습니다. 구축 아파트의 벽 내부 또는 큰 유리창이 있는 창가에서 약한 GPS 신호가 잡히는 경우가 있지만, 신호의 세기가 약할수록 위치 정확도와 그 신뢰도 또한 떨어집니다. 양호할 때는 10m 내외의 정확도(Samsung 스마트폰 기준) 값을 보장합니다. 그러나 100m 가량의 정확도 값을 갖기도 하며, 이러한 경우 신뢰할 수 없는 위치로 판단하고 그 위치 데이터를 가급적 사용하지 않는 것이 좋습니다. 

실외의 경우 수분이 많은 숲속에서는 GPS 신호가 잘 전달되지 않는다고 알려져 있으며, 도심의 경우 고층 빌딩이 가장 큰 문제가 됩니다. 고층 빌딩 자체가 위성 신호를 막을(Blocking) 뿐만 아니라 고층 빌딩 유리창에 GPS 신호가 반사되어 신호의 정확도를 떨어트리는 Multipath 효과가 발생하기 때문입니다.


 

그림 7. GPS 신호 막힘(Block)과 Multipath 효과


위와 같은 이유로 GPS로부터 구한 위치를 사용할 때는 보이는 위성 개수와 그 신호 세기 등의 정보를 바탕으로 사용 가능 여부를 판단할 수 있습니다. 단말의 특성과 위치 활용 목적에 따라 달라질 수 있겠지만, 당사에서 실외 GPS 신호를 판단하는 기준은 신호 세기가 35bB 이상인 위성이 6개 이상인 경우입니다. 그리고 이러한 상황에서 구한 GPS 위치의 정확도는 믿을 만하다고 판단하고 있습니다.


 

그림 8. 당사의 실외 GPS 신호 판단 기준


간혹 측위 시점에 위성의 배치가 고르게 퍼져있지 않고 특정 방향에 편중될 경우 정확도가 떨어질 수 있습니다. 하지만 이런 현상보다는 위에 열거된 원인(Blocking 혹은 Multipath 등)이 GPS 성능 저하에 훨씬 더 큰 영향을 줍니다. 

지도 앱의 Heading



그림 9. 지도 앱의 Heading


참고로, 지도 앱에서 위치를 표기할 때 모바일 기기가 이동 중이라면 사용자가 어느 방향을 향하고 있는지(Heading)를 함께 나타내기도 합니다. 이 정보는 크게 두 가지 방법으로 구할 수 있습니다. 최근 두 위치 간의 차이를 이용하여 방향을 구하는 방법과 움직이면서 GPS 신호를 수신할 때 발생하는 도플러 효과를 이용하는 방법입니다. 위치 기반 방법의 경우 두 위치 간 차이가 매우 작으면 오차가 커질 수 있으며, 도플러 효과를 이용하는 방법의 경우 수신되는 GPS 신호 변화에 민감하게 반응할 수 있습니다. 따라서 사용자에게 Heading 정보를 안정적으로 제공하려면 지자기 센서와 같은 내부 센서(Internal Sensor) 값을 함께 사용하는 것이 필수적입니다. 국내외에서 서비스하는 대부분 앱의 지도 모드에서는 GPS Heading이 아닌 지자기 센서와 같은 내부 센서를 활용한 Heading을 제공하고 있습니다.

마무리하며

지금까지 Android 플랫폼에서 제공하고 있는 위치 정확도와 위치 제공자에 대한 기본 개념을 살펴보았습니다. 위도와 경도가 비슷하더라도 위치에 따른 정확도는 크게 다를 수 있습니다. 특히 GPS는 높은 정확도를 자랑하지만 위성 신호 수신이 필요한 특성상 실내 또는 건물 밀집 지역 등에서는 사용하는 데 제한이 있을 수 있습니다. 이 글에서는 GPS(GNSS) 위치 제공자에 초점을 맞추었으며, 다음 포스팅에는 NLP(Network Location Provider)에 대해 알아볼 예정입니다. 

감사합니다.




저자

서윤화

Sensor개발그룹(MX)

이메일 문의하기