Является ли высота GPS на Android неверной из-за того, что она не включает высоту геоида?

Я тестирую приложение для Android, которое записывает местоположение (широта/долгота/высота). ). Я запускаю приложение на телефоне Samsung GTS5830 под управлением Android 2.2.1

. Я читал здесь и там, что высота GPS часто неверна из-за того, что земля не имеет идеальной сферической формы. В моем местонахождении, например, высота геоидасоставляет 52 метра.

Насколько я понимаю, эта высота будет вычтена из «чистой» высоты GPS. Это имело бы смысл для моего местоположения, поскольку:

 - altitude from GPS phone: 535 m
 - geoid altitude: 52 m 
 - altitude from phone's GPS minus geoid height: 482m

 - correct atlitude: 478 m 

482 достаточно близко к реальному объекту, чтобы я мог отслеживать высоту во время пеших прогулок

  1. Верна ли вышеприведенная формула высоты GPS за вычетом высоты геоида?
  2. Правильно ли я предполагаю, что андроид не учитывает высоту геоида при возврате высоты по GPS?
  3. Если вышесказанное верно, верно ли это для всех версий Android?

Вот код, который я использую для получения GPS-координат:

public class HelloAndroid extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.d("main", "onCreate");
        setupGps();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    LocationListener locationListener;
    LocationManager lm;

    void setupGps() {
        Log.d("gps", "Setting up GPS...");
        locationListener = new MyLocationListener();
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 5,
                locationListener);

        Log.d("gps",
                "GPS supports altitude: "
                        + lm.getProvider(LocationManager.GPS_PROVIDER)
                                .supportsAltitude());
        Log.d("gps", "Finished setting up GPS.");
    }

    static class MyLocationListener implements LocationListener {

        public void onLocationChanged(Location location) {
            Log.d("gps", "long: " + location.getLongitude() + ", lat: "
                    + location.getLatitude() + ", alt: "
                    + location.getAltitude());
        }
    }
}

5
задан 26 June 2012 в 09:40
поделиться