1

GIS (WGS84) を使用して Java でシミュレーションを実装しています。エージェントを互いにシフトさせたい。緯度は簡単です1mは1/111000です。しかし、エージェントを経度側に移動したいのですが、地球の曲率を考慮する必要があります (推測します!)。

Wiki で次の式を見つけました。a= (2*pi*r*cos(phi))/360

r  : radius
phi: latitude
a  : should be the distance

距離を に掛けてみまし1/aたが、位置が論理的ではありません!

4

2 に答える 2

0

東に 1Km 移動してから北に 1Km 移動すると、北に 1Km 移動してから東に 1Km 移動する場合とは異なる場所に到達します。

極端な場合 (北極付近の特定の緯度)、東に 1 km 移動すると元の場所に戻ります。

球/楕円体の表面上の位置には適していないため、緯度と経度の「シフト」を分離するという概念は間違っています。

いずれにせよ、特定の緯度での地球の円周を探していて、球体モデルで十分正確である場合は、こちらを参照してください。

于 2012-08-20T15:20:19.327 に答える
0

2 点間の距離を計算することが目標ですか?

私は使うだろう:

d(P1, P2) = ((r · pi)/180)) · cos−1 (cos(a1) · cos(a2) · cos(b1 − b2) + sin(a1) · sin(a2))

ここで、d は距離、r は地球の半径、cos-1 は逆余弦、a1、a2、b1、b2 は 2 つのエージェントの角度です。

垂直距離と水平距離 (l と h) がわかっている場合は、球座標を使用している場合は簡単に計算できb1 = a1 - l/(2*pi*r*cos(angleFromEquator)*360)ます。a2 = h/(2*pi*r*360) + b2

赤道 (緯度 = 0) にいて、東に 1.000 km シフトすると、( 1.000 km / 40.000 km ) * 360° = 9° さらに東になります。

緯度 45° では、 ( 1.000 km / 28.000 km ) * 360° = 12.8° になります。

于 2012-07-30T14:44:24.207 に答える