0

Cohen の Windows phone GPS Emulator を使用して、自分で速度を計算しようとしています。

  void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
  {
    DateTime curTime       = DateTime.Now;
    double curDistance     = e.Position.Location.GetDistanceTo(lastKnownPosition);
    TimeSpan curTimeOffset = curTime - lastRecvTime;
    double curSpeed        = curDistance / curTimeOffset.TotalSeconds; 

LastKnownPosition が最後の GeoCoordinate を表す場合、lastRecvTime についても同じです。ここでの問題は、curSpeed に関して不安定な結果が得られることです。速度が 10m/s の場合もあれば、20m/s にジャンプする場合もあります。

ここで何が間違っていますか?

4

1 に答える 1

0

GPS の精度には限界があります。1 秒あたり 20 回の修正を取得して移動する場合、たとえば 10m/s よりも 2 つの修正の間の位置の差は約 0.5m であり、これは通常 (ハードウェア、衛星への見通し線、および GPS で使用できる衛星の数によって異なります) GPSの精度以下。

数秒ごとに修正を使用するか、修正のキューを保持して (キューを効率的に実装するために円形配列を使用できます)、平均速度を使用してください。両方の組み合わせをお勧めします。

于 2012-02-06T09:56:26.473 に答える