[안드로이드] GPS로부터 자북 방향 얻기 전산질

안드로이드 GPS로 수신한 좌표로부터 자북(Magnetic North) 방향 얻기

  1. GPS로부터 수신한 위치정보(android.location.Location)의 방향(bearing)은 진북(True North)입니다.
  2. android.hardware.GeomagneticField 클래스를 사용하면 현재 위치의 편각(declination)을 구할 수 있습니다.
  3. GPS 위치정보의 방향(bearing)에서 편각(declination) 값을 빼 주면 자북 기준의 방향을 얻을 수 있습니다.


public static float getMagneticDirection( double latitude,
                                          double longitude,
                                          double altitudeMetre,
                                          float direction )
{
    GeomagneticField geomagnetic = new GeomagneticField(
        Double.valueOf( latitude ).floatValue(),
        Double.valueOf( longitude ).floatValue(),
        Double.valueOf( altitudeMetre ).floatValue(),
        System.currentTimeMillis() );

    return direction - geomagnetic.getDeclination();
}


안드로이드의 GeomagneticField 클래스는 API Level 3에서 추가되었으며, 미국의 NGA(National Geospatial-Intelligence Agency)에서 제공하는 World Magnetic Model을 사용합니다. 

현재 안드로이드 시스템에 적용되어 있는 World Magnetic Model은 WMM2010입니다. 이에 대한 자세한 정보는 http://www.ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml 에서 얻을 수 있습니다.

2014년 1월 15일 현재 최신 버전은 WMM2010이고 이는 2015년까지 유효합니다. 그리고 2015년 이후로도 몇년간은 쓸만한 신뢰도의 값을 계산해 줄 것입니다.

아마 앞으로 안드로이드의 새로운 버전이 나올 때 World Magnetic Model의 최신 버전이 탑재될 것이라고 합니다.

덧글

댓글 입력 영역


통계 위젯 (블랙)

00
5
53827

이 이글루를 링크한 사람 (블랙)

11