8

私は以下を利用できます:

  • 最後に報告された緯度、タイムスタンプ付きの経度
  • ターゲット緯度、経度
  • 目標とする推定時間
  • 見出し

時間の経過とともに推定位置を補間するにはどうすればよいですか?

残りの旅行に必要な平均速度を計算するには、これで十分です。直線距離を考えると、それはかなり些細なことです。私はそれがベクトルに関係していることを知っていますが、私は少し錆びていて、何人かの専門家に相談する方が良いと思いました。

この更新レートが必要な理由は限られているため、スムーズなアニメーションを表示するには、更新間の現在の位置を推測する必要があります。

ターゲットプラットフォームはGoogleマップアプリケーションであるため、2つの座標間の距離の地理補正機能などの基本的な機能を利用できます。私は多くのことを知っているので、言語は重要ではなく、必要に応じて任意の例を移植または適合させることができます。ただし、一般的なソリューションが推奨されます。


これは単に2つの独立したベクトル計算ですか?

緯度推定=緯度開始+(Δ緯度* P)
lon推定値=lonstart +Δlon * P)

どこ:
   t推定=ターゲットまでの報告された推定時間
   t経過=前回の見積もりからの時間
   P=t経過/t推定
   Δlat = latレポート-latターゲット
   Δlon = lonレポート-lonターゲット
4

2 に答える 2

15

Slerp、または球面線形補間を使用する必要があります。

緯度と経度を単位3のベクトルに変換します。

p=(x,y,z)=(cos(lon)*cos(lat), sin(lon)*cos(lat), sin(lat))

次に、「Slerp」は、単位球の表面に沿った一定速度の補間を提供します。

theta= angle between 3-vectors p0 and p1 (e.g., cos(theta)= p0.p1)
Slerp(p0,p1,t)= ( p0*sin((1-t)*theta) + p1*sin(t*theta) ) / sin(theta)

シータが0度または180度に非常に近い場合、この式は数値的に不安定になる可能性があることに注意してください。小角度の場合、線形補間にフォールバックできます。180度の場合、パスは本当にあいまいです。

于 2009-11-16T10:45:37.853 に答える
9
Lat_to_Travel  = CurLat - TargetLat
Long_to_Travel = CurLong - TargetLong
Time_to_Travel = ETA - now

距離が比較的小さい場合は、これらの 3 つの次元(*)で直線的な進行を仮定しても問題ないでしょう。次に、表示する中間位置の数 (10 など) を決定し、それに応じて各中間点を計算する必要があります。

NbOfIntermediates       = 10  // for example    
Lat_at_Intermediate(n)  = CurLat + (1/NbOfIntermediates * Lat_to_travel)
Long_at_Intermediate(n) = CurLong + (1/NbOfIntermediates * Long_to_travel)
Time_at_Intermediate(n) = now + (1/NbOfIntermediates * Time_to_travel)

この中で最も複雑なのは、ユニットを正常に保つことです。

( * )直線的な進行を仮定してもよいかどうかについてのいくつかの考慮事項...
明らかに、物理的要素(海流、風、可視性...)の現実の詳細は、この問題では地理的要素よりも重要かもしれません。空間数学。
車両が直線的に一定の速度で移動すると仮定すると、[一般に]緯度次元で線形性を仮定しても問題ありません。[技術的に言えば、地球は厳密には球体ではありません。これは完全に真実ではありませんが、非常に近いです]。ただし、緯度の比較的大きな変化を含むより長い距離では、経度次元に沿った角度の進行は線形ではありません。この理由は、赤道から遠ざかるにつれて、直線マイル (またはキロメートル...) で表される経度が減少するためです。次の表は、さまざまな緯度の場所でのこの効果の大まかなアイデアを示しています。

緯度 度の長さ おおよその例
           (経度の)で
           海里

0 60 クアラルンプール、ボゴタ、ナイロビ
20 56.5 メキシコシティ、メッカ、ムンバイ、リオデジャネイロ
45 42.5 ジュネーブ、ボストン、シアトル、北京、ウェリントン (NZ)
60 30 Oslo, Stockholm, Anchorage AK, サンクトペテルブルク ロシア         

特定の緯度についてこれを計算するには、この便利なオンライン計算機を参照してください。
これを理解するもう 1 つの方法は、フロリダ州ジャクソンビルまたはカリフォルニア州サンディエゴの緯度で真東 (または西) に移動すると、1 度の経度をカバーするのに 52 マイルかかることを確認することです。モントリオールまたはシアトルの緯度では、わずか 40 マイルしかかかりません。

于 2009-11-15T22:20:32.940 に答える