Est Android GPS altitude incorrecte en raison de ne pas y compris la hauteur du géoïde?

Je teste une application Android qui enregistre la position (lat/long/alt). Je suis de l'exécution de l'application sur un Samsung GTS5830 téléphone fonctionnant sous Android 2.2.1

J'ai lu ici et là que l'altitude GPS est souvent incorrect en raison de la terre n'étant pas parfaitement sphérique. À mon emplacement, par exemple, le géoïde est la hauteur est de 52 mètres.

Ma compréhension est que cette hauteur serait soustraite à partir d'une "pureté" de l'altitude GPS. Ce serait bon pour mon emplacement:

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

 - correct atlitude: 478 m 

482 est assez proche de la vraie chose pour moi à l'altitude de piste lors d'une randonnée

  1. Est la formule ci-dessus de la GPS de la hauteur, moins le géoïde est la hauteur correcte?
  2. Ai-je raison de supposer que android n'est pas en tenant compte de la hauteur du géoïde lors du retour de l'altitude GPS?
  3. Si ce qui précède est vrai, tient-il pour toutes les versions d'Android?

Voici le code que j'utilise pour obtenir les coordonnées 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());
        }
    }
}
InformationsquelleAutor | 2012-06-23