5

Lat、Lon、Alt 値から ECEF (Earth-Centered) のような 3D システムへの変換について疑問に思っています。

これは次のように実装できます ( https://gist.github.com/1536054 ):

/*
 * WGS84 ellipsoid constants Radius
 */
private static final double a = 6378137;
/*
 * eccentricity
 */
private static final double e = 8.1819190842622e-2;

private static final double asq = Math.pow(a, 2);
private static final double esq = Math.pow(e, 2);

void convert(latitude,longitude,altitude){
   double lat = Math.toRadians(latitude);
   double lon = Math.toRadians(longitude);
   double alt = altitude;

   double N = a / Math.sqrt(1 - esq * Math.pow(Math.sin(lat), 2));

   x = (N + alt) * Math.cos(lat) * Math.cos(lon);
   y = (N + alt) * Math.cos(lat) * Math.sin(lon);
   z = ((1 - esq) * N + alt) * Math.sin(lat);
}

私の意見では非常に奇妙に思えるのは、高度のわずかな変化が x、y、z に影響を与えるという事実です。たとえば、緯度/経度の値が同じで高度の値が異なる 2 つの GPS ポイントがある場合、3 つの異なる x、y、z 座標が得られます。

誰かがこの背後にある「アイデア」を説明できますか? これは私には非常に興味深く見えます...高度の値を下げたり上げたりすると、値の1つだけが変化する他の3Dシステムはありますか?

どうもありがとう!

4

1 に答える 1

3

この写真を見ると: ECEF 座標系

その理由がわかります。ECEF は、地球の中心を中心とする、地球の周りの立方体です。高度が上がる場合は、移動します。緯度/経度は、緯度、経度が角度である「角度」座標系であり、ECEF はcartesian座標系です!

ECEF は LatLon のようなもので、中心地球の高度が 0 だと思われるかもしれませんが、そうではありません。

于 2013-05-17T16:50:12.230 に答える