6

場所 (lat/long/alt) を記録する Android アプリをテストしています。Android 2.2.1 を実行している Samsung GTS5830 電話でアプリを実行しています

地球が完全な球体ではないため、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());
        }
    }
}
4

3 に答える 3

7

3 つの質問すべてに対する答えはイエスです。

GPS から得られる高度は、WGS84 楕円体からの高さ (メートル単位) であり、地表の近似値です。私はそれを使用する Android ソフトウェアを開発してきたので、それを知っています。

数値を平均海面からの高さ、または通常知られている高度に変換するには、補正を適用する必要があります。これは、高度計が実際に気圧を測定するため、平均海面での現在の気圧に設定された高度計によって報告される高度とは異なる場合があることに注意してください。ただし、気圧は単に高さの関数ではありません。これは空気密度と温度の関数でもあるため、高度計は近似値を示します。この影響は GPS では見られません。

地球重力モデル 2008 (EGM2008) は、経度と緯度の関数として楕円体を使用して平均海面の差をマッピングします。詳細はこちら:

http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008/egm08_wgs84.html

EGM96 と呼ばれる、より少ないデータを使用する精度の低いモデルも利用できます。これらの両方を Google で理解してください。

于 2012-07-16T12:05:52.920 に答える
5

それほど単純ではありませんAndroid API。 が変更されたか、バグがあるかのどちらかです。「汎用」電話 ( Android 2.3.6) とNexus 7( ) の 2 つの Android デバイスがありAndroid 4.xます。

電話でgetAltitude()は、実際の高度と一致する回答が返されますAMSL(つまり、 に補正されgeoidます)。ではNexus 7、返される高度は未修正です。のドキュメントでは、APIどちらが返されるかは指定されていません。したがって、ある意味では、どちらも「正しい」ものです。

どちらのデバイスも適切に機能しているようですGPS modules$GPGGA NMEAメッセージには、正しい高度とジオイド補正の両方が示されています。そのため、正しい高度を取得するにはメッセージを自分で解析する必要があるように見え、そのgetAltitude()方法は信頼できません。

于 2012-10-08T15:16:36.150 に答える
4

高度の誤差は、GPS とジオイド高度の分離によるものではない可能性があります。

GPS 受信機から返される高度値は、常に最も精度の低い値です。私のオフィス ビルが -200 ~ +750 メートルの高度で移動しているという報告をよく目にします。根本的な理由の 1 つは、衛星を高度方向に均等に分散させることができないことです。それらは常にあなたの上にあり、低い高度で空が遮られている場合、それらはあなたの上の円錐形に配置されます. X 方向と Y 方向には常に、空がよく見えると仮定すると、衛星が左右に広がっています。受信機の前後。この広がりにより、位置解の精度が向上します。

于 2012-06-25T07:29:13.227 に答える